如何计算WordNet中没有出现的英语单词的相似度?

2024-06-01 10:51:50 发布

您现在位置:Python中文网/ 问答频道 /正文

一个特殊的自然语言实践是使用WordNet计算两个单词之间的相似度。我从以下python代码开始提问:

from nltk.corpus import wordnet
sport = wordnet.synsets("sport")[0]
badminton = wordnet.synsets("badminton")[0]
print(sport.wup_similarity(badminton))

我们得到0.8421

现在,如果我寻找“哈哈”和“lol”如下:

^{pr2}$

我们会得到

[]
[]

那么我们就不能考虑它们之间的相似性了。在这种情况下我们能做什么?在


Tags: 代码fromimportcorpus单词wordnetprintlol
3条回答

还有两种可能的方法:

连续袋词

skip-gram模型:该模型与CBOW模型相反

看这个:https://www.quora.com/What-are-the-continuous-bag-of-words-and-skip-gram-architectures-in-laymans-terms

这些模型在这里得到了很好的描述:https://www.tensorflow.org/tutorials/word2vec,而且{a3}是一个很好的python库来完成这些工作


尝试寻找Tensorflow解决方案,例如:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/tutorials/word2vec/word2vec_basic.py

或者尝试查找单词2vec:https://en.wikipedia.org/wiki/Word2vec

您可以使用其他框架。我也尝试过NLTK,但最后还是在spacy上找到了(空间.io)非常快速和功能强大的框架。有一种称为“相似性”的词的方法,它与其他词相比较(但它也适用于句子、文档等)。它是用word2vec实现的。事实上,我不知道他们的词汇量有多大,在这个词未知的情况下如何挣扎,但这可能值得一试。在

我也在玩这个游戏: https://radimrehurek.com/gensim/models/word2vec.html 你可以在两行代码中加载google的大word2vec模型(这个项目将google word2vec++库移植到python中)可以在这里访问: https://docs.google.com/file/d/0B7XkCwpI5KDYaDBDQm1tZGNDRHc/edit

您可以使用诸如Dissect(DIStributional SEmantics Composition Toolkit)这样的工具从协同发生矩阵中创建语义空间 然后你被设置为衡量词或短语之间的语义相似性(如果你是构词的话)。在

在你的例子中,halol你需要收集这些共同发生的情况。在

另一个可以尝试的东西是word2vec。在

相关问题 更多 >