我遇到了一个奇怪的问题。我使用 Tokensregex 来识别文本中的数量,并且大多数情况下它运行良好,但是,在下面给出的句子中,无法识别120万作为数量,而同样的规则适用于240万。我已经尝试了一切......我有点难过。
任何人都知道为什么一个数量被识别而另一个没有被识别?这可能在某种程度上取决于短语POS标签吗?两种情况下的POS标签都是CD,但它们的短语标签不同。在一个案例中,它是QP(120万)和另一个ADJP。
句子:美国排名第3的车辆销售商 汽车公司(GM.N)和福特汽车公司(F.N),丰田进口120万辆 每年到美国市场的车辆,其240万美国的一半 销售
规则:
{
ruleType: "tokens",
pattern: ((($QUANTITY_NAME)*?([{pos: CD}]+)?($QUANTITY_NAME)?)),
action: Annotate($1,ner,"QUANTITY"),
result: "QUANTITY"
}
{
ruleType: "tokens",
pattern: (([{pos: CD}]+)?),
action: Annotate($1,ner,"QUANTITY"),
result: "QUANTITY"
}
POS标签:
(ROOT (NP (NP (DT The) (NN No.) (CD 3) (NN vehicle) (NN seller)) (PP (IN in) (NP (NP (DT the) (NNP United) (NNPS States)) (PP (IN behind) (NP (NP (NNP General) (NNPS Motors) (NNP Co)) (PRN (-LRB- -LRB-) (NP (NNP GM.N)) (-RRB- -RRB-)) (CC and) (NP (NNP Ford) (NNP Motor) (NNP Co)) (PRN (-LRB- -LRB-) (NP (NNP F.N)) (-RRB- -RRB-)))))) (, ,) (NP (NP (NNP Toyota) (NNS imports)) (NP (NP (QP (CD 1.2) (CD million)) (NNS vehicles)) (TO to) (NP (NP (DT the) (NNP U.S.) (NN market)) (ADVP (RB annually))))) (, ,) (NP (NP (NN half)) (PP (IN of) (NP (PRP$ its) (ADJP (CD 2.4) (CD million)) (NNP U.S.) (NNS sales)))) (. .)))