python - 一种确定两个句子相似程度的算法

标签 python algorithm parsing tree nlp

我的一个 friend 有一个想法,就是制作一个一个一个显示单词的速读程序(很像目前现有的速读程序)。但是,该程序会过滤掉对意思不是完全必要的词(如果你想略读一些东西)。

我已经开始实现这个程序,但我不太确定去除“不重要”单词的算法应该是什么。

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

此外,“the”、“a”和“of”等非常常见的词也会有特殊情况。

例如:

“比利对简说,‘你想出去吗?’”

会变成:

“比利告诉简‘想出去吗?’”

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

这对算法来说是个好主意吗?如果是的话,我将如何分配权重,我应该使用哪种树比较算法,以及在合适的地方插入同义词(即应该在我之前完成)尝试删除任何单词)?

最佳答案

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

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

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

关于python - 一种确定两个句子相似程度的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40788494/

相关文章:

python - 使用 openpyxl Tokenizer 解析 Excel IF 语句

python - Caffe 多标签矩阵输入

python - 如何在给定字符集的情况下获得第 n 个排列,反之亦然

php - 根据用户的选择选择正确数据呈现给用户的最佳算法

java - 如何修复它才能捕获提到的 URL 格式?

python - 使用 python 和 .pem 文件通过 SCP 进行文件传输的最佳方法

javascript - 八月错误的 Date.parse javascript

ruby - 在 Ruby 中解析 "X years and Y weeks ago"相似的字符串

algorithm - 给定一个字典和一个字母列表,找出所有可以用这些字母组成的有效单词

java - 在 Java 中将月份字符串转换为整数