고유 주제 도메인의 영어 텍스트에 대해 NLP 작업에 SpaCy 작업을 사용하고 있습니다. 나는 SpaCy의 현존하는 영어 모델 (특히 나는 'en_core_web_md'
부터 시작)에 대한 점진적 개선을하고, 동료들에 의해 쉽게 재사용 할 수 있도록 패키지를 만들고 싶습니다.도메인 별 규칙을 사용하여 SpaCy English 모델을 확장하는 방법은 무엇입니까?
첫 번째 변경 사항은 토큰 라이저의 간단한 변경 사항입니다. 나는 사용자 정의 클래스를 정의하여 시작했습니다 :
class DomainSpecificEnglish(English.Defaults):
lang = 'en_mydomain'
class Defaults(English.Defaults):
# my custom changes the tokenizer here
spacy.util.set_lang_class(DomainSpecificEnglish.lang, DomainSpecificEnglish)
지금, 나는 en_core_web_md
의 Vocab의 워드 벡터를 계속 사용할 것 (나중에 나도이 다시 훈련 할 것이다). 하지만 SpaCy는 더 이상 "en"
이 아닌 lang
문자열을 통해 이러한 모델 파일을 찾습니다.
이미 구축 된 모델에 의존하는 도메인 별 "언어"하위 클래스를 만들려면 어떻게해야합니까? en_core_web_md
파일을 en_mydomain
디스크의 새 폴더에 명시 적으로 복사해야합니까?
일단 작동하면,이 작은 프로젝트 (하나의 클래스)를 동료가 설치할 수있는 파이썬 달걀로 포장하기를 원합니다. 이상적으로는 디스크에 파일을 옮기는 추가 설치 후 명령을 실행하도록 요구해서는 안됩니다.
모델을 성공적으로로드하지만'spacy.load'도 중단됩니다. 나는 이것을 https://github.com/explosion/spaCy/issues/1366에서보고했다. 너의 것이 아마도 정답 일지 모르지만 그 GH 문제에 대한 후속 조치를 기다릴 수도있다. 다르게. –
'spacy package'로 사용자 정의 언어를 만들고,'meta.json'을 명시 적으로 오버라이드하여 새로운 언어 이름을 참조하는 것이 가장 좋습니다. –