これはおよそあまりにも何度も話をしており、コンセンサスが常にある:簡単な正規表現を使用して処理することへの道が複雑すぎます。ソリューションのすべては、これらの例で失敗:あなたはPythonのソリューションをしたい場合は、私がお勧め
cat test.txt | ./morpha -c
apple
carrot
process
process
tennis
:
今
git clone https://github.com/knowitall/morpha
cd morpha/
flex -i -Cfea -8 -omorpha.yy.c morpha.lex
gcc -o morpha morpha.yy.c
curl -s https://raw.githubusercontent.com/jhlau/predom_sense/master/lemmatiser_tools/morpha/verbstem.list > verbstem.list
テストに:
apples
carrots
process
processes
tennis
ソリューションはmorphaを使用することですあなたはnltk
に行く。
virtualenv env-nltk
source env-nltk/bin/activate
pip install nltk
python -c "import nltk; nltk.download()" # <- just get the whole thing, click "all" and then "download" on the "collections" tab
今はすべてがダウンロードされていることを、python
をオフに解雇し、それを再生することができます。
>>> from nltk.stem.wordnet import WordNetLemmatizer
>>> lmtzr = WordNetLemmatizer()
>>> lmtzr.lemmatize('apples')
u'apple'
>>> lmtzr.lemmatize('tennis')
'tennis'
>>> lmtzr.lemmatize('process')
'process'
>>> lmtzr.lemmatize('processes')
u'process'
いくつかのコードを追加して下さい –
参照[*パイソンパターンsingularize *に用語を追加するには良い方法](http://stackoverflow.com/questions/23586591/good-way-to-add-terms-to -python-pattern-singularize) –
Regexはこの問題の良い解決策ではありません。Pythonベースのソリューションの最善の策は 'ntlk'です。 –