一个特殊的自然语言实践是使用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}$我们会得到
[]
[]
那么我们就不能考虑它们之间的相似性了。在这种情况下我们能做什么?在
还有两种可能的方法:
连续袋词
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)这样的工具从协同发生矩阵中创建语义空间 然后你被设置为衡量词或短语之间的语义相似性(如果你是构词的话)。在
在你的例子中,ha和lol你需要收集这些共同发生的情况。在
另一个可以尝试的东西是word2vec。在
相关问题 更多 >
编程相关推荐