我正在从事一个项目,这需要我匹配一个短语或关键字与一组相似的关键字。我需要对此进行语义分析。
举个例子:
相关QT
便宜的健康保险
负担得起的医疗保险
低成本医疗保险
更少的健康计划
廉价的医疗保险
常识
低成本健康保险
在这里,通常意义栏下的单词应该与相关QT栏下的匹配。我看了一堆工具和技术来做同样的事情。S-Match看起来很有前途,但我必须使用Python,而不是Java。此外,潜在语义分析看起来很好,但我认为它更适合于基于关键字而不是关键字匹配的文档分类。我对NLTK比较熟悉。有人能提供一些关于我应该继续前进的方向以及我应该使用什么工具的见解吗?
发布于 2014-12-25 05:54:33
如果你有一个大的语料库,这些单词出现的地方,你可以训练一个模型来将每个单词表示为向量。例如,您可以通过word2vec的"skip-gram和CBOW模型“使用深度学习,它们是在gensim software package中实现的
在word2vec模型中,每个单词都由一个向量表示,然后可以通过测量表示这个单词的向量的余弦来衡量两个单词之间的语义相似度。语义相似的词应该有很高的余弦相似度,例如:
model.similarity('cheap','inexpensive') = 0.8(该值是虚构的,仅用于说明。)
此外,根据我的实验,对相对较少的单词(即最多3或4个单词)求和可以保留语义,例如:
vector1 = model['cheap']+model['health']+model['insurance']
vector2 = model['low']+model['cost']+model['medical']+model['insurance']
similarity(vector1,vector2) = 0.7(再说一次,只是为了说明一下。)
您可以使用单词之间的语义相似性度量作为生成聚类的度量。
发布于 2014-12-28 02:54:35
当潜在语义分析指的是“文档”时,它基本上是指长度大于1的任何一组词。您可以使用它来计算文档与另一个文档之间、一个词与另一个词之间或一个词与一个文档之间的相似度。所以你当然可以在你选择的应用程序中使用它。
其他可能有用的算法包括:
的Python语言实现
发布于 2013-01-06 22:01:22
我将从Wordnet.开始,它将为您提供成百上千个术语的真正同义词和其他单词关系。由于您标记了nltk:它为Wordnet提供了绑定,您可以将其用作特定于域的解决方案的基础。
还在NLTK中,请查看“NLTK的introduction”一书中关于similar()方法的讨论,以及它所基于的类nltk.text.ContextIndex。(这一切仍然很简单,但这可能就是您真正需要的)。
https://stackoverflow.com/questions/11798389
复制相似问题