最近,我将spacy中用于NER的模型从en_core_web_md转换为xx_ent_wiki_sm.。
我注意到,新模式总是承认完整的大写词,如新泽西或纽约作为组织。我将能够提供培训数据,以重新培训模型,尽管这将是非常耗时的。然而,我不确定该模型是否会放松大写单词是组织的假设,或者它是否会保留假设,并为其创造一些例外。它是否甚至会学到,每一个大写的大写字母少于5个字母,都很可能是一个组织,而所有字母更多的都不可能?我只是不知道训练到底会对模型产生什么影响
en_core_web_md似乎能很好地处理缩略语,而忽略了像新泽西这样的词。然而,xx_ent_wiki_sm的总体性能更适合我的用例。
我之所以这样问,是因为这样的假设仍然非常有用,因为它允许我们将诸如IBM这样的缩略语识别为一个组织。
发布于 2017-11-20 09:44:46
xx_ent_wiki_sm模型是在维基百科上进行培训的,因此它非常偏向维基百科所考虑的内容和实体,以及数据中常见的内容。(它还经常将“我”作为一个实体来识别,因为在维基百科中,第一人称的句子非常罕见。)因此,有更多例子的培训绝对是一个好策略,你想要做的事情听起来是可行的。
防止模型“忘记”大写实体的最佳方法是始终包含模型以前在培训数据中正确识别的实体的示例(参见:“灾难性遗忘问题”)。好的是,您可以通过在一堆文本上运行spaCy并提取大写实体来以编程方式创建这些实体:
uppercase_ents = [ent for ent in doc.ents if all(t.is_upper for t in ent)]有关如何使用本节创建培训数据的更多示例,请参见spaCy。您还可以使用spaCy生成所选实体的小写和标题变体,以引导您的培训数据,这有望为您节省大量时间和工作。
https://stackoverflow.com/questions/47388438
复制相似问题