【问题标题】:Find similar/synonyms/context words Python查找相似/同义词/上下文词 Python
【发布时间】:2019-07-19 20:09:44
【问题描述】:

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

【问题讨论】:

标签: python text-mining wordnet


【解决方案1】:

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

我可以提出两种广泛的方法: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= 然后决定其中哪一个是正确的意义。然后尝试单击上位词、下位词、姐妹词等。 老实说,这些都不是很合适。

Open Multilingual 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)。因此,您可能希望离线执行此操作,并为每个感兴趣的词构建自己的“同义词和相似词”词典。

【讨论】:

  • +1 非常感谢你,这正是我想做的,我会尝试通过找到起始词来进行分层,我也会使用 Spacy 来检查相似度
  • 我试图找到与餐厅相关和相似的词,但是 wordnet 给了我吃饭的地方、餐馆和餐馆的词条。你能多描述一下遵循关系并对上位词做同样的过程吗?
  • @YHStan 具体来说,“遵循关系”意味着单击 WordNet 搜索结果中条目旁边的“S”字符,然后单击其中一个链接,例如“直接上位词”,出现。它可以使用 nltk 自动化,但您通常需要人工判断才能使其有用。
【解决方案2】:
from PyDictionary import PyDictionary

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 2012-07-07
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多