Witamy na Delphi - forum dla programistów, webmasterów i grafików
+ Odpowiedz na ten temat
Pokaż wyniki od 1 do 3 z 3
  1. #1

    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


  2. #2
    hashedone
    Guest

    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

  3. #3

    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


 

Tagi dla tego tematu

Bookmarks

Uprawnienia

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
Do góry

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19