アイソモカ

知の遊牧民の開発記録

開発記録 191012 Sat (100本ノック #040, CaboCha入れたけどなんか変…じゃなかった)

台風が来て、Amazon Prime Music で「そこに鳴る」などを流しながら、洗濯や部屋の片付けをした。

久しぶりに python でなんか書いたり自然言語処理の勉強をしようと思って、PCの中を見てみたところ、どうやら自然言語処理100本ノックは(飛び飛びではあるが) 39 までやったっぽい。なんや忘れてもうてるとこも多いけど、続きからやってみよう。

python自然言語処理、計量言語の勉強のフォルダを見ていたら、ファイルの日付が2017年11〜12月のと2018年9月〜10月のがあって、どうやら秋から冬が旬っぽい。

やったこと

Cabocha を使う準備

Mac に CaboCha をインストールした。

$ brew install git curl xz
$ brew install crf++
$ brew install cabocha

それから、Python でも使えるようにする。

$ git clone https://github.com/taku910/cabocha.git
$ cd cabocha
$ pip install python/

準備はできたけど、使い方はむずかしそうですね。

自然言語処理100本ノック 第5章

第5章: 係り受け解析

夏目漱石の小説『吾輩は猫である』の文章(neko.txt)をCaboChaを使って係り受け解析し,その結果をneko.txt.cabochaというファイルに保存せよ.このファイルを用いて,以下の問に対応するプログラムを実装せよ.

40. 係り受け解析結果の読み込み(形態素

形態素を表すクラスMorphを実装せよ.このクラスは表層形(surface),基本形(base),品詞(pos),品詞細分類1(pos1)をメンバ変数に持つこととする.さらに,CaboChaの解析結果(neko.txt.cabocha)を読み込み,各文をMorphオブジェクトのリストとして表現し,3文目の形態素列を表示せよ.

CaboCha を立ち上げて文を入力すると、解析結果がツリーっぽく表示される。 -f1 オプションを使うと、ツリーの枝に番号が振られる。こっちのほうが計算機で読むのに便利。 なので、txt を CaboCha 処理済みファイルに変換

$ cat neko.txt | cabocha -f1 > neko.txt.cabocha

さて、「吾輩は猫である」を読みましょう。

と思ったんだけど

# 公式サンプル
% cabocha
太郎は花子が読んでいる本を次郎に渡した
    太郎は---------D
      花子が-D     |
    読んでいる-D   |
            本を---D
            次郎に-D
              渡した
EOS

# 僕の実行結果
$ cabocha
太郎は花子が読んでいる本を次郎に渡した
        太郎は-----D
          花子が---D
    読んでいる本を-D
        次郎に渡した
EOS

おかしい。文節ごとに切れていない。うまくいっていなかった。

追記:解決は翌日

追記の追記(191124):形態素解析用の辞書による。 ipadic を使用すると公式サンプルと同じ結果になり、unidic を使用すると僕の結果になる。