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

Duo*_*hia 6 python similarity nltk

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

from nltk.corpus import wordnet
sport = wordnet.synsets("sport")[0]
badminton = wordnet.synsets("badminton")[0]
print(sport.wup_similarity(badminton))
Run Code Online (Sandbox Code Playgroud)

我们将得到0.8421

现在如果我寻找"haha"和"lol"如下:

haha = wordnet.synsets("haha")
lol = wordnet.synsets("lol")
print(haha)
print(lol)
Run Code Online (Sandbox Code Playgroud)

我们将得到

[]
[]
Run Code Online (Sandbox Code Playgroud)

然后我们不能考虑它们之间的相似性.在这种情况下我们能做些什么?

sar*_*hil 6

您可以使用像Dissect (Distributional SEmantics Composition Toolkit)这样的工具从共生矩阵创建语义空间 ,然后设置为测量单词或短语之间的语义相似性(如果您组成单词).

在你的halol的情况下,你需要收集这些同谋.

另一件要尝试的是word2vec.


小智 5

有两种可能的其他方式:

CBOW:连续的一句话

跳过克模型:这个模型与CBOW模型相反

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

这些模型以及这里represted:https://www.tensorflow.org/tutorials/word2vec,也GENSIM是这样做的这些东西一个良好的Python库


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

或者尝试寻找word2vec:https://en.wikipedia.org/wiki/Word2vec