我对机器学习和Python非常陌生,非常感谢任何关于这个问题的帮助。我已经使用Prodigy(基于en_core_web_lg)训练了一个NER模型,并将模型保存到了我的虚拟环境中:
我在Windows 10上使用CONDA/VSCODE,SpaCy 2.x环境,现在我正在尝试加载一个看起来像这样的逗号分隔的CSV文件:
nlp = spacy.load("en_core_web_lg", disable=["ner"]) #移除基础模型的NER
print(nlp.pipe_names) #检查是否已移除
nlp_entity = spacy.load("tmp_model", vocab=nlp.vocab) #加载我的临时模型
nlp.add_pipe(nlp_entity.get_pipe("ner")) #重新添加NER
print(nlp.pipe_names) #检查是否已重新添加
nlp.to_disk("./tmp_model2") #将组合保存为新模型名称
nlp=spacy.load("tmp_model2") #加载新模型
doc=nlp("这里的段落文本") #用这段文本测试模型,看看是否工作
print(doc.text)
for ent in doc.ents: #对于文档中的所有实体
print(ent.label_, ent.text) #获取标签和文本
从这里开始,我遇到了困境。我对自己说,我可以这样读取CSV文件:
input = pd.read_csv('myfile.csv') #通过Pandas读取CSV
doc=nlp(input['Text']) #查找CSV文件中的“Text”列,并为每一行运行模型
for ent in doc.ents:
print(ent.label_, ent.text)
TypeError: 参数’string’类型错误(期望str,得到Series)
我对Python非常非常陌生,但我认为我需要将Pandas数据框转换为字符串?如果是这样,我该如何做呢?
回答:
nlp
接受字符串作为输入,你的想法是正确的。
如果你想在一个段落上使用它,你可以这样做:
doc=nlp(input['Text'].values[0])
其中0
是段落的编号。