【问题标题】:Splitting chinese document into sentences [closed]将中文文档拆分成句子[关闭]
【发布时间】:2015-02-11 00:28:02
【问题描述】:

我必须将中文文本拆分成多个句子。我尝试了斯坦福 DocumentPreProcessor。它对英语效果很好,但对中文效果不佳。

请告诉我有什么好的中文分句器,最好是Java或Python。

【问题讨论】:

  • 您的文本是分段还是未分段?
  • 未分段。之后我使用斯坦福分词器进行了句子拆分。我是否必须反过来做。

标签: nlp tokenize stanford-nlp sentence


【解决方案1】:

在 Python 中使用一些正则表达式技巧(参见 http://aclweb.org/anthology/Y/Y11/Y11-1038.pdf 第 2.3 节的修改正则表达式):

import re

paragraph = u'\u70ed\u5e26\u98ce\u66b4\u5c1a\u5854\u5c14\u662f2001\u5e74\u5927\u897f\u6d0b\u98d3\u98ce\u5b63\u7684\u4e00\u573a\u57288\u6708\u7a7f\u8d8a\u4e86\u52a0\u52d2\u6bd4\u6d77\u7684\u5317\u5927\u897f\u6d0b\u70ed\u5e26\u6c14\u65cb\u3002\u5c1a\u5854\u5c14\u4e8e8\u670814\u65e5\u7531\u70ed\u5e26\u5927\u897f\u6d0b\u7684\u4e00\u80a1\u4e1c\u98ce\u6ce2\u53d1\u5c55\u800c\u6210\uff0c\u5176\u5b58\u5728\u7684\u5927\u90e8\u5206\u65f6\u95f4\u91cc\u90fd\u5728\u5feb\u901f\u5411\u897f\u79fb\u52a8\uff0c\u9000\u5316\u6210\u4e1c\u98ce\u6ce2\u540e\u7a7f\u8d8a\u4e86\u5411\u98ce\u7fa4\u5c9b\u3002'

def zng(paragraph):
    for sent in re.findall(u'[^!?。\.\!\?]+[!?。\.\!\?]?', paragraph, flags=re.U):
        yield sent

list(zng(paragraph))

正则表达式解释:https://regex101.com/r/eNFdqM/2


【讨论】:

    【解决方案2】:

    这些开源项目中的任何一个都应该是有用的 afaik:

    【讨论】:

      【解决方案3】:

      对于未分段的文本,使用斯坦福图书馆,您可能想要使用他们的中文 CoreNLP。这不像基本 corenlp 那样有很好的文档记录,但它可以满足您的任务。

      http://nlp.stanford.edu/software/corenlp-faq.shtml#languages http://nlp.stanford.edu/software/corenlp.shtml

      您将需要分段器和句子拆分器。 "segment, ssplit" 其他不相关。

      或者,您可以直接使用 edu.stanford.nlp.process.WordToSentenceSplitter 中的 WordToSentenceSplitter 类。如果你这样做,你可以看看它是如何在 WordsToSentencesAnnotator 中使用的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-12
        • 2017-04-18
        • 2011-11-03
        • 1970-01-01
        • 2019-08-27
        • 2013-10-10
        • 2013-07-13
        相关资源
        最近更新 更多