2017-11-20 11 views
0

나는 최근에 내가 xx_ent_wiki_sm에을 en_core_web_md 에서 적응에 NER에 사용하는 모델을 투입합니다.명명 된 엔티티 인식 대문자 문제

새로운 모델은 NEW JERSEY (뉴욕) 또는 NEW YORK (뉴욕)과 같은 대문자 단어를 항상 조직으로 인식합니다. 나는 그것이 시간이 많이 걸릴지라도, 모델을 재교육하기 위해 훈련 데이터를 제공 할 수있을 것이다. 그러나 모델이 대문자 단어가 조직이라는 가정을 잃어 버리거나 대신 가정을 유지하고 그것에 대한 예외를 만들 것인지 여부는 확실하지 않습니다. 어쩌면 5 문자 미만의 단어를 가진 모든 대문자는 조직 일 가능성이 높고 글자가 많은 모든 것은 그렇지 않다는 것을 알 수 있습니까? 나는 정확히 정확하게 훈련이 모델에 어떤 영향을 미치는지 알지 못한다.

en_core_web_md는 NEW JERSEY와 같은 단어를 무시하면서 두문자어로 잘 처리된다. 그러나 xx_ent_wiki_sm의 전반적인 성능은 내 유스 케이스에 더 좋습니다

전제는 매우 유용합니다. IBM이 조직과 같은 두문자어를 식별 할 수 있기 때문입니다.

답변

2

xx_ent_wiki_sm 모델은 Wikipedia에서 교육을 받았으므로 Wikipedia에서 고려하고있는 항목과 데이터에서 공통적 인 점에 대해 매우 편파적입니다. (첫 번째 사람의 문장은 Wikipedia에서 매우 드물기 때문에 "I"를 엔터티로 자주 인식하는 경향이 있습니다.) 따라서 더 많은 예제를 사용한 사후 교육은 확실히 좋은 전략이며 가능한 일은 실현 가능합니다 .

모델이 대문자 엔티티에 대해 "잊어 버리지"않게하는 가장 좋은 방법은 모델이 이전에 교육 데이터에서 올바르게 인식 한 엔티티의 예를 포함하는 것입니다 ("catastrophic forgetting problem" 참조). 좋은 점은 대문자 엔티티를 텍스트의 무리에 걸쳐 적응 실행 추출 프로그램들을 만들 수 있다는 것입니다 :

uppercase_ents = [ent for ent in doc.ents if all(t.is_upper for t in ent)] 

가 적응하여 훈련 데이터를 생성하는 방법에 관한 추가 예제 this section를 참조하십시오. 또한 spaCy를 사용하여 선택한 엔티티의 소문자 및 제목 케이스 변형을 생성하여 교육 데이터를 부트 스트랩하여 많은 시간과 노력을 절약 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 나는 이미 Spacy라는 500 개의 뉴스 기사를 가지고 훈련 할 수있다. 시간이 많이 소요되는 측면은 모두 500을 거쳐 잘못된 엔티티를 수동으로 수정하는 것입니다. 예 : ' 올리브 ;; B-ORG Branch ;; I-ORG 상담 ;; L-ORG has ;; O 최근 ;; O 출시 ;; O , ;; O 제공; O in ;; O - ;; O house ;; O 훈련 ;; O in ;; O ;; O 전문가 ;; O areas ;; O ; O mental ;; O 건강 ;; O , ;; O 감정적 ;; O 탄력성 ;; O' (en_core_web_md 모델을 기반으로합니다. 위키 모델과 동일한 열차 데이터 세트를 만듭니다) – Shadi

+1

아직 보지 않았다면 새로운 어노테이션 도구 인 Prodigy 현재 베타 버전입니다.) https://prodi.gy.에 대한 정확한 목적을 위해 설계되었습니다.spaCy와 완벽하게 통합되며 주석을 추가 할 때 업데이트되는 모델을로드 할 수 있으며 가장 관련성이 낮은 예, 즉 예측이 가장 적은 예제를 제안 할 수 있습니다. [이 페이지를 참조하십시오] (https://prodi.gy/docs/workflow-named-entity- 인식) 도구를 사용하여 spaCy의 NER 정확도를 수정하는 예를 참조하십시오. –