-
20-08-2010 22:13 #1Junior Member
- Zarejestrowany
- Aug 2010
- Postów
- 2
Wyszukiwanie podobnych wpisów
Witam wszystkich
poszukuję najlepszego (najszybszego) rozwiązania takiego tematu: muszę zablokować możliwość dodawania do bazy wpisów bardzo podobnych do już istniejących czyli np. jakieś dwa wyrazy zamienione miejscami, dodane/usunięte kropki, przecinki itd. Chodzi oczywiście o maksymalne ograniczenie spamowania wpisami. Szukałem trochę i najbardziej przemawia do mnie odległość Levenshteina a z drugiej strony gdzieś wyczytałem że nie jest to najbardziej wydajna metoda przy dłuższych stringach.
W przypadku danych na których ma operować funkcja średnia długość wpisu to około 300 znaków i w tej chwili jest około 10k takich wpisów a liczba ta dosyć szybko rośnie.
Co możecie doradzić? Może ktoś przerabiał taki temat i podpowie
-
30-08-2010 10:47 #2hashedoneGuest
Odp: Wyszukiwanie podobnych wpisów
Nie istnieje na to ani skuteczny, ani wydajny sposób. Odległość Lavensteina nie zda egzaminu, przykład "białe drzwi" i "drzwi białe"- odległość będzie bardzo duża (po szybkim oszacowaniu 8 przy długości tekstu 11), poza tym, aby coś takiego zastosować musiał byś za każdym razem wykonać "SELECT text FROM table" i pracować na wszystkich (10k!) rekordach bazy. Ewentualnym sensownym wyjściem może być szybka analiza tekstu pod kątem słów kluczowych - najczęściej występujących w tekście. Takich słów było by 1-5, i wykonywał byś do pięciu zapytań postaci:
SELECT text FROM table WHERE keywords LIKE %key%
gdzie key to były by kolejne słowa kluczowe dla danego tekstu. Potem można by analizować zwrócone wyniki (pracował byś na zdecydowanie mniejszym zbiorze wyników niż 10k). Dodatkowo mógłbyś ograniczyć wyszukiwanie tylko do danego wątku (w przypadku forów) czy tekstu (jeśli to blog/strona z artykułami). Jednocześnie aby system sensownie działał musisz zadbać o to, żeby niektóre słowa (np. partykuły) nie mogły zostać uznane za kluczowe. Ostatecznie tak zebrane wyniki możesz przeanalizować mniej więcej w taki sposób:
1. Dzielisz tekst na zdania
2. Wyszukujesz orzeczenia i podmiotu
3. Pozostałe wyrazy opisują orzeczenie i podmiot - najlepiej wyłuskać stąd tylko przymiotniki i przysłówki
4. Jeśli w zdaniach pokrywa się orzeczenie i podmiot, oraz przymiotniki i przysłówki nie są bardzo różne, to zdanie jest trudne.
Problemy:
- Język polski jest bardzo trudny do analizy (ogromna liczba odmian) - rozróżnienie części mowy i zdania jest zadaniem na który bym się nie rzucił
- Rozwiązanie będzie zapewne złożone obliczeniowo
- Czeka mnóstwo testowania
Niestety przedstawione przeze mnie rozwiązanie jest bardzo trudne i nie widzę szans na realizację go samemu bez ogromnej wiedzy, jednak na prawdę nie widzę dokładnie żadnego innego rozwiązania.
Pozdrawiam
-
30-08-2010 22:40 #3Junior Member
- Zarejestrowany
- Aug 2010
- Postów
- 2
Odp: Wyszukiwanie podobnych wpisów
Dziękuję za szczegółową odpowiedź ... teraz muszę się przez to przegryźć. Staram się cały czas to jakoś sensownie ugryźć ale im dłużej nad tym siedzę tym więcej kłód pod nogi. Ogólnie nie jest to forum czy blog tylko portal z drobnymi ogłoszeniami. Temat ciężki... ogólnie zdarza się sporo krótkich wpisów w stylu "pilnie sprzedam [i 3 słowa o przedmiocie]". Odrzucając słowa takie jak pilnie, sprzedam w sporej części przypadków kończyło by się na niesłusznym uniemożliwieniu dodania ogłoszenia przez osoby które faktycznie chcą coś sprzedać. Zacznę kombinować z innymi metodami niż porównywanie tekstu bo coraz mocniej utwierdzam się w przekonaniu że nie zda to w tym przypadku egzaminu.
Ostatnio edytowane przez commar ; 05-09-2010 o 10:47

LinkBack URL
About LinkBacks



Odpowiedź z Cytatem

Bookmarks