Другой ответ и комментарии описывают, как получить синонимы, но я думаю, что вы хотите большего, чем это?
Я могу предложить два широких подхода: 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) по размеру словаря.Таким образом, вы можете сделать это в автономном режиме и создать свой собственный словарь синонимов и аналогичных слов для каждого интересующего вас слова.