比较两个文本文件时,如何使标记化不将收缩及其对应部分视为相同?

时间:2018-09-10 04:05:26

标签: python-3.x nltk tokenize cs50 sentence-similarity

我目前正在研究一种数据结构,该结构应该比较两个文本文件并列出它们共有的字符串列表。我的程序以两个字符串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 []

0 个答案:

没有答案