我正在使用nltk句子标记器来获取文件的句子 但是当有子弹/列出的数据时它会失败。
我正在使用的代码是:
dataFile = open(inputFile, 'r')
fileContent = dataFile.read()
fileContent = re.sub("\n+", " ", fileContent)
sentences = nltk.sent_tokenize(fileContent)
print(sentences)
我希望句子标记器能够将每个子弹作为一个句子。
有人可以帮我吗?谢谢!
EDIT1 :
原始ppt样本:http://pastebin.com/dbwKCESg
已处理的ppt数据:http://pastebin.com/0N64krKC
我只接收已处理的数据文件,并且需要对其进行句子标记化。
答案 0 :(得分:1)
您的问题有点不清楚,但我尝试了您的代码,在尝试解析子弹时似乎失败了。我添加了一个函数来删除不可打印的字符,并添加了一个find / replace来替换带有句点的换行符。我的python版本上的可打印字符串是:
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c
此代码从子弹中创建句子,同时仍将句子与文本块分开。如果输入文本中的句子中间有换行符,那么它就会失败 - 你的示例输入没有。
import re, nltk, string
dataFile = open(inputFile, 'r')
fileContent = dataFile.read()
fileContent = re.sub("\n+", ".", fileContent)
fileContentAscii = ''.join(filter(lambda x:x in string.printable,fileContent))
sentences = nltk.sent_tokenize(fileContentAscii)