GATE标记数字,货币,货币的注释

时间:2014-02-10 18:19:17

标签: java text-mining gate

请帮忙。

我有一些文字    “99285/25 紧急情况 850.0 650.00 的 04/05/12

INTERPRET 813.44 $ 36.00 的 04/05/12 CARLOS “

我需要将 650.00 标记为Money,Gate会自动选择 $ 36.00 作为Money标记。我如何指定它?

Imports: { import static gate.Utils.*; }
Phase: Number  
Input: Token Number  
Options: control = all  

Macro: AMOUNT_NUMBER
({Token.kind == number}
(({Token.string == ","}|  
{Token.string == "."}  
   )  
   {Token.kind == number}  
  )
Rule: MoneyCurrencyUnit  
  (  
      (AMOUNT_NUMBER)  
  ({Number.majorType == currency_unit})  
  )  
:number --> 
  :number {
  {
  {kind = "number", rule = "MoneyCurrencyUnit"}
}
 catch(InvalidOffsetException e) {
 // not possible
 throw new LuckyException("Invalid offset from annotation");
   }
 }

我是新手使用JAPE Grammar请帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您想将650.00标记为Money,则还会将813.44(例如)标记为Money。

如果你真的想这样做,你只需要修改你的JAPE规则,以匹配由Token.kind == number.,隔开的Token.kind == number

换句话说,您使用可选的currency_unit做了同样的事情。

在JAPE中,?运算符允许括号中的模式是可选的。 你可以试试这个:

Rule: MoneyCurrencyUnit  
  (  
      (AMOUNT_NUMBER)  
  ({Number.majorType == currency_unit})?  
  )