2017-09-26 15 views
1

고유 주제 도메인의 영어 텍스트에 대해 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 디스크의 새 폴더에 명시 적으로 복사해야합니까?

일단 작동하면,이 작은 프로젝트 (하나의 클래스)를 동료가 설치할 수있는 파이썬 달걀로 포장하기를 원합니다. 이상적으로는 디스크에 파일을 옮기는 추가 설치 후 명령을 실행하도록 요구해서는 안됩니다.

답변

0

docs에서, 당신과 같이 링크를 만들 수 있습니다

python -m spacy link en_core_web_md en_mydomain 

이는 그래서 파일이 복사되지 않습니다 심볼릭 링크를 생성하고 즉시 완료됩니다.

+1

모델을 성공적으로로드하지만'spacy.load'도 중단됩니다. 나는 이것을 https://github.com/explosion/spaCy/issues/1366에서보고했다. 너의 것이 아마도 정답 일지 모르지만 그 GH 문제에 대한 후속 조치를 기다릴 수도있다. 다르게. –

+0

'spacy package'로 사용자 정의 언어를 만들고,'meta.json'을 명시 적으로 오버라이드하여 새로운 언어 이름을 참조하는 것이 가장 좋습니다. –