LoginSignup
1
1

More than 3 years have passed since last update.

GiNZAで機械分析入門してみました

Posted at

いままでMeCabを使っていたのですが、この度GiNZAに入門したので備忘録的なやつを書いときます。

GiNZAとはなんぞや

欧米で有名な自然言語処理ライブラリであるspaCyの日本語版(超ざっくり)
係り受け解析とか形態素解析とか色々できるっぽいです

環境

Python 3.6.5
pip 21.0.1
Mac Catalina

環境構築

今回は仮想環境にGiNZAをinstallして動かしていこうと思います。
ひとまず適当なフォルダをつくって

$ mkdir sample
$ cd sample

venvで仮想環境を構築して中に入ります。

 $ python -m venv venv
 $ source venv/bin/activate

pipをアップデートして、Ginzaをインストールします。

 (venv)$ pip install --upgrade pip
 (venv)$ pip install -U ginza

インストールが完了したら念のため確認します。

 (venv)$ pip list
 ・
 ・
 dartsclone         0.9.0
 ginza              4.0.5
 idna               2.10
 ・
 ・

ちゃんと入ってますね!!

動かしてみる

さっそくスクリプト書いて形態素解析してみましょう。
今回は百人一首のあの有名な歌を解析してみます

sample.py
import spacy

nlp = spacy.load('ja_ginza')
doc = nlp('秋の田の 仮庵の庵の 苫をあらみ わが衣手は 露にぬれつつ')

for sent in doc.sents:
    for token in sent:
        print(token.i, token.orth_, token.lemma_, token.pos_, 
              token.tag_, token.dep_, token.head.i)

結果がこちらです

(venv)$ python sample.py
0 秋 秋 NOUN 名詞-普通名詞-副詞可能 nmod 2
1 の の ADP 助詞-格助詞 case 0
2 田 田 NOUN 名詞-普通名詞-一般 nmod 6
3 の の ADP 助詞-格助詞 case 2
4     X 空白  3
5 仮 仮 NOUN 名詞-普通名詞-一般 compound 6
6 庵 庵 NOUN 接尾辞-名詞的-一般 nmod 8
7 の の ADP 助詞-格助詞 case 6
8 庵 庵 NOUN 名詞-普通名詞-一般 nmod 11
9 の の ADP 助詞-格助詞 case 8
10     X 空白  9
11 苫 苫 NOUN 名詞-普通名詞-一般 obj 13
12 を を ADP 助詞-格助詞 case 11
13 あら あり VERB 動詞-非自立可能 acl 18
14 み み NOUN 接頭辞 aux 13
15     X 空白  14
16 わが わが DET 連体詞 amod 17
17 衣 衣 NOUN 名詞-普通名詞-一般 nmod 18
18 手 手 NOUN 名詞-普通名詞-助数詞可能 ROOT 18
19 は は ADP 助詞-係助詞 case 18
20     X 空白  19
21 露 露 NOUN 名詞-普通名詞-一般 obl 23
22 に に ADP 助詞-格助詞 case 21
23 ぬれ ぬれる VERB 動詞-一般 ROOT 23
24 つつ つつ SCONJ 助詞-接続助詞 mark 23

一応解析できてますね!!
ただ、「仮庵」とか「衣手」は一つの形態素として抽出してほしかったのですが、うまくいってないみたいです...
MeCabと同様辞書登録が必要かもしれません。
とはいえ、特定の品詞に絞って抽出とかもできそうで色々と可能性を感じますねー!

ざっくりでしたが今回はここまでです。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1