В настоящее время я работаю над структурой данных, которая должна сравнивать два текстовых файла и составлять список общих для них строк. моя программа получает содержимое двух файлов в виде двух строк a & b (содержимое одного файла для каждой переменной). Затем я использую функцию tokenize в цикле for, чтобы разбить строку на каждое предложение. Затем они сохраняются в набор, чтобы избежать дублирования записей. Я удаляю все повторяющиеся строки в каждой переменной, прежде чем сравнивать их. Затем я сравниваю каждую из двух переменных друг с другом и сохраняю только общую строку. У меня есть ошибка, которая возникает в последней части, когда они сравниваются друг с другом. Программа будет относиться к сокращениям и их соответствующим контрагентам так же, как и не должна. Например, он будет читать «Не должен и не должен» как одно и то же и даст неправильный ответ. Я хочу, чтобы он не читал сокращения и их встречные части так же.
import nltk
def sentences(a, b): #the variables store the contents of the files in the form of strings
a_placeholder = a
set_a = set()
a = []
for punctuation_a in nltk.sent_tokenize(a_placeholder):
if punctuation_a not in set_a:
set_a.add(punctuation_a)
a.append(punctuation_a)
b_placeholder = b
set_b = set()
b = []
for punctuation_b in nltk.sent_tokenize(b_placeholder):
if punctuation_b not in set_b:
set_b.add(punctuation_b)
b.append(punctuation_b)
a_new = a
for punctuation in a_new:
if punctuation not in set_b:
set_a.remove(punctuation)
a.remove(punctuation)
else:
pass
return []