【发布时间】:2020-07-08 07:28:30
【问题描述】:
我目前正在尝试使用 spacy 训练文本分类器,但遇到以下问题:使用 spacy.blank('en') 创建空白模型和使用预训练模型 spacy.load('en_core_web_sm') 之间有什么区别。只是为了看看我写这段代码的不同之处:
text = "hello everyone, it's a wonderful day today"
nlp1 = spacy.load('en_core_web_sm')
for token in nlp1(text):
print(token.text, token.lemma_, token.is_stop, token.pos_)
它给了我以下结果:
你好你好假INTJ
每个人都真正的代名词
, , 假打孔
它 -PRON- 真正的 PRON
是真正的辅助
一个真正的 DET
精彩绝伦的 False ADJ
day 假名词
today today 假名词
然后我尝试了这个(对于相同的文本)
nlp2 = spacy.blank('en')
for token in nlp2(text):
print(token.text, token.lemma_, token.is_stop, token.pos_)
结果是
你好你好假
每个人都是真的
, , 错误
它 -PRON- 真正的 PRON
是真的
真的
精彩绝伦的假
一天一天假
今天今天假
不仅结果不同(例如,'s 的引理不同),而且空白模型中的大多数单词也没有词性标注。
显然,我需要一个预训练模型来规范化我的数据。但我仍然不明白我的数据分类器应该如何处理。我应该 1) 为训练文本分类器创建一个空白模型(使用 nlp.update())并加载一个预训练模型来删除停用词、词形还原和 POS 标记,还是 2)只为两者加载一个预训练模型:规范化和训练我的文本分类器?
提前感谢您的任何建议!
【问题讨论】:
标签: python spacy text-classification