2012-11-13 104 views
3

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

这是a link!为这个工具的演示

你可以帮助我如何训练分类器以确定日期(8/11/2012)。

我试着用训练数据

伍德豪斯PERS 2012年8月18日日期 ,O- 帅Ø

但对于相同的测试数据不起作用。

回答

6

使用NLP工具从文本中提取日期似乎是矫枉过正,如果这是你所要完成的一切。您应该考虑其他选项,如简单的Java正则表达式(例如here)。

如果您正在做的事情需要使用斯坦福大学NLP工具的更多功能,请查看SUTime注释器。他们的demo page将让你感受它的行为。确保检查选项Read rules from file,你会看到你的日期得到注释。

用法:

SUTime annotations are provided automatically with the StanfordCoreNLP pipeline by including the ner annotator. 
2

你当然可以培养基于CRF-NER承认的日期和时间。您可以通过运行提供的english.muc.7class.distsim.crf.ser.gz模型来查看该示例。有关NER系统的培训,请参阅the FAQ。但请注意,我们的时间/日期识别主要工具现在是基于正则表达式的:SUTime。您也可以为其他应用程序编写SUTime的规则。请参阅SUTime page以及该页面上TokensRegex的链接。

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/ } 

只需要添加一些ruleTypes,得到它所需的顺序