{
ruleType: "tokens",
pattern: ( /the/ /prior/ [ {ner:"DATE"} & {normalized:/THIS (P\d\w.*)/} ]+ ),
action: ( Annotate($0, "normalized", "PREV_IMMEDIATE " + $$1.text) ) }
我对这条规则有两个问题:
>
在注释函数的最后一个参数中,我找不到正确的语法来将文本字符串与捕获组变量组合在一起。上面的“操作”字段导致以下异常:
ParseException:在第34行第72列遇到“+”“+”。我期待其中之一:“)”...“,”...
显然,当我使用“+”将字符串追加到一起时,最后一个参数没有正确地强制转换为字符串。
将最后一个参数中的字符串组合到注释函数中的正确方法是什么?
这应该会给出捕获组“(P\D\W.*)”的文本。
但似乎没有捕获该组。
是因为在注释中捕获组(而不是在标记文本中捕获组)根本不起作用吗?
还是我做错了什么?
一般来说,如果这两个问题不能直接解决,还有什么替代方案呢?
生成一个自定义版本的“english.sutime.txt”并让OOTB注释者使用它?
提前感谢您的任何帮助!
感谢您指出“priore”应视为指以前的时间。我们也会将此添加到我们的规则中。对于在SUTime规则中添加“prior”,最简单的事情是更改:
{ pattern: ( /this|the/ /past|previous|last/ ),
action: Tag($0, "TemporalOp", PREV_IMMEDIATE) }
致:
{ pattern: ( /this|the/ /past|previous|last|prior/ ),
action: Tag($0, "TemporalOp", PREV_IMMEDIATE) }
如果prev_immediate
不起作用,可以尝试将其更改为prev
。其用意是prev_immediate
和prev
充当以下时间表达式的运算符,以获得该时间表达式的“previous”或“past”出现,但是prev_immediate
操作没有经过很好的测试。这些运算符在后面的规则中应用:
{ name: "temporal-composite-6b",
priority: 4,
pattern: ( ( $REL_MOD ) ( [ $hasTemporal & !{ temporal::IS_TIMEX_SET } ] ) ),
result: RelativeTime( GetTag($1[0], "TemporalOp"), $2[0].temporal.value )
}
要访问它们,需要将MatchWithResults
设置为true
。
{
ruleType: "tokens",
matchWithResults: TRUE,
pattern: ( /the/ /prior/ [ {ner:"DATE"} & {normalized:/THIS (P\d\w.*)/} ] ),
}
然后,可以使用$$0.matchresults[2].normalized.group(1)
访问(P\d\w.*)
的匹配项。$$0
从TokensRegex获取整个捕获组。matchResults[2]
获取索引2处标记的matchResults。normalized.group(1)
获取对应于规范化注释的Java字符串表达式的捕获组。
注意,这种模式实际上在SUTime中不起作用,因为normalized
字段是在SUTime完成所有规则之后由NER填充的。
在执行通知时,如何获取的和?我正在使用Spring 4.0.6、AspectJ 1.7.4
班级水平 方法级
我使用Spring AOP拦截方法执行。 我有一个界面,如下所示: 以下是接口的实现: 现在我希望任何使用@AwesomeAnnoting注释的参数的方法都应该被Spring AOP捕获。 所以我写了以下方面,这是有效的。 但是,当我尝试查找参数注释时,我没有得到任何注释。如上所述,annotationMatrix为空。 所以我的问题是: 为什么annotationMatrix为空?可能是因为参数
我刚刚发现了Python3的函数注释(https://www.python.org/dev/peps/pep-3107/)这对于记录参数或返回类型似乎很有用。它还可以在我的pycharm IDE中提供更好的intellisense。 我有一个关于输入类型模糊的参数的问题。例如,它可以是一个列表或numpy数组或一些“类似数组”的数量。为函数注释此类输入参数的最佳方法是什么?例子: 我还有一个例子,
问题内容: 在Jackson中,当用注释构造函数时,必须用注释其参数。所以这个构造函数 变成这个: 我不明白为什么有必要。你能解释一下吗? 问题答案: Jackson必须知道以什么顺序将字段从JSON对象传递给构造函数。使用反射无法在Java中访问参数名称-这就是为什么您必须在注释中重复此信息的原因。
我有一把刀: 问题是,当我试图使用DAO进行加载调用时,使用DynamoDBMapper以field d1作为哈希键来获取项目,它会抛出一个DynamoDBExc0019,说:为公共DAO. getField2()找到了空键,但实际上表的值对应于field d2。问题,这是因为Lombok注释而不是手动突变代码,还是一般来说我们一起使用Lombok和DynamoDBAnnotions?