NER, использующий библиотеку Spacy, не дает правильного результата в анализаторе резюме - PullRequest
1 голос
/ 27 января 2020

Я использую распознавание именованных лиц SpaCY для извлечения Имени, Организации и др. c из резюме. Вот мой 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_) 

Если я увижу вывод, он выглядит не очень хорошо. Имя не указано правильно. Фамилия считается именем организации, Дубай считается персоной и т. Д.

enter image description here

Вот снимок резюме, которое я получил от publi c набор данных.

Я хочу извлечь имя кандидата, организацию, местоположение и т.д. c из набора резюме. Когда я читаю документацию, она говорит, что точность составляет более 95% при использовании spaCy. Однако в моем случае это не так. Есть ли способ повысить точность извлечения признаков?

enter image description here

1 Ответ

4 голосов
/ 27 января 2020

Модель spaCy NER обучается в корпусе OntoNotes, который представляет собой набор телефонных разговоров, лент новостей, групп новостей, новостей трансляции, трансляции разговоров и блогов. Все эти типы текстов в основном содержат полные предложения, которые сильно отличаются от резюме, на котором вы тренируетесь. Например, сущность «Дубай» не имеет грамматического контекста, окружающего ее, что делает очень трудным для этой конкретной модели распознавать ее как местоположение. Он привык видеть такие предложения, как "... когда он путешествовал в Дубае, ...". В целом, производительность машинного обучения всегда связана с конкретной проблемной областью c, на которой вы обучаетесь и оцениваете свои модели.

Вы можете попробовать запустить ее с en_core_web_md или en_core_web_lg, которые работают незначительно лучше для OntoNotes, но он все равно не будет хорошо работать с указанными вами c текстами доменов.

Чтобы попытаться улучшить точность, я бы порекомендовал дополнительно усовершенствовать существующую модель, аннотируя набор резюме самостоятельно, и подача этих тренировочных данных обратно в модель. Смотри документацию здесь . Однако я не уверен, насколько хорошо это будет работать, потому что, как я уже сказал, резюме сложнее, потому что в них меньше контекста из предложений.

...