查找类似的/同义词/上下文单词Python

最后发布: 2019-02-26 10:00:28


问题

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

python text-mining wordnet
回答

from PyDictionary import PyDictionary

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

word是您找到同义词的单词。


回答

另一个答案和评论描述了如何获取同义词,但我认为你想要更多的东西?

我可以提出两种广泛的方法:WordNet和文字嵌入。

使用nltk和wordnet,您想要探索相邻的图节点。 有关可用功能的概述,请参见http://www.nltk.org/howto/wordnet.html 我建议,一旦你在Wordnet中找到了你的起始单词,遵循它的所有关系,还要达到hypernym,并在那里做同样的事情。

找到开始的单词并不总是那么容易: http ://wordnetweb.princeton.edu/perl/webwn?s = Postal + address&subub = Search + WordNet &o2 =&o0 = 1&o8 = 1&o1 = 1&o7 =&o5 =&to9 =&o6 =&o3 =&o4 =&H =

相反,似乎我必须使用“地址”: http//wordnetweb.princeton.edu/perl/webwn?s = address& sub = Search + Word&hel2 =&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)。 因此,您可能希望离线执行此操作,并为每个感兴趣的单词构建自己的“同义词和类似”词典。