2012-07-13 41 views
4

如何确定使用WordNet的Python中两个文本之间的语义相似度?使用WordNet来确定两个文本之间的语义相似度?

明显的预处理将删除停用词和词干,但那又如何?

我能想到的唯一方法是计算两个文本中每个单词之间的WordNet路径距离。这是unigrams的标准。但是这些都是大的(400字)文本,它们是自然语言文件,没有任何特定顺序或结构的文字(除了英文文法强加的文字外)。那么,你会在文本之间比较哪些单词?你将如何在Python中做到这一点?

+0

我会遍历所有单词,并比较同一指数与Levenshtein距离其他文本并试图将其最小化 – 2012-07-13 02:50:22

+0

两个文本没有通过类似的索引组织。例如,它将是一个关于狗的维基百科页面,另一个关于猫的维基百科页面。 – Zach 2012-07-13 22:22:45

回答

8

一件事,你可以做的是:

  1. 杀停止词
  2. 找到尽可能多的单词可能有同义词和反义词与同一文档的其他词的最大的交叉点。我们称之为“重要词汇”
  3. 检查每个文档的重要词汇集是否相同。他们越接近,文档就越相似。

还有另一种方法。从每个文档中的句子计算句子树。然后比较两个森林。很久以前,我为一门课做了一些类似的工作。 Here's the code(请记住,这是很久以前的,这是课程,所以代码是非常黑客,至少可以这么说)。

希望这有助于

+0

+1好主意。我在看你的代码,但我没有看到如何比较句子树。据推测,它应该只需要大约15行代码与Python中的NLTK,不是吗? – Zach 2012-07-13 22:30:32

+0

我从来没有到过这一点。但它应该是我的代码输出的直接镜头 – inspectorG4dget 2012-07-13 22:34:22

+0

取决于您想如何比较句子树。但它不应该占用太多的代码。 – inspectorG4dget 2012-07-14 00:23:04

相关问题