2012-10-29 14 views
17

Mam trochę tekstu po francusku, który muszę przetworzyć w pewien sposób. Do tego muszę:Lemmatize Francuski tekst

  • Najpierw tokenize tekst słowami
  • Następnie lemmatize te słowa, aby uniknąć przetwarzania sam rdzeń więcej niż raz

O ile mogę widać, wordmat lemmatizer w NLTK działa tylko z angielskim. Chcę czegoś, co może zwrócić "vouloir", kiedy dam to "voudrais" i tak dalej. Nie potrafię też poprawnie tokenizować z powodu apostrofów. Wszelkie wskazówki byłyby bardzo mile widziane. :)

Odpowiedz

11

Here 's stary, ale istotny komentarz przez dev nltk. Wygląda najbardziej zaawansowanych stemmers w NLTK są specyficzne angielskie:

Moduł nltk.stem obecnie zawiera 3 stemmery: Porter stemmer The stemmer Lancaster i wyrażeń regularnych opiera Stemmer. Łodyga Portera i łodyga Lancastera są specyficzne dla języka angielskiego. Trzpień bazujący na wyrażeniu regularnym można dostosować do , używając dowolnego wyrażenia regularnego, które chcesz. Więc powinieneś być w stanie napisać prosty łodygę dla języków innych niż angielski za pomocą trzpienia regexp. Na przykład, na francuski:

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

Ale trzeba by wymyślić języka specyficzne wyrażenia regularne samemu. W przypadku bardziej zaawansowanego trzpienia prawdopodobnie konieczne będzie dodanie , aby dodać nowy moduł. (Może to być dobrym uczniem projekt).

Aby uzyskać więcej informacji na temat Stemmer regexp:

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

-Edward

Uwaga: link daje on jest martwy, patrz here dla bieżącej dokumentacji regexstemmer.

Bardziej ostatnio dodany snowball stemmer wydaje się być w stanie powstrzymać francuski. Zróbmy test:

>>> 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' 

Jak widać, niektóre wyniki są nieco wątpliwe.

Nie do końca to, na co liczyliście, ale myślę, że to początek.

+0

tak to rozczarowujące, nie ma rdzeni dla non-angielski językach. w rzeczywistości udało mi się tokenizować słowa dotyczące interpunkcji, a następnie usunąłem wszystkie pozostałe jednoliterowe artykuły (np. pozostałe l w "l'ensemble" na przykład). Następnie wykorzystałem listę słów i odpowiadające im lemmaty, w szczególności tę umieszczoną pod adresem http://www.limsi.fr/Individu/anne/OLDlexique.txt, do której odwoływały się liczne posty online. Trzpień do kuli śnieżnej wygląda, jakby działał, dzięki Junuxx. :) – yelsayed

2

Może z TreeTagger? I nie spróbować, ale ta aplikacja może działać w francuski

http://www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/
http://txm.sourceforge.net/installtreetagger_fr.html

+0

Gosh, treetaggers dać nienadzorowane lematy, radziłbym trzymać się z dala od niego, jeśli to możliwe. – alvas

+0

Czy mogę wiedzieć, w jaki sposób używasz treetagger do wypowiadania słów? z tego co zrozumiałem dzięki treetaggerowi możemy po prostu pos tagować słowa. – sel

Powiązane problemy