スペイン語向けの自然言語処理
スペイン語の単語解析をしたくてやってみたら思ったよりも苦戦したので、忘備録を残しておきます。
やりたいことは、文章が与えられた時に単語毎に品詞と(動詞なら)原型を取得するだけです。
一番楽そうなpythonで、一番簡単そうなspaCyで行う場合のメモです。
インストール
環境によってコマンドが変わりますが、基本的にインストールガイドのコマンドをコピペするだけで動くと思います。
(Install spaCy:https://spacy.io/usage#quickstart)
windowsのcpu版で軽量モデルなら下記の通り。
pip install -U pip setuptools wheel
pip install -U spacy
python -m spacy download es_core_news_sm
使い方
あまり悩まずにすみそうなサンプルにしてみました。
import spacy
nlp = spacy.load("es_core_news_sm")
sentences = u"Hola ¿Que Tal?"
for w in nlp(sentences):
print(f'text:{w.text}, pos:{w.pos_}, tag:{w.tag_}, lemma:{w.lemma_}')
実行結果
text:Hola, pos:PROPN, tag:PROPN, lemma:Hola
text:¿, pos:PUNCT, tag:PUNCT, lemma:¿
text:Que, pos:SCONJ, tag:SCONJ, lemma:Que
text:Tal, pos:PRON, tag:PRON, lemma:tal
text:?, pos:PUNCT, tag:PUNCT, lemma:?
完成!
最初は一番有名なNLTKでやろうとしたらSnowballStemmerが必要だとかで案外と手間がかかりそうで、Stanford CoreNLPでやろうとしたらやたらとファイルサイズが大きくて結局spaCyが一番楽で速かった。
使い道としては好きなスペイン語の歌の歌詞を解析して辞書保存しておけば、単語を調べるときに知ってる歌から引用が出来るツールが出来そうだなぁーと思っています。
著作権的に不可能なアプリは自作が一番。