LanguageTool
LanguageToolはJavaによって実装された文法チェッカーです。さまざまな言語に対応しています。
日本語対応
日本語対応はTakahiro Shinkaiさんの手によって行われました。日本語処理はGoSenとIPADICを用いています。GoSenはJavaによるMeCabの再実装です。
仕組み
GoSenとIPADICによって対象の文章を形態素解析し、単語と品詞情報をルールに照らし合わせて、マッチしたものを出力します。
単純なルールはXMLによって記述します。XMLで記述しきれないような、複雑な場合の処理はJavaのコードで対応します。今のところ、日本語に対応したXMLのルールは少なく、Javaルールはまだ存在していません。
使い方
LanguageToolの実行環境は以下の3種類があります。
- LibreOffie/OpenOfficeプラグイン
- コマンドライン(スタンドアロン版)
- Firefoxプラグイン
ここではスタンドアローン版の使い方について解説します。
ダウンロード
トップページよりスタンドアローン版のzipを入手します(http://www.languagetool.org/download/LanguageTool-x.y.zip)。
ファイルの展開
unzipコマンド等で入手したファイルを展開します。LanguageTool-x.yというディレクトリ以下にファイルが生成されます。
起動
コマンドラインで以下のように入力します。
$ java -jar languagetool-commandline.jar --help
実行例
$ java -jar languagetool-commandline.jar -v -l ja-JP -c UTF-8 file.txt
UTF-8で記述されたファイルfile.txtを日本語として処理する。解析結果を標準エラー出力に表示する(-v)。
実行例2
echo "そんじゃそこらのやつらとは違う" | java -jar languagetool-commandline.jar -l ja-JP -c UTF-8 -
Expected text language: Japanese
Working on STDIN...
1.) Line 1, column 1, Rule ID: SONJASOKORA[1]
Message: そんじょそこら
そんじゃそこらのやつらとは違う
^^^^^^^
Time: 323ms for 1 sentences (3.1 sentences/sec)
実行例2
-t(タギング)オプションを使うことで、入力された文章がどのように形態素解析されるかを確認できる。
$ echo "日本語の文章をタグ付" | java -jar languagetool-commandline.jar -t -l ja-JP -c UTF-8
Expected text language: Japanese
Working on STDIN...
<S> 日本語[日本語/名詞-一般,]の[の/助詞-連体化,]文章[文章/名詞-一般,]を[を/助詞-格助詞-一般,]タグ[タグ/名詞-一般,]付[付/名詞-接尾-一般,</S>,]
Time: 502ms for 0 sentences (0.0 sentences/sec)
その他のオプションについてはLanguageToo Wikiを参照。
grammer.xml
languagetool-commandline.jarファイルがあるディレクトリ上のorg/languagetool/rules/ja/grammer.xml が文法辞書になる。エントリーを追加して確認する場合はこのファイルを変更するか、--rulefileオプションで変更したルールファイルを指定する。
エントリー例
<rule id="DOUBLE-WO" name="をを">
<pattern case_sensitive="no">
<token>を</token>
<token>を</token>
</pattern>
<message>重複したを</message>
<example type="correct"><marker>を</marker>話す</example>
<example type="incorrect"><marker>をを</marker>話す</example>
</rule>
ルールのテスト
exampleタグはルールのテストに用いられる。日本語のルールのみをテストする場合は以下を実行する。
$ mvn --projects languagetool-language-modules/ja --also-make clean test
ToDo
- Version 3.0の書式に合わせる
- grammer.xmlを充実させる
- 書式を理解する
- サンプルを増やす