我目前正在研究一种数据结构,该结构应该比较两个文本文件并列出它们共有的字符串列表。我的程序以两个字符串a和b(每个变量一个文件的内容)的形式接收两个文件的内容。然后,我在for循环中使用tokenize函数来按每个句子中断字符串。然后将它们存储到集中以避免重复输入。在比较它们之前,我删除了每个变量中的所有重复行。然后,我将两个变量相互比较,只保留它们共同的字符串。当他们相互比较时,我有一个错误发生在最后一部分。该程序将在不应该使用的时候将收缩及其相应的对应部分视为相同。例如,它将读为“不应”和“不应”,并且将产生错误的答案。我要使其不读取收缩及其对应的部分。
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 []