2017-02-23 8 views
10

덴마크어 WordNet의 .txt 파일이 있습니다. NLTK와 같은 Python 용 NLP 라이브러리에서 이것을 사용할 수 있습니까? 그렇지 않다면, 주어진 라이브러리가 지원하지 않는 언어로 어떻게 자연어 처리를 할 수 있습니까? 또한 spaCy와 같은 라이브러리에서 영어 또는 네덜란드어 이외의 언어로 명명 된 엔티티 인식을 수행하려고한다고 가정 해보십시오. 이 일을 할 수있는 방법이 있습니까?자신의 WordNet을 라이브러리에 추가 할 수 있습니까?

+1

짧은 대답 : 할 수 없습니다. API는 지원하는 기능 만 지원합니다 (스파이의 가장 큰 단점 중 하나입니다). 긴 대답은, 당신이 정말로하고있는 것을 정말로 알고 있다면 잠재적으로 소스를 직접 편집 할 수 있다고 생각합니다. – spicypumpkin

+0

@Posh_Pumpkin, 그건 맞지 않아. 공개 소스 프로젝트이기 때문에 API를 확장 할 수 있습니다. https://github.com/nltk/nltk/pull/1621을 참조하십시오. 'spacy'에 대해서조차도, @honnibal과 @ines가 기여를 권장한다고 믿습니다 : https://github.com/explosion/spaCy/blob/master/CONTRIBUTING.md – alvas

+0

@alvas 글쎄, 네. 소스를 편집하는 것으로 간주하지 않습니까? 나는 그것이 OP가 원하는 정확히는 아니라고 확신한다. – spicypumpkin

답변

3

NLTK와 같은 Python 용 NLP 라이브러리와 함께이 방법을 사용할 수 있습니까?

NLTK로이 작업을 수행 할 수 있지만 조금 어색합니다.

WordNet 코퍼스를 간단한 탭 구분 형식 인 Open Multilingual Wordnet 형식으로 변환해야합니다. 그들은 이미 덴마크어 WordNet을 가지고 있습니다.

그런 다음 NLTK에 WordNet 및 Open Multilingual Wordnet Corpora를 설치해야합니다. 그러면 각 언어 파일의 하위 디렉토리가있는 ~/nltk_data/corpora/omw/과 같은 디렉토리가 만들어집니다.

~/nltk_data/corpora/omw/xxx/wn-data-xxx.tab 

xxx 아무것도 할 수 있지만, 두 곳에서 동일해야합니다 : 당신은 그것을위한 디렉토리를 생성하고이 같은 파일 이름을 지정하여 코퍼스를 추가해야합니다. 이 파일 이름 패턴은 NLTK here에 하드 코딩되어 있습니다.

그런 다음 xxxlang 매개 변수로 지정하여 WordNet을 사용할 수 있습니다. 여기에 예를 들어 from the documentation입니다 :

주어진 라이브러리에서 지원하지 않는 언어로 자연 언어 처리에 대해 갈 수있는 방법을
>>> wn.synset('dog.n.01').lemma_names('ita') # change 'ita' to 'xxx' 
['cane', 'Canis_familiaris'] 

?

나는 이것을 자주 일본어로했다.

일부 기술은 토큰 내부를 조사합니다. 즉, 단어가 "말"또는 "be"또는 무엇인지 확인합니다. 분명한 이유 때문에 줄기와 구호기를 사용하는 것이 일반적입니다. 일부 시스템에서는 특정 언어 (대개 영어)로 품사가 상호 작용하는 방식에 대한 가정 ( )에 기반한 규칙을 사용합니다. 은 이러한 기대치를 사용자의 언어로 번역 할 수 있지만 일반적으로 은 사용할 수 없습니다.

그러나 많은 유용한 기술은 사용자의 토큰을 전혀 보지 않습니다. 은 두 개의 토큰이 동일한 지의 여부 만 신경 써야합니다. 주로 라벨 또는 배열 데이터와 같은 기능이 주로 에 의존합니다. 데이터를 미리 토큰 화해야 할 수도 있고, 위키피디아의 일반 언어 모델을 언어로 교육 할 수도 있지만 그게 전부입니다. 단어 벡터, NER, 문서 유사성은 언어 지원 부족이 일반적으로 문제가되지 않는 예로 문제입니다.

또한 spaCy와 같은 라이브러리에서 영어 또는 네덜란드어 이외의 언어로 명명 된 엔티티 인식을 수행하려고한다고 가정 해보십시오. 이 일을 할 수있는 방법이 있습니까?

SpaCy는 NER에 대해 custom labelling의 의미를 제공합니다. 과 함께 사용하면 지원되지 않는 언어가 문서화되지 않고 조금 까다 롭습니다. 그러나 NER에 전체 언어 모델이 필요하지 않으므로 NER 특정 도구를 사용하여 레이블이 지정된 예제를 사용할 수 있습니다.

He  PRP B-NP 
reckons VBZ B-VP 
the  DT B-NP 
current JJ I-NP 
account NN I-NP 
deficit NN I-NP 
will  MD B-VP 
narrow VB I-VP 
to  TO B-PP 
only  RB B-NP 
#   # I-NP 
1.8  CD I-NP 
billion CD I-NP 
in  IN B-PP 
September NNP B-NP 
.   . O 

He  PRP B-NP 
reckons VBZ B-VP 
.. 

형식의이 종류는 여러 가지 CRF 또는 다른 NER 툴에 의해 지원됩니다

다음은 CoNLL 형식을 기반으로 CRF++에 대한 몇 가지 예를 들어, 훈련 데이터입니다. CRFSuite는 Python wrapper입니다.

이러한 종류의 데이터의 경우 알고리즘은 실제로 첫 번째 열의 내용을 신경 쓰지 않으므로 언어 ​​지원은 문제가되지 않습니다.

희망 하시겠습니까?