当前位置: 首页 > 知识库问答 >
问题:

使用OpenNLP进行句子检测

法弘亮
2023-03-14

我正在试用OpenNLP句子检测工具。文本在一个文件-para3中。txt。内容:

Bob went to London Mary came from Paris Now everything is fine.

我使用以下命令运行此命令:

opennlp SentenceDetector ../models/en-sent.bin < para3.txt

我得到如下输出:

Bob went to London Mary came from Paris Now everything is fine.

理想情况下,我会看到三句话作为输出:

Bob went to London.
Mary came from Paris.
Now everything is fine.

现在,如果我尝试其他句子,其中“句号”或“句号”出现,句子检测就会发生。一个人可能会猜到文本中有3个句子,但是如何通过OpenNLP完成呢?NLP的哪些工具可以在这里提供帮助???句子检测的下一个层次是什么?

共有2个答案

白哲茂
2023-03-14

实际上,这似乎是一个格式错误的文本。你可以使用一些启发式的方法,使用卡盘信息将其划分成句子。

杭令
2023-03-14

你应该训练你的模型来检测这些类型的句子,即文档中给出的句子检测器训练。创建已发送的培训文件。训练:样本训练数据文件。唯一的要求是,每个句子都应该在培训文件中的单独一行,如下所示。

第一句

第二句

第三句

......

......

然后使用命令行界面:

opennlp SentenceDetectorTrainer -model en-sent_trained.bin -lang en -data en-sent.train -encoding UTF-8

这将给出一个模型文件:en-sent_-trained。箱子

现在使用这个. bin文件而不是en-sent.bin

希望这有帮助!

 类似资料:
  • OpenNLP API中句子检测类背后使用的逻辑是什么?是: 基于“”进行检测或 最长的空白修剪字符序列或 还有别的 有人能解释一下吗? 另外:解析API中的解析是如何完成的,即使用的逻辑是什么?

  • 我已经成功地使用OpenNLP进行文档分类,并且能够从训练过的样本中提取名称并使用正则表达式。 我想知道是否也可以根据名字(或者更一般地说,主语)在句子中的位置来提取名字? 例如。而不是使用先验已知的具体名称进行培训,例如

  • 我试图使用官方OpenNLP网站手册示例来训练一个新模型,以下是示例: 问题出在2º线上, 帮我说:不赞成。改用PlainTextByLineStream(InputStreamFactory,Charset)。但是我不知道如何使用这个构造函数。我想举一个例子,使用同一个语料库文件使用这个未弃用的构造函数。 我已经编写了下一段代码,使用opennlp帮助和两种使用train方法的方法,不推荐的和建

  • 如果不存在则创建表(int(11)不为空AUTO_INCREMENT,char(50)不为空,主键())engine=innoDB DEFAULT charset=latin1 AUTO_INCREMENT=11; 表tblcontent 如果不存在(int(11)不为NULL AUTO_INCREMENT,char(100)不为NULL,text不为NULL,date不为NULL,char(50

  • 问题内容: 我按以下方式在表中具有层次结构数据(右),这将创建层次结构,如左图所示。表保存在oracle 11g中。 我的数据表的值如下。它包含所有叶节点的值。 数据表 我需要生成insert语句, 最好是单个insert语句 ,它将基于子项的值之和在数据表中插入行。请注意,我们只需要为数据表中不存在其值的那些父母计算总和。 数据表(插入后预期) 问题答案: 如果所有叶节点的高度都相同(此处为lv

  • OpenNLP是一个关于自然语言处理的Apache项目。NLP程序的目的之一是解析一个句子,给出其语法结构的树。例如,句子“天空是蓝色的”可能被解析为 其中是句子,是名词短语,是动词短语。等效地,上面的树可以写成一个带括号的字符串,如下所示: 我试图使用OpenNLP从句子中获取带括号的字符串,但我无法让示例代码正常工作。 特别是,我正在遵循本教程的最后一部分,我的代码在初始化时卡住了。 我已经从