CoreNLP SUTime将虚线数字提取为timex持续时间

dohp0rv5  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(84)

使用website中的演示代码(除了我没有指定文档日期),输入"Call 090-1234-5678",我得到了以下输出:

1234-5678 [from char offset 5 to 18] --> (1234-XX-XX,5678-XX-XX,PT38955312H)

Timex属性是:

{tid=t3, value=PT38955312H, type=DURATION, beginPoint=t1, endPoint=t2}

这恰好是一个日本电话号码,所以我知道它不能直接工作。然而,对于提取时间范围,我希望得到的结果是从1234年到5678年的时间,而不是由这段时间的小时数组成的持续时间。引用的Timex规范称这为“锚定持续时间”,并在第13页展示了将其拆分为多个注解的方法(这将更容易处理)。
即使这最终证明是不可纠正的或无法修复的,您能帮助我找到它的来源吗?我在英语.sutime中有很多持续时间规则,但它们似乎还需要其他单词匹配(如“the”和“year”)。

xoefb8l8

xoefb8l81#

这是一个部分解决方案(其中 process(temporal) 是处理提取时间的一些实用方法):

SUTime.Temporal temporal = cm.get(
        TimeExpression.Annotation.class).getTemporal();
if(temporal.getTimexType().equals(TimexType.DURATION)){
    Range range = temporal.getRange(SUTime.RANGE_FLAGS_PAD_AUTO);
            // for anchored durations, process only the anchors
    if(range.begin() != null){
        process(range.begin());
        process(range.end());
    }else
        process(temporal);
}else{
    process(temporal);
}

基本上,如果它是一个持续时间类型,那么我会检查它是否锚定,如果锚定了就处理锚点。
这个解决方案是部分的,因为我一开始就不喜欢这种匹配方式(需要找到并删除规则),而且我仍然想知道是否有其他方法可以获得更符合预期的时间标记流。最大的问题是(众所周知的)缺乏文档。

l7mqbcuq

l7mqbcuq2#

请忽略"你能帮我找到规则部分吗?"。我的临时过滤(移除巨大的持续时间)目前运行良好,我相信你还有更重要的事情要做。

相关问题