Word2VecとかするときにMeCab + NEologdを使って分かち書きする。だがインストールがやや面倒。Dockerを使って、手軽に分かち書きするツールを作った。

やりたいこと

  1. MeCab + NEologdで分かち書きする
  2. ディレクトリ構造を保つ
    Word2Vecで全テキストを1つにまとめてしまうときは問題ないが、Doc2Vecとかするときには1ファイルごとに分かち書きしたい。そのときディレクトリ構造を変えられると面倒なので、同じになるようにする。
    たとえば以下のような感じ。inputに分かち書きしたいファイルをディレクトリごと入れたら、その構造を保ったままoutputに結果が出る。
├── input
   ├── 1
   │   ├── 11
   │   │   └── c.txt
   │   └── b.txt
   ├── 2
   │   └── d.txt
   └── a.txt
└── output
     ├── 1
        ├── 11
        │   └── c.txt
        └── b.txt
     ├── 2
        └── d.txt
     └── a.txt

できたもの

sankaku/docker-mecab

実行例

./mount/input に上のツリー構造の通りファイルを入れる。中身はすべて同じで、NEologdにある例と同じにした。
そしてDockerイメージを作成し、 ./split.sh を実行。

入力

$ for f in `ls mount/input/**/*.txt`; do echo $f; cat $f; done
mount/input/1/11/c.txt
8月3日に放送された「中居正広の金曜日のスマイルたちへ」(TBS系)で、1日たった5分でぽっこりおなかを解消するというダイエット方法を紹介。キンタロー。のダイエットにも密着。
mount/input/1/b.txt
8月3日に放送された「中居正広の金曜日のスマイルたちへ」(TBS系)で、1日たった5分でぽっこりおなかを解消するというダイエット方法を紹介。キンタロー。のダイエットにも密着。
mount/input/2/d.txt
8月3日に放送された「中居正広の金曜日のスマイルたちへ」(TBS系)で、1日たった5分でぽっこりおなかを解消するというダイエット方法を紹介。キンタロー。のダイエットにも密着。
mount/input/a.txt
8月3日に放送された「中居正広の金曜日のスマイルたちへ」(TBS系)で、1日たった5分でぽっこりおなかを解消するというダイエット方法を紹介。キンタロー。のダイエットにも密着。

出力

$ for f in `ls mount/output/**/*.txt`; do echo $f; cat $f; done
mount/output/1/11/c.txt
8月3日 に 放送 さ れ た 「 中居正広の金曜日のスマイルたちへ 」( TBS 系 )  、 1日 たった 5分 で ぽっこり おなか を 解消 する という ダイエット方法 を 紹介 。 キンタロー。 の ダイエット に も 密着 。 
mount/output/1/b.txt
8月3日 に 放送 さ れ た 「 中居正広の金曜日のスマイルたちへ 」( TBS 系 )  、 1日 たった 5分 で ぽっこり おなか を 解消 する という ダイエット方法 を 紹介 。 キンタロー。 の ダイエット に も 密着 。 
mount/output/2/d.txt
8月3日 に 放送 さ れ た 「 中居正広の金曜日のスマイルたちへ 」( TBS 系 )  、 1日 たった 5分 で ぽっこり おなか を 解消 する という ダイエット方法 を 紹介 。 キンタロー。 の ダイエット に も 密着 。 
mount/output/a.txt
8月3日 に 放送 さ れ た 「 中居正広の金曜日のスマイルたちへ 」( TBS 系 )  、 1日 たった 5分 で ぽっこり おなか を 解消 する という ダイエット方法 を 紹介 。 キンタロー。 の ダイエット に も 密着 。

ちゃんとファイルごとに分かち書きできてる。
ディレクトリ構造もそのまま。


$ tree mount/
mount/
├── input
   ├── 1
   │   ├── 11
   │   │   └── c.txt
   │   └── b.txt
   ├── 2
   │   └── d.txt
   └── a.txt
└── output
     ├── 1
        ├── 11
        │   └── c.txt
        └── b.txt
     ├── 2
        └── d.txt
     └── a.txt