查找 similar/synonyms/context 个单词 Python

Find similar/synonyms/context words Python

您好,我正在寻找解决我的问题的方法: 我想找到一个与法语和英语相似的单词列表 例如 : 名称可以是:名字、姓氏、nom、prénom、用户名.... 邮寄地址可以是:城市、国家/地区、街道、维尔、支付、邮政编码 ....

from PyDictionary import PyDictionary

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

word 是您正在查找同义词的词。

另一个答案和评论描述了如何获取同义词,但我认为您想要的不止于此?

我可以推荐两种广泛的方法: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=

相反,我似乎必须使用 "address": 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= 然后在这里决定哪一个是正确的意思。然后尝试单击上位词、下位词、姊妹词等。 老实说,其中 none 感觉很对。

打开多语言 WordNet 尝试 link 不同的语言。 http://compling.hss.ntu.edu.sg/omw/ 因此,您可以将英语 WordNet 代码转移到法语 WordNet,反之亦然。

另一种方法是使用词嵌入。你找到源词的 300 维向量,然后在该向量中寻找最近的词 space。这将返回在相似上下文中使用的单词,因此它们可能具有相似的含义或相似的句法。

Spacy 有很好的实现,参见 https://spacy.io/usage/spacy-101#vectors-similarity and https://spacy.io/usage/vectors-similarity

关于英语和法语,通常你会独立使用两种语言。但是,如果您搜索 "multilingual word embeddings",您会发现一些论文和项目,其中不同语言的相同概念的向量保持相同。

注意:API 旨在告诉您两个词的相似程度,而不是查找相似词。要找到相似的单词,您需要使用您的向量并与其他所有单词向量进行比较,词汇量的大小为 O(N)。因此,您可能想离线执行此操作,并为每个感兴趣的单词构建您自己的 "synonyms-and-similar" 词典。