Aka*_*ash 1 python nlp named-entity-recognition spacy ner
我正在使用 SpaCY 的命名实体识别从简历中提取名称、组织等。这是我的python代码。
import spacy
import PyPDF2
mypdf = open('C:\\Users\\akjain\\Downloads\\Resume\\Al Mal Capital_Nader El Boustany_BD Manager.pdf', mode='rb')
pdf_document = PyPDF2.PdfFileReader(mypdf)
first_page = pdf_document.getPage(0)
nlp = spacy.load('en_core_web_sm')
text = first_page.extractText()
doc = nlp(text)
for ent in doc.ents:
print(ent.text, ent.label_)
Run Code Online (Sandbox Code Playgroud)
如果我看到输出,它看起来不太好。名称未正确识别。姓氏被视为组织名称,迪拜被视为人名等。
这是我从公共数据集获取的简历快照。
我想从一组简历中提取候选人姓名、组织、地点等。当我阅读文档时,它说使用 spaCy 的准确率超过 95%。但是在我的情况下不是。有什么办法可以提高特征提取的准确率吗?
spaCy NER模型是在 OntoNotes 语料库上训练的,该语料库是电话对话、新闻专线、新闻组、广播新闻、广播对话和网络日志的集合。这些类型的文本都主要包含完整的句子,这与您正在培训的简历有很大不同。例如,实体“Dubai”没有围绕它的语法上下文,这使得该特定模型很难将其识别为一个位置。它习惯于看到诸如“......当他在迪拜旅行时,......”之类的句子。通常,机器学习性能始终与您正在训练和评估模型的特定问题领域相关。
您可以尝试使用en_core_web_md或en_core_web_lg在 OntoNotes 上性能稍好的运行它,但在您的特定域文本上仍然表现不佳。
为了尝试提高准确性,我建议通过自己注释一组简历来进一步完善现有模型,并将该训练数据反馈到模型中。请参阅此处的文档。然而,我不确定这会有多好,因为就像我说的那样,简历更难,因为它们的句子上下文较少。