4

我正在尝试使用斯坦福 NLP 工具从文本中提取日期( 8/11/2012 )。

这是一个链接!对于这个工具的演示

你能帮助我如何训练分类器来识别日期(2012 年 8 月 11 日)。

我尝试使用训练数据作为

Woodhouse PERS 2012 年 8 月 18 日日期,O 帅 O

但不适用于相同的测试数据。

4

3 回答 3

8

如果这就是您想要完成的全部工作,那么使用 NLP 工具从文本中提取日期似乎有点过头了。您应该考虑其他选项,例如简单的 Java 正则表达式(例如,此处)。

如果您正在做一些需要斯坦福 NLP 工具提供更多功能的事情,请查看SUTime注释器。他们的演示页面将让您了解它的行为方式。确保选中该选项Read rules from file,您将看到您的日期被注释。

用法:

SUTime annotations are provided automatically with the StanfordCoreNLP pipeline by including the ner annotator.
于 2012-11-13T21:30:21.983 回答
4

你当然可以训练基于 CRF 的 NER 来识别日期和时间。您可以通过运行提供的 english.muc.7class.dissim.crf.ser.gz 模型来查看一个示例。请参阅培训 NER 系统的常见问题解答。但请注意,我们用于时间/日期识别的主要工具现在是基于正则表达式的:SUTime。您还可以为其他应用程序编写 SUTime 规则。请参阅SUTime 页面和该页面上指向 TokensRegex 的链接。

于 2012-11-14T19:17:30.317 回答
0

在 sutime/english.sutime.txt 第 319 行中,美国标记的模式很少:

{ ruleType: "time", pattern: /yyyy-?MM-?dd-?'T'HH(:?mm(:?ss([.,]S{1,3})?)?)?(Z)?/ } 
{ ruleType: "time", pattern: /yyyy-MM-dd/ }  
{ ruleType: "time", pattern: /'T'HH(:?mm(:?ss(.,)?)?)?(Z)?/ } 
// Tokenizer "sometimes adds extra slash  
{ ruleType: "time", pattern: /yyyy\?/MM\?/dd/ }  
{ ruleType: "time", pattern: /MM?\?/dd?\?/(yyyy|yy)/ } 
{ ruleType: "time", pattern: /MM?-dd?-(yyyy|yy)/ } 
{ ruleType: "time", pattern: /HH?:mm(:ss)?/ }
{ ruleType: "time", pattern: /yyyy-MM/ }

只需要添加一些规则类型,就可以得到所需的顺序

于 2014-05-28T11:07:55.243 回答