わかち書き、とは
日本語の文は、単語と単語の間に空白(ホワイトスペース)がありません。
- 吾輩は猫である。
一方で英語の文は、単語と単語を空白で区切ります。
- I am a cat.
コンピュータで処理する上で、単語という単位が明確である方が色々な応用ができるので、
日本語の文でも単語と単語の間を空白で区切る必要があります。
そこで生まれたのが形態素解析器MeCabです。(作者はGoogleの工藤さん。NLP2018でも形態素解析のセッションで登壇されていました)
正確には形態素とは単語以下の単位の「意味を担う最小の言語単位」なのですが……とにかく使ってみましょう。
MeCabを通すと、上記の日本語文でも
- 吾輩 は 猫 で ある 。
と単語ごとに分解されるようになります。
MeCabのインストールの手順
環境設定
Ubuntu16.04で行います。
3行でMeCabをインストール
エラーが出る場合は、sudo apt updateなどを実行してみてください。
sudo apt install mecab
sudo apt install libmecab-dev
sudo apt install mecab-ipadic-utf8
実行結果の確認
$ echo "吾輩は猫である。" | mecab -O wakati
吾輩 は 猫 で ある 。
Future Work
単語、という単位ではなく、tokenという単位を用いる手法も考案されています。
これは複数の単語が持つ文字をtokenという単位で共有することで、辞書サイズを減らせる特徴があります。
Google NMTの論文ではword piece、他にbytes pair encoding(BPE)などと呼ばれている手法です。
品詞に頼る必要のない場面では形態素解析器によるわかち書きではなく、BPEが使われるようになるのではないかと思われます。