7

Oto problem - mam kilka tysięcy małych fragmentów tekstu, od kilku słów do kilku zdań - największy fragment to około 2k na dysku. Chcę móc porównać każde z nich i obliczyć współczynnik pokrewności, aby móc wyświetlać informacje związane z użytkownikami.Jakie są dobre metody na znalezienie "pokrewieństwa" dwóch ciał tekstu?

Jakie są dobre sposoby na zrobienie tego? Czy znane są algorytmy tego działania, czy są jakieś rozwiązania GPL?

Nie potrzebuję tego do uruchomienia w czasie rzeczywistym, ponieważ mogę wstępnie obliczyć wszystko. Bardziej zależy mi na osiągnięciu dobrych wyników niż w środowisku uruchomieniowym.

Po prostu pomyślałem, że zapytam społeczność Stack Overflow, zanim pójdę i piszę własną rzecz. MUSZĄ istnieć ludzie, którzy wcześniej znaleźli dobre rozwiązania.

+1

Bardzo nieokreślone pytanie. Na jakiej podstawie uważasz, że dwa teksty są ze sobą powiązane? Typowe tematy? Powtarzające się zwroty? Długość? Złożoność? Częstotliwość liter? –

Odpowiedz

2

nigdy nie używałem go, ale warto zajrzeć do Levenshtein distance

+0

Działa dobrze w wielu scenariuszach –

+0

Levenshtein podaje odległość edycyjną, a nie różnice semantyczne. – Bob

0

Ten book mogą być istotne.

Edit: Oto związanych SO question

+0

Dziękuję. Information Retrieval jest ogólnym tematem i ta książka prawdopodobnie zawiera w sobie dobre informacje. – Matt

0

Jest to całkiem wykonalne dla uzasadnionych dużych tekstów, ale trudniejsze dla mniejszych tekstów.

Zrobiłem to raz tak, i to działało całkiem dobrze:

  • filtrowania wszystkich "Ogólne" słowa (takie jak a, an, the, in, etc ...) (filtruje około 10-30 % słów)
  • Policz częstotliwości pozostałych słów, zapisz najwyższe x najczęstszych słów, to są twoje tematy.
  • Jako dodatkowy krok możesz utworzyć grupy 2/3/4 kolejnych słów i porównać je z grupami w innych tekstach. Użyłem tego jako miary dla plagializmu.
0

Zobacz uwagi dotyczące kursu Manninga i Raghavana na temat MinHashing i wyszukiwania podobnych przedmiotów oraz C#(?) version. Wierzę, że techniki pochodzą z badań Ullmana i Motwani.

0

fonetyczne algorytmy

W artykule Beyond SoundEx - Functions for Fuzzy Searching in MS SQL Server, pokazuje jak zainstalować i korzystać z biblioteki SimMetrics w SQL Server.Ta biblioteka pozwala znaleźć względne podobieństwo między ciągami i zawiera wiele algorytmów.

Skończyłem głównie używając Jaro Winkler, aby dopasować nazwy. Tutaj jest więcej informacji, gdzie pytałem o pasujące nazwy na SO: Matching records based on Person Name

Kilka algorytmów opartych na Levenshtein Distance są również dostępne w bibliotece SimMetric i prawdopodobnie będą przydatne w aplikacji.

Powiązane problemy