【发布时间】:2021-07-08 16:04:38
【问题描述】:
我正在尝试使用 spaCy 从这样的字符串中提取信息:GENERAL SYSTEM INFORMATION: 194V MAX DC VOLTAGE MODULES: (19) phonosolar PS310M-24/T 10.36A MAX POWER CURRENT,但并非完全像这样。其中的重要实体是19: EQUIP_QUANTITY、phonosolar: EQUIP_MANF 和PS310M-24/T: EQUIP_MODELNO。然而,在像这样的大型数据集(10k)样本上训练它的结果不是很好,它对许多实体进行了错误分类。它说未对齐的实体将被视为“-”但是,当查看 offset_to_biluo_tags 输出时没有这样的条目,只有 O 实体和其他标记的实体(B_EQUIP_QUANTITY、I_EQUIP_QUANTITY 等)。当我初始化训练样本并使用以下代码将它们转换为示例对象时,会出现此警告。
for thing in tqdm(data):
try:
words = thing['text'].split(" ")
spaces = None
doc = Doc(nlp.vocab, words=words, spaces=spaces)
ex = Example.from_dict(doc, {"words":words,"entities":thing['entities']})
TRAIN_DATA.append(ex)
except:
print("failure")
其中 thing['text'] 类似于前面提到的字符串,而 thing['entities'] 是元组形式的实体列表(startIndex、endIndex(不包括)、类型)
编辑:我之所以不采用基于规则的方法,而是采用分类/实体识别,是因为在这种情况下,基于规则的方法是不可维护的,有很多制造商有多种格式,有很多型号许多格式,我希望 spacy 能够了解这些细微差别。
【问题讨论】:
-
我对你的问题有点困惑。您是否真的收到有关未对齐实体的警告,或者“它说”是指文档吗?当你说它犯了很多错误时,有多少?您的准确度/精度/fscore 是多少?