2016-08-16 40 views
5

Mam 2 teksty jak poniżejsyntaktyczna podobieństwo/odległość między 2 zdań/String/tekstu przy użyciu NLTK

Tekst1: John lubi jabłka

Text2: Mike nienawidzi pomarańczę

Jeśli sprawdź powyżej 2 teksty, oba są podobne pod względem składni, ale semantycznie mają inne znaczenie.

Chcę znaleźć

1) składniowe odległość pomiędzy 2 tekstami

2) semantyczna odległość pomiędzy 2 tekstami

Czy istnieje jakiś sposób, aby to zrobić za pomocą NLTK, ponieważ jestem nowicjuszem do NLP ?

Odpowiedz

2

Tak, ale nie ogranicza się do nltk. Jednym ze sposobów, które wykorzystują do składniowej odległości, to część mowy tagging (POS Tagging) odwzorowanych każde słowo kary do konkretnego tagu: https://en.wikipedia.org/wiki/Part-of-speech_tagging

Na przykład to mapa zostanie zdań do nich:
Text1: rzeczownik czasownik rzeczownik
Tekst2: rzeczownik czasownik rzeczownik

Następnie można zmierzyć odległość tych dwóch zdań.


I semantyczny, trzeba semantyczne słowa sieci i znaleźć synonimy dla każdego wyrazu w zdaniu, a następnie spróbować znaleźć punkt przecięcia synonimów słowa w każdym zdaniu

+0

To jest dobra odpowiedź. Być może mógłbyś polecić metody porównań OP dla pierwszego przypadku i konkretnego słowa netto lub zasobu? Jestem pewien, że przyszli czytelnicy również będą zainteresowani – slezica

+0

Thanx @Masoud za wskazanie kierunku, wystarczy kilka pytań, Czy mamy jakąkolwiek wbudowaną bibliotekę, która oblicza SYNTACTIC odległość w nltk? Jeśli nie, to jak zmierzyć odległość dla tego samego? wszelkie referencje/zasoby, które możesz podać? –

3

Dla semantyczny, warto wypróbować word2vec. Możesz bezpiecznie przecenić podobieństwo słów w zdaniu lub możesz wymyślić własny sposób ważenia słów zgodnie z ich składnią.

from gensim.models import Word2Vec 

model = Word2Vec.load(path/to/your/model) 

model.similarity('apple', 'orange') 
+0

Jakieś referencje, które możesz podać dla odległości syntetycznej? Czy mamy wbudowaną obsługę bibliotek? –