Найти похожие / синонимы / контекстные слова Python - PullRequest
0 голосов
/ 26 февраля 2019

Здравствуйте, я ищу решение моей проблемы: Я хочу найти список похожих слов на французском и английском. Например: имя может быть: имя, фамилия, ном, ном, имя пользователя .... Почтовый адрес может быть: город, страна, улица, вилла, платит, кодовый почтовый индекс ....

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Другой ответ и комментарии описывают, как получить синонимы, но я думаю, что вы хотите большего, чем это?

Я могу предложить два широких подхода: WordNet и встраивание слов.

Использованиеnltk и wordnet, вы хотите исследовать смежные узлы графа.См. http://www.nltk.org/howto/wordnet.html для обзора доступных функций.Я бы посоветовал, как только вы нашли свое начальное слово в Wordnet, проследите за всеми его связями, но также перейдите к гиперному и сделайте то же самое там.

Найти начальное слово не всегда легко:http://wordnetweb.princeton.edu/perl/webwn?s=Postal+address&sub=Search+WordNet&o2=&o0=1&o8=1&o1=1&o7=&o5=&o9=&o6=&o3=&o4=&h=

Вместо этого мне кажется, что я должен использовать «адрес»: http://wordnetweb.princeton.edu/perl/webwn?s=address&sub=Search+WordNet&o2=&o0=1&o8=1&o1=1&o7=&o5=&o9=&o6=&o3=&o4=&h=, а затем решить, какой из них является правильным в данном случае.Затем попробуйте щелкнуть гипернимый, гипонимный, сестринский термин и т. Д. Если честно, ни один из них не кажется правильным.

Открыть Многоязычный WordNet пытается связать разные языки.http://compling.hss.ntu.edu.sg/omw/ Таким образом, вы можете взять свой код WordNet на английском языке и перейти с ним на французскую WordNet или наоборот.

Другой подход заключается в использовании встраивания слов.Вы находите, скажем, 300-мерный вектор вашего исходного слова, а затем ищите ближайшие слова в этом векторном пространстве.Это будет возвращать слова, которые используются в сходных контекстах, поэтому они могут иметь сходное значение или сходное синтаксическое значение.

У Spacy хорошая реализация, см. https://spacy.io/usage/spacy-101#vectors-similarity и https://spacy.io/usage/vectors-similarity

Что касается английского и французского, обычно вы работаете на двух языках независимо друг от друга.Но если вы будете искать «многоязычные вложения слов», вы найдете несколько статей и проектов, в которых вектор остается одинаковым для одной и той же концепции на разных языках.

Примечание: API предназначен для того, чтобы сообщать вам, как два словапохоже, не находя похожих слов.Чтобы найти похожие слова, вам нужно взять свой вектор и сравнить с любым другим вектором слов, который равен O (N) по размеру словаря.Таким образом, вы можете сделать это в автономном режиме и создать свой собственный словарь синонимов и аналогичных слов для каждого интересующего вас слова.

0 голосов
/ 26 февраля 2019
from PyDictionary import PyDictionary

dictionary=PyDictionary()
answer = dictionary.synonym(word)

word - это слово, для которого вы находите синонимы.

...