【发布时间】:2012-04-30 11:37:20
【问题描述】:
我正在努力完成的是一个程序,它读取一个文件,并根据原始句子比较每个句子。与原文完全匹配的句子将获得 1 分,完全相反的句子将获得 0 分。所有其他模糊句子将获得介于 1 和 0 之间的评分。
我不确定使用哪个操作可以让我在 Python 3 中完成此操作。
我已经包含了示例文本,其中文本 1 是原始文本,其他前面的字符串是比较。
文本:示例
文字 1:那是一个黑暗而暴风雨的夜晚。我一个人坐在红色的椅子上。我不是一个人,因为我养了三只猫。
文本 20:那是一个阴暗而暴风雨的夜晚。我一个人坐在深红色的椅子上。我并不完全孤单,因为我有三只猫科动物 // 应该得分高点,但不是 1
文本 21:那是一个阴暗而暴风雨的夜晚。我一个人坐在深红色的大教堂上。我并不完全孤单,因为我有三只猫科动物 // 得分应该低于文本 20
文本 22:我一个人坐在深红色的大教堂上。我并不完全孤单,因为我有三只猫科动物。这是一个阴暗而暴风雨的夜晚。 // 得分应该低于文本 21 但不是 0
文本 24:那是一个黑暗而暴风雨的夜晚。我并不孤单。我没有坐在红色的椅子上。我养了三只猫。 // 应该得 0 分!
【问题讨论】:
-
似乎您想计算 Levenshtein distance(或其他一些 edit distance 指标)。如果您现在是最大距离,您只需将分数缩放到
[0,1]的范围内。 -
感谢您的帮助@Felix Kling,difflib 可能是要走的路。
-
@FelixKling 太糟糕了,它被删除了......
-
为什么字符串 1 和 24 应该为零?他们的第一句话完全相同。 1 中的第 2 句与 24 中的第 2+3 句几乎相同(唯一的区别是“不是”,还有一个额外的“我不是”)。从数字上讲,它们非常相似。从语义上讲,它们是不同的,但如果您要求计算机理解句子的含义,那么您可能要求的太多了。
标签: python nlp fuzzy-comparison