2012-10-29 8 views
17

У меня есть текст на французском языке, который мне нужно обработать в некотором роде. Для этого мне нужно:Лемматизировать французский текст

  • Во-первых, разметить текст на слова
  • Тогда lemmatize эти слова, чтобы избежать обработки одного корня несколько раз

Насколько я могу видеть, wordnet lemmatizer в NLTK работает только с английским. Я хочу что-то, что может вернуть «vouloir», когда я даю ему «voudrais» и так далее. Я также не могу точно обозначить из-за апострофов. Любые указатели будут очень благодарны. :)

ответ

11

Here - старый, но релевантный комментарий nltk dev. Похоже, большинство продвинутых парадигматическим в NLTK все английские конкретны:

Модуль nltk.stem в настоящее время содержит 3 парадигматическим: Портер стеммер, то стеммер Lancaster и регулярных выражений на основе стеммер. Стержень Портера и стюард Ланкастера являются английскими - . Регулятор на основе регулярных выражений может быть настроен на , используя любое регулярное выражение, которое вы хотите. Таким образом, вы должны иметь возможность писать простой стебельщик для неанглийских языков, используя штепсель регулярного выражения. Например, для французского:

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

Но вы должны придумать для конкретного языка регулярных выражений самостоятельно. Для более продвинутого стеблемера, возможно, потребуется добавить , чтобы добавить новый модуль. (Это может быть хорошим проект студента .)

Для получения дополнительной информации о регулярных выражениях стеммера:

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

Эдвард

Примечания: связь, которую он дает мертва, см here для текущей документации по regexstemmer.

Последний раз редактировалось snowball stemmer, Скажем так:

>>> 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, мы можем просто поместить тег-слова. – sel

Смежные вопросы