2013-02-13 13 views
7

Python udostępnia bibliotekę NLTK, która jest ogromnym zasobem tekstu i korpusu, a także mnóstwem metod wyszukiwania i przetwarzania tekstu. Czy istnieje sposób, w jaki możemy porównywać zdania w oparciu o znaczenie, które przekazują dla możliwego dopasowania? To znaczy, inteligentny system dopasowywania zdań?Porównywanie zdań zgodnie z ich znaczeniem

Na przykład zdanie jak giggling at bad jokes i I like to laugh myself silly at poor jokes. Oba przekazują to samo znaczenie, ale zdania nie pasują do siebie (słowa są różne, Levenstein Distance źle by się nie powiodło!).

Teraz wyobraźmy sobie, że mamy API, które eksponuje funkcjonalność taką jak znaleziona here. Opierając się na tym, mamy mechanizmy pozwalające stwierdzić, że słowa "pasują" w znaczeniu, które przekazują. Bad nie będzie pasował do poor, więc może trzeba dodać kolejne warstwy (jak odpowiadają one w kontekście takich słów jak joke, ponieważ bad joke jest generalnie taka sama jak poor joke, chociaż bad person to nie to samo co poor person!).

Głównym wyzwaniem byłoby odrzucenie rzeczy, które nie zmieniają znaczenia zdania. Tak, algorytm powinien zwrócić ten sam stopień matchness pomiędzy pierwszym zdaniu i to: I like to laugh myself silly at poor jokes, even though they are completely senseless, full of crap and serious chances of heart-attack!

Więc z tym dostępny jest jakiś algorytm jak ten, który został pomyślany jeszcze? Czy muszę wymyślić koło?

+0

Zajrzałem do tego kilka tygodni temu. Nie jestem ekspertem od NLTK, ale myślę, że będziesz musiał wymyślić koło lub znaleźć dopasowanie rozmyte, które zostało zbudowane na bazie NLTK. Nie mogłem znaleźć rozwiązania, ale podejrzewam, że coś tam jest. Szukałem możliwości automatycznej klasyfikacji odpowiedzi tekstowych w dowolnym formularzu, aby przejrzeć pytania do testu. Publikuj aktualizację, jeśli coś znajdziesz. – jimhark

+0

Pewnie. Zrobi to. Myślałem o jakimś opartym na wykresie algo, czy byłoby to równe robieniu tego? – SexyBeast

+0

Faceci, zanim entuzjastycznie padną lub głosują za zamknięciem, dajcie przynajmniej wyjaśnienie. Tylko dlatego, że jest anonimowy i każdy może zrobić cokolwiek, nie dostaniesz wysokiej ręki. – SexyBeast

Odpowiedz

4

Będziesz potrzebować bardziej zaawansowanego algorytmu modelowania tematycznego i oczywiście korpusów do szkolenia swojego modelu, abyś mógł łatwo obsługiwać synonimy, takie jak śmiech i chichot!

W pythonie możesz wypróbować ten pakiet: http://radimrehurek.com/gensim/ Nigdy go nie używałem, ale zawiera on klasyczne semantyczne przestrzenie wektorowe, takie jak lsa/lsi, losowa projekcja, a nawet lda.

Moim osobistym faworytem jest losowa projekcja, ponieważ jest szybsza i nadal bardzo wydajna (robię to w Javie z inną biblioteką).

Powiązane problemy