2012-10-29 4 views
17

몇 가지 방법으로 처리해야하는 프랑스어 텍스트가 있습니다. 이를 위해, 나는 다음을 수행해야합니다프랑스어 텍스트 Lemmatize

  • 첫째, 두 번 이상 동일한 루트를 처리하지 않도록
  • 그런 다음 그 단어를 lemmatize 단어에 텍스트를 토큰 화

지금까지 내가 볼 수 있듯이, NLTK의 wordnet lemmatizer는 영어로만 작동합니다. 나는 "voudrais"를 줄 때 "vouloir"을 돌려 줄 수있는 무엇인가를 원한다. 아포스트로피 때문에 제대로 토큰을 만들 수 없습니다. 모든 포인터 크게 감사하겠습니다. :)

답변

11

Here은 nltk dev의 오래된 관련 코멘트입니다. 가장 진보 된 형태소 분석기와 같은 NLTK의 모든 영어 특정 같습니다

nltk.stem 모듈은 현재 3 개 형태소 분석기가 포함 포터 형태소 분석기, 랭커스터의 형태소 분석기 및 형태소 분석기를 기반으로하는 정규 표현식. Porter stemmer와 Lancaster stemmer는 모두 영어입니다. . 정규식 기반 스 트리머는 사용자가 원하는대로 정규식을 사용하도록 사용자 정의 할 수 있습니다. 따라서 정규식 스 트리머를 사용하여 영어 이외의 언어에 대해서 간단한 형태소 분석기를 작성할 수 있어야합니다. 프랑스어에 대한 예를 들어 :

from nltk import stem 
stemmer = stem.Regexp('s$|es$|era$|erez$|ions$| <etc> ') 

하지만 언어 별 정규 표현 자신을 마련 할 필요가 것입니다. 고급 모듈러의 경우 새 모듈을 추가하는 데 아마도 이 필요할 것입니다. (이것은 좋은 학생 프로젝트 수 있습니다.) 정규 표현식 형태소 분석기에 대한 자세한 내용은

: - 에드워드

http://nltk.org/doc/api/nltk.stem.regexp.Regexp-class.html

: 그가 제공하는 링크가 죽었 참조 현재 regexstemmer 설명서는 here입니다.

더 최근에 추가 된 은 프랑스어를 줄 수 있습니다. 테스트 해 보겠습니다 :

>>> from nltk.stem.snowball import FrenchStemmer 
>>> stemmer = FrenchStemmer() 
>>> stemmer.stem('voudrais') 
u'voudr' 
>>> stemmer.stem('animaux') 
u'animal' 
>>> stemmer.stem('yeux') 
u'yeux' 
>>> stemmer.stem('dors') 
u'dor' 
>>> stemmer.stem('couvre') 
u'couvr' 

약간의 결과가 있습니다.

당신이 원하는 것은 아니지만 시작일 것 같습니다.

+0

참이 영어 이외의 언어에 대한 형태소 분석기가 실망 없습니다 것

프랑스어

에서 작업 할 수 있습니다. 내가 실제로 끝내는 것은 구두점에 단어를 토큰 화 한 다음 나머지 한 문자로 된 기사 (예 : "l 앙상블"의 나머지 l)를 제거한 것입니다. 그런 다음 온라인에서 여러 게시물에 의해 참조 된 http://www.limsi.fr/Individu/anne/OLDlexique.txt에서 호스팅 된 단어와 해당 표제어 목록을 사용했습니다. 눈덩이 줄기가 너무 효과가있는 것처럼 보입니다. 감사합니다 Junuxx. :) – yelsayed

2

아마도 TreeTagger를 사용하고 있을까요? 나는 시도하지 않은 있지만,이 응용 프로그램은 http://www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/
http://txm.sourceforge.net/installtreetagger_fr.html

+0

gosh, treetaggers는 감독되지 않은 보조 정리를 제공합니다. 가능하면 가능하면 멀리 두는 것이 좋습니다. – alvas

+0

단어를 형태소 분석하기 위해 treetagger를 어떻게 사용하는지 알고 싶습니까? 내가 treetagger로 이해 한 것에서 우리는 단지 태그 단어를 pos 할 수 있습니다. – sel