【发布时间】:2018-12-17 19:20:18
【问题描述】:
我正在与斯坦福大学的 SequenceMatchRules 抗争,将以下输入识别为两个日期:
Anaximander (c. 610 – c. 546 BC) 是前苏格拉底时期的希腊哲学家 他住在爱奥尼亚(今土耳其)的一座城市米利都。
(取自 Pantheon 数据集,例如http://pantheon.media.mit.edu)
'546 BC' 工作得很好,但我也想将 '610' 识别为 '610 BC' (最好不是持续时间)。
到目前为止,我所做的只是为了让事情顺利进行:
修改english.sutime.txt:
改变了
$POSSIBLE_YEAR = ( $YEAR /a\.?d\.?|b\.?c\.?/? | $INT /a\.?d\.?|b\.?c\.?/ | $INT1000TO3000 );
到
$POSSIBLE_YEAR = ( $YEAR /a\.?d\.?|b\.?c\.?/? | $INT /a\.?d\.?|b\.?c\.?/ | /c\.\ / $INT | $INT1000TO3000 );
而在pattern: ( $POSSIBLE_YEAR)...抽取规则中:
Tag($0, "YEAR_ERA",
:case {
$0 =~ ( $INT /a\.?d\.?/ ) => ERA_AD,
$0 =~ ( $INT /b\.?c\.?/ ) => ERA_BC,
:else => ERA_UNKNOWN
}
)
到
Tag($0, "YEAR_ERA",
:case {
$0 =~ ( $INT /a\.?d\.?/ ) => ERA_AD,
$0 =~ ( /c\.\ / $INT ) => ERA_BC,
$0 =~ ( $INT /b\.?c\.?/ ) => ERA_BC,
:else => ERA_UNKNOWN
}
)
首先它很丑,其次它根本不起作用。
我应该从哪里着手?
我正在使用stanford-corenlp-full-2018-10-05。
我应该提到,Pantheon 并没有完全标准化,所以我必须稍后处理 CE/BCE、日期周围缺少空格等其他内容。因此,可扩展的方法会很棒。
【问题讨论】:
标签: regex date stanford-nlp sutime