Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于NLP的句子检测_Java_Nlp_Opennlp_Text Segmentation - Fatal编程技术网

Java 基于NLP的句子检测

Java 基于NLP的句子检测,java,nlp,opennlp,text-segmentation,Java,Nlp,Opennlp,Text Segmentation,我试图从大量的文本中解析出句子。使用java,我从NLP工具开始,比如OpenNLP和斯坦福大学的解析器 但这就是我被卡住的地方。尽管这两个解析器都非常优秀,但当涉及到非统一文本时,它们都会失败 例如,在我的文本中,大多数句子都用句号分隔,但在某些情况下,如要点,它们不是。在这里,两种解析都失败得很惨 我甚至尝试在stanford parses中为多个句子终止符设置选项,但输出没有更好 有什么想法吗 编辑:为了简化操作,我希望在分隔符为新行(“\n”)或句点(“.”)的情况下解析文本…对于类似情

我试图从大量的文本中解析出句子。使用java,我从NLP工具开始,比如OpenNLP和斯坦福大学的解析器

但这就是我被卡住的地方。尽管这两个解析器都非常优秀,但当涉及到非统一文本时,它们都会失败

例如,在我的文本中,大多数句子都用句号分隔,但在某些情况下,如要点,它们不是。在这里,两种解析都失败得很惨

我甚至尝试在stanford parses中为多个句子终止符设置选项,但输出没有更好

有什么想法吗


编辑:为了简化操作,我希望在分隔符为新行(“\n”)或句点(“.”)的情况下解析文本…

对于类似情况,我所做的是根据我希望拆分文本的位置将文本拆分为不同的句子(以新行分隔)。与您的情况一样,它是以项目符号开头的文本(或者确切地说是以“换行标记”结尾的文本)。这也将解决类似的问题,如果您使用HTML进行相同的工作,可能会出现类似的问题。
在将它们分成不同的行之后,您可以发送单独的行用于句子检测,这将更加正确

还有一个很好的自然语言处理工具包-。它有许多分句器,包括标准的安妮分句器(不完全适合您的需要)和。稍后用于任何棘手的拆分

适合您使用的确切管道为:

  • 文件重置公关
  • 安妮英语代词
  • 安妮·雷格克斯分句器
    您还可以使用GATE进行更灵活的模式搜索。(有关完整的GATE文档,请参阅)。

    编写自定义分句器。您可以先使用斯坦福拆分器之类的工具,然后编写基于规则的后处理器来纠正错误

    我对正在解析的生物医学文本做了类似的操作。我使用了GENIA拆分器,然后在事后修复了一些东西


    编辑:如果你正在输入HTML,那么你应该先对它进行预处理,例如处理项目符号列表和其他东西。然后应用拆分器。

    首先必须明确定义任务。你对“一句话”的定义到底是什么?在你有了这样的定义之前,你只会绕圈子

    第二,清理脏文本通常是一项与“分句”截然不同的任务。各种NLP句子组块都假设输入文本相对干净。从HTML、提取的powerpoint或其他杂音转换为文本是另一个问题


    第三,斯坦福和其他大口径设备是统计的。因此,它们保证具有非零错误率。你的数据看起来越不像他们训练的内容,错误率就越高。

    如果你想坚持使用斯坦福NLP或OpenNLP,那么你最好重新训练模型。这些软件包中几乎所有的工具都是基于机器学习的。只有使用定制的培训数据,他们才能为您提供理想的型号和性能

    我的建议是:根据你的标准手动拆分句子。我想几千句就够了。然后调用API或命令行重新训练分句器。那你就完了

    但首先,你需要弄清楚的一件事是,正如前面的文章所说:“首先,你必须明确定义任务。你对‘句子’的定义到底是什么?”


    我在我的项目中使用了斯坦福NLP和OpenNLP,这是一个基于NLP和机器学习的美味菜肴发现引擎。他们工作得很好

    你的文本是用HTML编码的吗?然后您可以使用HTML结构查找项目符号列表之类的内容,并使用标准工具解析文本。@larsmans不是HTML,只是纯文本!!!这就是我想做的,因为斯坦福解析删除了句子中的所有字符,所以出现了问题。仍然在努力寻找没有他们的工作方式。@nflacco,这和我的情况完全一样!我正在使用StanfordCorenlp对GENIA数据集进行句子分割,但有时它无法检测句子边界。我正在考虑通过测试regexp
    \.\s+[A-Z]
    进行后处理。你同意吗?完全同意。你只需要列出一些常用的缩写词——Mr.Dr.等——再加上正则表达式,你就可以覆盖99%的句子边界。你也可以看看句子的长度。我看到的常见案例是Dr.或某个医学缩写词被视为句子。来吧句子中没有一两个单词。一些简单的规则很好地解决了这个问题。只是让我意识到我必须清理我的数据,然后将其输入解析器。(现在寻找一个库来帮助我清理数据)