Javaで書かれた形態素解析器IgoのJavascript移植版です。 ブラウザ上で、Node.jsで、日本語の形態素解析を行うことができます。
GitHub Pagesで試すことができます。
ブラウザ上で実行する場合は、
レポジトリの./build/igo.js
か./build/igo.min.js
を
ダウンロード可能なところにおいてください。
Node.jsで実行する場合は、
npmとかには登録してないので、レポジトリの./build/igo.js
か./build/igo.min.js
を
パスの通った場所に置きましょう。
igo-javascriptを動作させるにはバイナリ辞書が必要ですが、 igo-javascript自身にはバイナリ辞書を作る機能はありません。 Java版のIgoで作成したバイナリ辞書をそのまま使用します。 作成方法はIgoのページを参照してください。
ファイルIOの部分をクライアントサイドとサーバサイドで統一するのが難しかったので、 igo-javascript自身にはファイルの読み込み機能はなく、すべてメモリ上で動作します。 ちょっと面倒ですが、辞書に関連するファイルの読み込みをすべて自前でやる必要があります。 以下はNode.jsで実行する例です。
var fs = require('fs');
var igo = require('./build/igo.min.js');
function loadTagger(dicdir) {
var dicfiles = ['char.category', 'code2category', 'word2id', 'word.dat', 'word.ary.idx', 'word.inf', 'matrix.bin'];
var files = new Array();
for(var i=0;i<dicfiles.length;++i) {
files[dicfiles[i]] = fs.readFileSync(dicdir + '/' + dicfiles[i]);
}
var category = new igo.CharCategory(files['code2category'], files['char.category']);
var wdc = new igo.WordDic(files['word2id'], files['word.dat'], files['word.ary.idx'], files['word.inf']);
var unk = new igo.Unknown(category);
var mtx = new igo.Matrix(files['matrix.bin']);
return new igo.Tagger(wdc, unk, mtx);
}
var tagger = loadTagger('./ipadic');
// 分かち書きだけする
console.log(tagger.wakati('node.jsで形態素解析をしてみるテスト'));
// 品詞情報も一緒に取得する
console.log(tagger.parse('node.jsで形態素解析をしてみるテスト'));
// NBest解を取得する(igo-javascript独自拡張)
console.log(tagger.parseNBest('node.jsで形態素解析をしてみるテスト', 5));