Python:如何从txt文件中找到最匹配的句子

时间:2019-03-08 02:41:17

标签: python

我想输出txt文件中是否存在类似的句子

示例:
如果.txt文件包含

1。太阳系中最大的行星是什么?
2。如何泡茶?
3。我们太阳系中哪个星球最大?

在这种情况下,它应导致:-
3。我们太阳系中哪个星球最大?

基本上应该比较文件行中是否有超过4或5个单词

1 个答案:

答案 0 :(得分:2)

我同意约翰·科尔曼的建议。 difflib可以帮助您找到两个字符串之间的相似性度量。这是可能的方法之一:

from difflib import SequenceMatcher

sentences = []
with open('./bp.txt', 'r') as f:
    for line in f:
        # only consider lines that have numbers at the beginning
        if line.split('.')[0].isdigit():
            sentences.append(line.split('\n')[0])
max_prob = 0
similar_sentence = None
length = len(sentences)
for i in range(length):
    for j in range(i+1,length):
        match_ratio = SequenceMatcher(None, sentences[i], sentences[j]).ratio()
        if  match_ratio > max_prob:
            max_prob = match_ratio
            similar_sentence = sentences[j]
if similar_sentence is not None:
    print(similar_sentence)