Stanford CoreNLP不适用于许多常见的欧洲日期格式(c.f。Date and time notation in Europe (Wikipedia))。
我们都知道日期解析是一团糟,特别是crazy mm-dd-yyyy format the U.S. uses。尽管如此,CoreNLP甚至无法处理基本的欧洲日期格式,因为它在点上过于分散。
但是,通常会提供日期信息,例如为:
DieTerroranschläge,2001年9月11日,einem Dienstag,waren vierkoordinierteFlugzeugentführungenmitanschließendenSelbstmordattentaten...... (Wikipedia)
无论我尝试什么,CoreNLP都将其分为:
1. Die Terroranschläge am 11.
2. September 2001, einem Dienstag, waren vier [...]
使CoreNLP在德国NLP中基本无法使用。点只是将其标记为序数,即这是德国的写作方式“2001年9月11日”。您还会经常看到德语中的符号“11. 9. 2001”,CoreNLP认为9.
是另一句话,也是“2001年9月11日”
是否有任何钩子(例如覆盖某些方法)允许我定义模式以使用自己的规则重新连接错误分割的句子?例如,[123]?\d\. 1?\d\.
对于日期来说是典型的,并且没有多少个月......
答案 0 :(得分:0)
虽然这不是一个涉及CoreNLP的解决方案,但是在一个无耻的自我插件中让我发布我自己的(基于Python的)句子分割器和单词标记器,segtok; GitHub。阅读此投诉后,我意识到我自己的分段器也不支持此功能,所以我刚刚添加它并将更新推送到PyPI和GitHub。
我喜欢认为,一般来说,它提供了相当不错的结果,并且它具有针对欧洲特定问题的一些“专业知识”(我讲流利的西班牙语,英语和德语,并掌握其他欧洲语言)所以你可能想看看。
答案 1 :(得分:0)
我在错误报告中发布了一个解决方法:
https://github.com/stanfordnlp/CoreNLP/issues/380
基本上,如果中间没有字符且前一个标记都是数字,我将现有的TokenizerAnnotator
与一个将点合并到前一个标记的{{1}}包装起来。这应该是合理有效的 - 比基于正则表达式的方法更有效。