【发布时间】:2012-10-19 07:53:37
【问题描述】:
我有一些法语文本需要以某种方式处理。为此,我需要:
- 首先,将文本标记为单词
- 然后对这些词进行词形还原以避免多次处理同一个词根
据我所知,NLTK 中的 wordnet lemmatizer 仅适用于英语。当我给它“voudrais”等时,我想要一些可以返回“vouloir”的东西。由于撇号,我也无法正确标记。任何指针将不胜感激。 :)
【问题讨论】:
标签: python nltk lemmatization
我有一些法语文本需要以某种方式处理。为此,我需要:
据我所知,NLTK 中的 wordnet lemmatizer 仅适用于英语。当我给它“voudrais”等时,我想要一些可以返回“vouloir”的东西。由于撇号,我也无法正确标记。任何指针将不胜感激。 :)
【问题讨论】:
标签: python nltk lemmatization
我找到的最好的解决方案是 spacy,它似乎可以完成这项工作
安装:
pip3 install spacy
python3 -m spacy download fr_core_news_md
使用方法:
import spacy
nlp = spacy.load('fr_core_news_md')
doc = nlp(u"voudrais non animaux yeux dors couvre.")
for token in doc:
print(token, token.lemma_)
结果:
voudrais vouloir
non non
animaux animal
yeux oeil
dors dor
couvre couvrir
查看文档了解更多详情:https://spacy.io/models/fr && https://spacy.io/usage
【讨论】:
如果你在法国银行做文本挖掘项目,我推荐cltk包。
install cltk
from cltk.lemmatize.french.lemma import LemmaReplacer
更多详情在cltk
【讨论】:
如果您要对文本执行机器学习算法,则可以使用 n-gram 代替单词标记。它不是严格的词形还原,但它可以检测一系列 n 个相似的字母,并且收集具有相同含义的单词非常强大。
我使用 sklearn 的函数CountVectorizer(analyzer='char_wb'),对于一些特定的文本,它比词袋更有效。
【讨论】:
Here 是 nltk 开发人员的旧但相关的评论。看起来 nltk 中最高级的词干分析器都是特定于英语的:
nltk.stem 模块目前包含 3 个词干分析器:Porter 词干分析器、兰开斯特词干分析器和基于正则表达式的 词干分析器。 Porter 词干分析器和 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 了解当前的正则表达式文档。
最近添加的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'
如您所见,有些结果有点可疑。
不是你所希望的,但我想这是一个开始。
【讨论】:
也许使用 TreeTagger ?我没试过,但这个应用程序可以在法语中运行
http://www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/
http://txm.sourceforge.net/installtreetagger_fr.html
【讨论】: