斯坦福 NER 没有正确提取百分比

数据挖掘 命名实体识别 斯坦福-nlp
2022-03-17 13:16:10

我正在尝试使用斯坦福 NER 提取百分比。但它没有正确提取百分比。

import os
from nltk.tag import StanfordNERTagger
os.environ['CLASSPATH'] = 'stanford-ner-2015-12-09/stanford-ner.jar'
os.environ['STANFORD_MODELS'] = 'stanford-ner-2015-12-09/classifiers'

inp_str = 'total revenue received was one hundred and twenty five percent 125% for last financial year'
split_inp_str = inp_str.split()
st = StanfordNERTagger('english.muc.7class.distsim.crf.ser.gz')
print(st.tag(split_inp_str))

这给出了以下输出

[('total', 'O'), ('revenue', 'O'), ('received', 'O'), ('was', 'O'), ('one', 'O'), ('hundred', 'O'), ('and', 'O'), ('twenty', 'O'), ('five', 'PERCENT'), ('percent', 'PERCENT'), ('125%', 'O'), ('for', 'O'), ('last', 'O'), ('financial', 'O'), ('year', 'O')]

预期输出:

[('total', 'O'), ('revenue', 'O'), ('received', 'O'), ('was', 'O'), ('one', 'PERCENT'), ('hundred', 'PERCENT'), ('and', 'PERCENT'), ('twenty', 'PERCENT'), ('five', 'PERCENT'), ('percent', 'PERCENT'),('125%', 'PERCENT'), ('for', 'O'), ('last', 'O'), ('financial', 'O'), ('year', 'O')]

为什么它不提取125%或125 %

1个回答

查看您的代码,我认为其中没有任何错误。斯坦福 NER 标记器由条件随机场分类器建模,因此必然会出错。如果您能够检查大量样本并在此基础上计算准确度指标,那么您可能会很好地了解预训练模型是否对您有用。否则,我建议您使用训练自己的模型。斯坦福 NLP 小组提供了一个训练实现,您只需为其提供所需格式的数据。查看此博客以了解如何操作。