我尝试使用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)样本上对其进行训练的结果不是很好,它错误地分类了许多实体。它说,未对齐的实体将被视为“-”,但是,当查看偏移量到比洛标签输出时,没有这样的条目,只有o个实体和其他标记的实体(b_设备数量、i_设备数量等)。当我初始化训练样本并使用以下代码将它们转换为示例对象时,会出现此警告。
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(exclusive)、type)
编辑:我之所以不采用基于规则的方法,而是采用分类/实体识别方法,是因为基于规则的方法不可维护。在这种情况下,有很多制造商采用多种格式,有很多型号采用多种格式,我希望spacy能够了解这些细微差别。
1条答案
按热度按时间mlmc2os51#
如果没有完整的示例很难知道,但是如果您的实体跨度都基于字符偏移量,那么我会创建这样的示例,这样您就不会在参考文档中引入不必要的替代性基于空间的标记化:
在这里,它将使用来自的默认标记化
nlp
而不是空格分隔的标记,这可能有助于解决对齐错误。如果您的角色偏移与nlp.make_doc
标记边界,您仍然可以以未对齐结束,但是您只需要担心一个标记化,而不是两个。