我查看过很多开源NLP工具(主要是OpenNLP),我没有看到任何可以自动执行检测对话开始和结束任务的内容。
句子检测工具找到完整句子的边界。标记器准确地标记了标点符号,但仍然没有检测到开始和结束。我已经阅读了许多学术文章(such as),其中假定了对话检测。但我没有看到任何可以将其自动化为通用对话检测的工具。
例如,文字如下:
"I am happy," she said.
应该有"我很开心,"定义为对话框。像这样的文字:
"This is a really long piece of dialog spoken by a character.
"That spans across multiple paragraphs."
应将整个事物标识为对话框(即使第一段的末尾缺少右引号)。还有更奇怪的方法来指定对话框。比如破折号:
They were walking when Joe spoke up.
--I really like walking.
另外,通常内部对话框将用斜体表示,例如:
Joe walked down the street. *I really hope I don't get hit by a bus.*
是否有可以检测此类对话框部分的NLP工具?或者我刚刚错过的OpenNLP的方法呢?
答案 0 :(得分:1)
我不知道任何这样做的工具,开箱即用,与域无关。可能对于特定领域,你可以训练一些东西。例如,在呼叫记录中,很可能你有一个A-B-A-B(等)结构,两个人轮流说话。但是当更多人参与对话时,事情变得更加复杂。此外,您是否可以使用拼写功能(如单/双引号)来执行此操作,还取决于构建您的文本/语料库的人是否打算以一种整洁和一致的方式执行此操作。
我最近偶然发现了一个进行话语分析的工具:http://alt.qcri.org/tools/discourse-parser/
这为您提供了一种称为修辞结构树的东西,它是输入文档的表示,用于阐明哪个句子与另一个句子有何关系。我没有尝试过对话框,也不知道那里的表现。但它依赖于一种更具语义意识的切割文本的方式。也许这可以帮到你。该工具不像corenlp / opennlp那样用户友好,并且它需要(至少它对我而言)相当一些摆弄起来并运行。
反正;可能(方式)太多的信息,简短的回答;据我所知,没有简单的实现和使用工具。
答案 1 :(得分:1)
经过一番搜索后,看起来斯坦福NLP工具的“QuoteAnnotator”正是我所寻找的。 p>