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

时间:2019-02-26 10:00:28

标签: python text-mining wordnet

您好,我正在寻找解决我问题的方法: 我想用法语和英语找到类似单词的列表 例如 : 名称可以是:名,姓,名,名,用户名...。 邮寄地址可以是:城市,国家/地区,街道,维尔,付款信息,邮政编码……。

2 个答案:

答案 0 :(得分:2)

from PyDictionary import PyDictionary

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

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

答案 1 :(得分:1)

另一个答案和评论描述了如何获取同义词,但我想您还想要更多?

我可以建议两种广泛的方法: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)。因此,您可能希望离线进行此操作,并为每个感兴趣的单词构建自己的“同义词相似”词典。