【发布时间】:2012-07-12 08:06:24
【问题描述】:
我正在尝试编写一个程序来评估文本之间的语义相似性。我已经比较了文本之间的 n-gram 频率(一种词汇量度)。我想要一些比这更浅的东西,并且我认为在句子构造中查看相似性将是评估文本相似性的一种方法。
但是,我所能做的就是计算词性(例如,每个文本 4 个名词、2 个动词等)。这类似于只计算 n-gram(实际上效果不如 ngram)。
postags = nltk.pos_tag(tokens)
self.pos_freq_dist = Counter(tag for word,tag in postags)
for pos, freq in self.pos_freq_dist.iteritems():
self.pos_freq_dist_relative[pos] = freq/self.token_count #normalise pos freq by token counts
很多人(Pearsons、ETS Research、IBM、学者等)使用词性来进行更深入的衡量,但没有人说他们是如何做到的。如何将词性用于“更深入”的语义文本相似度测量?
【问题讨论】:
-
无论如何,他们不能,不能靠他们自己。词性标签通常告诉你一些关于语法的东西,而不是关于语义的,所以它们在比较意义时不会有用。想想你从“猫”和名词中拿走了什么信息。知道两个文本包含动词是否可以告诉您它们在语义上是否相似?
-
我也同意@aab。也许,POS 可以用作确定缺乏相似性(错误蕴涵)而不是相似性的启发式方法。但是这种方法的召回分数可能非常低,不会降低精度。
标签: python nlp nltk semantic-analysis