因此,我发现并正在使用 Stanford Parser,它非常适合拆分句子。我们的大部分句子都来自 AP,因此它非常适合该任务。
问题如下:
- 它占用大量内存(600M 很多)
- 它确实搞砸了一段文本的格式,我不得不为以后制作很多边缘案例。 (文档预处理器 API 调用不允许指定 ascii/utf8 引号——它们会立即转到 latex 样式,缩略词被拆分成不同的词(很明显)并且虚假空格被放在不同的地方)
为此,我已经编写了多个补丁来补偿我不应该做的事情。
基本上,它与开始时的拆分句子问题一样成为使用障碍。
我还有哪些其他选择?还有其他 NLP 类型的框架可以提供帮助吗?
我最初的问题只是能够以高概率检测句子边缘。
最佳答案
如果您想坚持使用 Stanford Tokenizer/Parser,请查看 documentation page for the tokenizer .
如果您只想拆分句子,则不需要调用正确的解析器,因此您应该能够通过直接使用 DocumentPreprocessor 来节省少量内存 - 一两兆字节。
虽然只有有限的分词器自定义可用,但您可以更改报价的处理。您可能想尝试以下方法之一:
unicodeQuotes=false,latexQuotes=false,asciiQuotes=false
unicodeQuotes=true
第一个意味着没有任何类型的引号映射,第二个将根据其最大能力将单引号或双引号(如果有)更改为左引号和右引号。
虽然分词器以各种方式拆分单词以匹配 Penn Treebank 约定,但您应该能够从返回的分词中精确地构建原始文本(请参阅 CoreLabel 中的各种其他字段)。否则就是一个错误。
关于java - 如何拆分句子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7506945/