查找相似/同义词/上下文词 Python

You*_*ani 2 python text-mining wordnet

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

小智 6

from PyDictionary import PyDictionary

dictionary=PyDictionary()
answer = dictionary.synonym(word)
Run Code Online (Sandbox Code Playgroud)

word 是您要查找其同义词的词。


Dar*_*ook 6

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

我可以建议两种广泛的方法: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-similarityhttps://spacy.io/usage/vectors-similarity

关于英语和法语,通常您会独立使用两种语言。但是,如果您搜索“多语言词嵌入”,您会发现一些论文和项目,其中向量对于不同语言中的相同概念保持相同。

注意:API 旨在告诉您两个单词的相似之处,而不是查找相似的单词。要找到相似的单词,您需要获取向量并与每个其他单词向量进行比较,词汇量的大小为 O(N)。因此,您可能希望离线执行此操作,并为每个感兴趣的单词构建您自己的“同义词和类似”词典。