我有一个文本文件。我需要一张句子清单。
如何实现这一点?有很多微妙之处,比如在缩写中使用了一个点。
我的旧正则表达式运行得很糟糕:
re.compile('(\. |^|!|\?)([A-Z][^;↑\.<>@\^&/\[\]]*(\.|!|\?) )',re.M)
发布于 2011-01-02 06:27:44
自然语言工具包( Natural Language Toolkit,nltk.org)提供了您需要的东西。This group posting表示这样做:
import nltk.data
tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
fp = open("test.txt")
data = fp.read()
print '\n-----\n'.join(tokenizer.tokenize(data))
(我还没试过呢!)
发布于 2017-10-30 21:34:57
您也可以使用nltk库,而不是使用正则表达式将文本拆分成句子。
>>> from nltk import tokenize
>>> p = "Good morning Dr. Adams. The patient is waiting for you in room number 3."
>>> tokenize.sent_tokenize(p)
['Good morning Dr. Adams.', 'The patient is waiting for you in room number 3.']
发布于 2018-01-10 20:03:42
您可以尝试使用Spacy而不是正则表达式。我使用它,它就完成了工作。
import spacy
nlp = spacy.load('en')
text = '''Your text here'''
tokens = nlp(text)
for sent in tokens.sents:
print(sent.string.strip())
https://stackoverflow.com/questions/4576077
复制相似问题