MeCab:めかぶ


アルバイト先で相変わらず文字コードに泣かされる日々。
文章と文章の内容を比較してその近似度を調べるプログラムを書いている。
アルゴリズムには「Local Sensitive Hashing(LSH)」というものを使う予定。

なのだが、そのアルゴリズムを適用する前段階。
生データを使いやすいよう整形する段階で既につまづいている。
データから文章をとってきて、必要な部分のみを切り出す。ここまではいい。
だが、その後に行う「形態素解析」これがクセモノだった。
正確には形態素解析などではなく、センテンスを分かち書きして自立語を原型に戻すだけなのだが、仕様ソフトが形態素解析ソフトなのでそう呼ぶことにする。

形態素解析とは文章を扱う言語屋の人々が行う3つの解析の第一段階だ。
文章はどういう仕組み・構造でなりたっているのか? それを知るため研究者は3つの解析を行う。
  1.  形態素解析
  2. 構文解析
  3. 意味解析
さらに「形態素解析」は日本語の場合3つの作業に分かれる。
  1.  単語分割(分かち書き
  2. 品詞付与
  3. 活用処理(原型に戻す)
正直この部分はTwitterで聞いた情報なのでききかじり。
というわけで、Python上でこういった処理をさせる必要がある。
そこで登場するのがMeCab
ちなみに構文解析するCabochaもある。Cabochaの形態素解析にはMeCabが使われている。

僕がバイト先でやっているのはこのMeCabによる形態素解析結果から、品詞の部分を抜き出しそれが自立語であるかどうかを判定して、自立語だったら原型を出力するというもの。
要するに文章を構成する主な単語を抜き出す作業だ。

最終的にはTwitterのデータを使って2億ツイートに対して文章近似度を求められるようにするらしい。規模が大きすぎて想像すらつかない。ツイートデータだけで何ギガもあるデータ(しかも分割・圧縮して)とか普通に生活してたらまず触れる機会がないだろう。
 データだけじゃない、いったいいくつあるんだと思うくらいのサーバ施設が潤沢だ。

研究室ってのはすごいところなんだなとつくづく思った。

しかし、それにしてもMeCab
実際言語屋泣かせなのではないだろうか。というか僕が泣かせられている。
MeCabにかける前はなんの問題もなかったのに、MeCabにかけて結果を出力すると文字化けしているというバグがどうあがいても直らない。
文字化けしているのは node.surface  (MeCabが分割した単語)。
それ以外の部分( node.feature )は正常なのに、単に分かち書きしただけのはずの部分が文字化けするというのもおかしな話だ。
原因はわかっていない。不思議なことに端末上で同じ文章を解析するとなんの問題もなく動く。
おそらく僕のコードかpythonとの連携のどちらかに問題があるのではないかとは思っている。
ここ数日ずっと取り組んできていたのだから、前者はないと信じたい。

そろそろ次の段階に進みたいとずっと思っている。