一种确定相似两句话的算法

时间:2016-11-24 14:09:19

标签: python algorithm parsing tree nlp

我的一个朋友有一个想法,就是制作一个逐个显示单词的速读程序(就像现有的速读程序一样)。但是,程序会过滤掉对于含义完全不必要的单词(如果你想略读某些内容)。

我已经开始实施这个程序,但是我不太清楚算法是什么来摆脱"不重要的"话应该是。

我的想法是解析句子(我目前正在使用Stanford Parser)并以某种方式根据该单词对句子的重要性来分配权重,然后开始删除单词的含义。最低权重。我将继续这样做,检查"不同"原始树和新树是。我将继续删除重量最轻的单词,直到两棵树太不相同(我将通过"校准"每个用户经过一次的过程确定一些常量)。最后,我将浏览缩短句子的每个单词,并尝试用该单词的更简单或更短的同义词替换它(同样仍然试图保留值)。

同样,对于非常常见的单词,例如" the," ""和" of。"

例如:

"比利对简说,“你想出去吗?'"

会变成:

"比利告诉简&想要出去?'"

这基本上保留了句子的所有含义,但显着缩短了它。

对于算法来说,这是一个好主意吗?如果是这样,我将如何分配权重,我应该使用什么树比较算法,并且在同一个地方插入同义词(即应该在我之前完成)试着删除任何单词)?

3 个答案:

答案 0 :(得分:2)

您可以使用本文中描述的方法计算两个句子的相似度:Corpus-based and Knowledge-based Measures of Text Semantic Similarity

你可以删除单词,直到与原始句子的相似性显着下降(这本身就是一个有趣的问题)。

您还可以在此处查看此简化版本的相似度算法:Wordnet Sentence Similarity

答案 1 :(得分:1)

分配权重是一个百万美元的问题。作为第一步,我将识别句子的部分(主语 - 谓词 - 子句等)和句子结构(简单 - 复合 - 复合等)以找到"锚点#34;那些重量最重的词。这应该使剩下的任务变得更容易。

答案 2 :(得分:1)

假设您使用单词嵌入作为加权逻辑,因为我无法想到更好的方法,您可以将短语转换为向量并比较这些向量。 以这种方式很好地处理低重量词,例如a,an,等等。

本教程可能会对您有所帮助:Phrase2Vec In Practice