jcorrectとは?
jcorrect は、形態素解析 / 係受け解析ソフトウェアである、cabocha の解析 結果を利用して、日本語文章の校正を補助するツールです。
形態素解析、係受け解析を用いて技術文章を構成するためのツールです。
論文を執筆する際に、文法的におかしい部分や冗長な部分を発見、修正する際に利用します。
簡易に使うだけであれば以下のようなWebインターフェースが用意されています。
jcorrect — A simple Japanese grammer checker [Web interface]
目的
論文を執筆している際に、先生の勧めでjcorrect を導入しました。
しかしlatexで書いてコピペしてはっつけて修正・・・がめんどくさい。
そこで、GithubのWebhookを利用し、pushされた際に自動で文法がおかしい部分にコメントを入れるようなサービスの実装を目指します。
最終的にはjcorrectをNode.JSで実装し直す予定ですが、まず、その第一段階としてjcorrectをオフライン、コンソール上で動作させます。
導入
前提とする環境は
- Debian 8 ( on Vagrant)
- RAM 4GB
- CPU 4
となっています。
メモリとCPUは大目に確保しないと後述のcabochaのmakeで止まります。
また、今回はaptで入る物でも基本的にソースからコンパイルします。
まず、前提としてコンパイルに必要なbuild-essentialを入れます。
$ sudo apt install build-essential
また、jcorrectの動作には
- Cabocha http://taku910.github.io/cabocha/
- MeCab http://taku910.github.io/mecab/
- MeCab IPA辞書 同上
- CRF++ http://taku910.github.io/crfpp/
- jcorrect http://www.lsnl.jp/~ohsaki/research/tips-jcorrect/
- Perl
が必要なので、これらをダウンロードし、必要であれば展開します。
Perlはaptで入れてください。 標準で入っているかもしれませんが・・・
以下のコマンドはバージョンを適宜、読み替えてください。
$ ls -ls total 96723 82656 -rwxrwxrwx 1 vagrant vagrant 84638995 Jan 16 05:38 cabocha-0.69.tar.bz2 773 -rwxrwxrwx 1 vagrant vagrant 790570 Jan 16 05:43 CRF++-0.58.tar.gz 7 -rwxrwxrwx 1 vagrant vagrant 7120 Jan 16 06:30 jcorrect 1366 -rwxrwxrwx 1 vagrant vagrant 1398663 Jan 16 05:45 mecab-0.996.tar.gz 11922 -rwxrwxrwx 1 vagrant vagrant 12208105 Jan 16 05:46 mecab-ipadic-2.7.0-20070801.tar.gz $ tar xf cabocha-0.69.tar.bz2 $ tar xf CRF++-0.58.tar.gz $ tar xf mecab-0.996.tar.gz $ tar xf mecab-ipadic-2.7.0-20070801.tar.gz
まず、CRF++からビルドしていきます。
$ cd CRF++-0.58 $ ./configure $ make $ sudo make install $ sudo ldconfig
MeCab本体をビルドします。
$ cd mecab-0.996 $ ./configure $ make $ make check $ sudo make install
MeCab辞書をビルドします。
$ cd mecab-ipadic-2.7.0-20070801 $ ./configure --with-charset=utf8 $ make $ sudo make install
ここまで上手く行っていればMeCab単体で動作するはずです。
以下のようにテストできます。
$ echo '技術文書は簡潔であることが重要です。' | mecab 技術 名詞,一般,*,*,*,*,技術,ギジュツ,ギジュツ 文書 名詞,一般,*,*,*,*,文書,ブンショ,ブンショ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 簡潔 名詞,形容動詞語幹,*,*,*,*,簡潔,カンケツ,カンケツ で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ ある 助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル こと 名詞,非自立,一般,*,*,*,こと,コト,コト が 助詞,格助詞,一般,*,*,*,が,ガ,ガ 重要 名詞,形容動詞語幹,*,*,*,*,重要,ジュウヨウ,ジューヨー です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS
ここまで確認できたらCabochaをビルドします。
$ LDFLAGS="-Wl,-rpath=/usr/local/lib -L/usr/local/lib" ./configure --with-charset=utf8 --enable-utf8-only $ make $ sudo make install
上手く行っていればCabocha単体で動作するはずです。
以下のようにテストできます。
$ echo '技術文書は簡潔であることが重要です。' |cabocha 技術文書は-D 簡潔である-D ことが-D 重要です。 EOS
ここまでで問題がなければjcorrectは動作します。
以下のように使えます。
$ echo '技術文書は簡潔であることが重要です。' | ./jcorrect 技術文書は簡潔であることが重要です。 技術文書は-D 簡潔である-D ことが-D 重要です。 1: **** misssing subject for `重要です。' 1: check meaning of `ことが -> 重要です。' 1: check meaning of `簡潔である -> ことが' 1: check meaning of `技術文書は -> 簡潔である'
ただし、jcorrectのオリジナルはEUC-JPなのでUTF-8に文字コードを変換しないと正常に動作しないです。
iconv -f EUCJP -t UTF8 ./jcorrect
以上で終了です。
今後、JavaScriptにjcorrect移植したうえでgithubとの連携を目指します。