#python #spacy #named-entity-recognition #flair
#python #spacy #распознавание именованных объектов #талант
Вопрос:
При попытке преобразовать формат набора данных spaCy NER в формат Flair, используя этот код:
from spacy.gold import biluo_tags_from_offsets
nlp = spacy.load("en_core_web_md")
ents = TRAIN_DATA
with open("flair_ner.txt","w") as f:
for sent,tags in ents:
doc = nlp(sent)
biluo = biluo_tags_from_offsets(doc,tags['entities'])
for word,tag in zip(doc, biluo):
f.write(f"{word} {tag}n")
f.write("n")
Я испытываю ошибку перекрытия:
ValueError: [E103] Trying to set conflicting doc.ents: '(1155, 1199, 'Email Address')' and '(1143, 1240, 'Links')'. A token can only be part of one entity, so make sure the entities you're setting don't overlap.
Вот пример:
[('Afreen JamadarnActive member of IIIT Committee in Third yearnnSangli, Maharashtra - Email me on Indeed: indeed.com/r/Afreen-Jamadar/8baf379b705e37c6nnI wish to use my knowledge, skills and conceptual understanding to create excellent teamnenvironments and work consistently achieving organization objectives believes in taking initiativenand work to excellence in my work.nnWORK EXPERIENCEnnActive member of IIIT Committee in Third yearnnCisco Networking - Kanpur, Uttar Pradeshnnorganized by Techkriti IIT Kanpur and Azure Skynet.nPERSONALLITY TRAITS:n• Quick learning abilityn• hard workingnnEDUCATIONnnPG-DACnnCDAC ACTSnn2017nnBachelor of Engg in Information TechnologynnShivaji University Kolhapur - Kolhapur, Maharashtrann2016nnSKILLSnnDatabase (Less than 1 year), HTML (Less than 1 year), Linux. (Less than 1 year), MICROSOFTnACCESS (Less than 1 year), MICROSOFT WINDOWS (Less than 1 year)nnADDITIONAL INFORMATIONnnTECHNICAL SKILLS:nn• Programming Languages: C, C , Java, .net, php.n• Web Designing: HTML, XMLn• Operating Systems: Windows […] Windows Server 2003, Linux.n• Database: MS Access, MS SQL Server 2008, Oracle 10g, MySql.nnhttps://www.indeed.com/r/Afreen-Jamadar/8baf379b705e37c6?isid=rex-downloadamp;ikw=download-topamp;co=IN',
{'entities': [(1155, 1199, 'Email Address'),
(1143, 1240, 'Links'),
(743, 1141, 'Skills'),
(729, 733, 'Graduation Year'),
(706, 728, 'Location'),
(675, 703, 'College Name'),
(631, 673, 'Degree'),
(625, 630, 'Graduation Year'),
(614, 623, 'College Name'),
(606, 612, 'Degree'),
(458, 479, 'Location'),
(438, 454, 'Companies worked at'),
(104, 148, 'Email Address'),
(62, 68, 'Location'),
(0, 14, 'Name')]}),
Комментарии:
1. В сообщении об ошибке указывается причина проблемы: токен может быть частью только одного именованного объекта.
2. Как устранить эту ошибку для всего набора данных?
3. Вам нужно будет написать скрипт, который фильтрует / объединяет / очищает ваши аннотации, прежде чем отправлять их в spaCy. В общем, перекрывающиеся сущности обычно указывают на несогласованную схему аннотаций. В данном конкретном случае кажется странным, что что-то может быть ССЫЛКОЙ и электронной почтой одновременно, например.
4. Есть ли простое в работе программное обеспечение для маркировки для формата Flair NER? так что даже HR могут помочь мне в этой задаче…
Ответ №1:
Распознаватель объектов ограничен для прогнозирования только неперекрывающихся, не вложенных> промежутков. Обучающие данные должны подчиняться одному и тому же ограничению. Если хотите, у вас может быть два предложения с разными аннотациями в ваших данных. Однако я не уверен, повредит ли это или поможет вашей производительности.
Из сообщения об ошибке я вижу, что диапазон для email
(начальный диапазон: 1155, конечный диапазон: 1199) и links
(начальный диапазон: 1143, конечный диапазон: 1240) перекрывается. Вам необходимо разрешить перекрывающиеся аннотации, прежде чем вы сможете использовать свой код.