如果是项目符号数据或列出的数据,如何使用nltk句子标记器?

时间:2016-01-29 11:46:10

标签: python nlp nltk

我正在使用nltk句子标记器来获取文件的句子 但是当有子弹/列出的数据时它会失败。

Example text

我正在使用的代码是:

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

我只接收已处理的数据文件,并且需要对其进行句子标记化。

1 个答案:

答案 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)