>>> import nltk
>>> paragraph = u"Hi, this is my first sentence. And this is my second. Yet this is my third."
>>> sentences = nltk.sent_tokenize(paragraph)
[u"Hi, this is my first sentence.", u"And this is my second.", u"Yet this is my third."]
myarticle = """This is a sentence.
And another one.
And a 3rd one."""
N = 3 # 3 sentences
print ''.join(sentence+'.' for sentence in re.split('\.(?=\s*(?:[A-Z]|$))', myarticle, maxsplit=N)[:-1])
考虑下载自然语言工具包(^{} )。然后,你可以创建一些句子,不会因为“U.S.A.”或无法拆分以“?!”结尾的句子。在
您的代码变得更加可读。要进入第二句话,你要用你习惯的符号。在
^{pr2}$这里有一个更可靠的解决方案:
与前面提到的其他一些可能性相比,此解决方案有一些优势:
即使在你的文本中确实有
N
个句子,它也能工作。其他一些答案在结尾处产生一个双.
。考虑到最后一个句子后面不是大写字母,而是文本的结尾($
),可以避免这种情况。即使在文本中少于
N
个句子,这种方法仍然有效。拆分的数量由
maxsplit
参数限制为re.split()
,这限制了拆分的数量,因此非常有效。希望这有帮助!在
如果可以有其他标点符号而不是通常的“.”,您可能应该尝试以下操作:
这将返回句子列表。当然,它没有正确地处理保罗提到的案例。在
相关问题 更多 >
编程相关推荐