首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"c.日期-日期BC“的SUTime SequenceMatchRules

"c.日期-日期BC“的SUTime SequenceMatchRules
EN

Stack Overflow用户
提问于 2018-12-17 19:20:18
回答 1查看 91关注 0票数 1

我正在与斯坦福大学的SequenceMatchRules进行斗争,因为它将以下输入识别为两个日期:

阿纳西曼德(c. 610-c. ,公元前546年)是苏格拉底以前的希腊哲学家,住在奥尼亚的一个城市米列图斯(在现代土耳其)。

(取自万神殿数据集,如http://pantheon.media.mit.edu)

‘公元前546’工作很好,但我也想承认'610‘为’公元前610‘(最好不是作为一个持续时间)。

到目前为止,我所做的只是为了让事情顺利进行:

改性english.sutime.txt

变化

代码语言:javascript
复制
$POSSIBLE_YEAR = ( $YEAR /a\.?d\.?|b\.?c\.?/? | $INT /a\.?d\.?|b\.?c\.?/ | $INT1000TO3000 );

代码语言:javascript
复制
$POSSIBLE_YEAR = ( $YEAR /a\.?d\.?|b\.?c\.?/? | $INT /a\.?d\.?|b\.?c\.?/ | /c\.\ / $INT | $INT1000TO3000 );

pattern: ( $POSSIBLE_YEAR)...提取规则中:

代码语言:javascript
复制
          Tag($0, "YEAR_ERA",
            :case {
               $0 =~ ( $INT /a\.?d\.?/ ) => ERA_AD,
               $0 =~ ( $INT /b\.?c\.?/ ) => ERA_BC,
               :else => ERA_UNKNOWN
            }
          )

代码语言:javascript
复制
          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

我应该指出,万神殿并不是完全标准化的,所以我必须处理额外的东西,如CE/BCE,在日期周围缺少空格等。因此,一个可扩展的方法将是很好的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-18 08:05:34

我认为这条规则与c. 610相匹配.如果它看到了该模式,它将将相应的IsoDate附加到它。请让我知道,如果这是可行的,或not...if,不,我可以知道什么是坏的。

代码语言:javascript
复制
{ (/c\./ (/[0-9]{3,4}/)) => IsoDate($1[0].numcompvalue, NIL, NIL, 0, FALSE) }

下面是IsoDate的构造函数,该构造函数以时代为参考:

代码语言:javascript
复制
public IsoDate(Number y, Number m, Number d, Number era, Boolean yearEraAdjustNeeded) {
  this.year = (y != null)? y.intValue():-1;
  this.month = (m != null)? m.intValue():-1;
  this.day = (d != null)? d.intValue():-1;
  this.era = (era != null)? era.intValue():ERA_UNKNOWN;
  if (yearEraAdjustNeeded != null && yearEraAdjustNeeded && this.era == ERA_BC) {
    if (this.year > 0) {
      this.year--;
    }
  }
  initBase();
}

如果该规则有效,它应该演示如何匹配文本模式并附加所需的年份。只需编写一个pantheon_rules.txt文件并将其添加到涵盖您想要的一切的SUTime规则列表中可能是最简单的,一旦您放下了该基本规则,就可以扩展它以匹配您想要的情况。我还可以在某个时候将处理这些案例的规则添加到正式发布中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53821741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档