Node.jsで形態素解析
satkakuです。
Node.jsで形態素解析をしたかったので、そのメモです。
まずは、何はともあれ、形態素解析エンジンのMeCabを入れます。
MacでHomebrewを使っていればすぐです。
% brew install mecab % brew install mecab-ipadic
mecab-ipadicは形態素解析の辞書となるので、併せてinstallしておきます。
とりあえず試してみましょう。
% mecab 吾輩は猫である。名前はまだ無い。 吾輩 名詞,代名詞,一般,*,*,*,吾輩,ワガハイ,ワガハイ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 猫 名詞,一般,*,*,*,*,猫,ネコ,ネコ で 助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ ある 助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル 。 記号,句点,*,*,*,*,。,。,。 名前 名詞,一般,*,*,*,*,名前,ナマエ,ナマエ は 助詞,係助詞,*,*,*,*,は,ハ,ワ まだ 副詞,助詞類接続,*,*,*,*,まだ,マダ,マダ 無い 形容詞,自立,*,*,形容詞・アウオ段,基本形,無い,ナイ,ナイ 。 記号,句点,*,*,*,*,。,。,。 EOS
Node.jsから呼び出したいので、適当なディレクトリをつくって、mecab.jsというファイルを作成します。
今回は、node-mecab-asyncを使用するので、これもnpmでinstallしておきます。
% npm install mecab-async
そして、mecab.jsの中身を書きます。
var MeCab = new require('mecab-async') ,mecab = new MeCab() ,src = '吾輩は猫である。名前はまだ無い。'; mecab.parse(src, function(err, result) { if (err) { throw err; } console.log("\n parse -----------------------") console.log(result); }); mecab.wakachi(src, function(err, result) { if (err) { throw err; } console.log("\n wakachi -----------------------") console.log(result); });
最後に実行して確認です。
% node mecab.js parse ----------------------- [ [ '吾輩', '名詞', '代名詞', '一般', '*', '*', '*', '吾輩', 'ワガハイ', 'ワガハイ' ], [ 'は', '助詞', '係助詞', '*', '*', '*', '*', 'は', 'ハ', 'ワ' ], [ '猫', '名詞', '一般', '*', '*', '*', '*', '猫', 'ネコ', 'ネコ' ], [ 'で', '助動詞', '*', '*', '*', '特殊・ダ', '連用形', 'だ', 'デ', 'デ' ], [ 'ある', '助動詞', '*', '*', '*', '五段・ラ行アル', '基本形', 'ある', 'アル', 'アル' ], [ '。', '記号', '句点', '*', '*', '*', '*', '。', '。', '。' ], [ '名前', '名詞', '一般', '*', '*', '*', '*', '名前', 'ナマエ', 'ナマエ' ], [ 'は', '助詞', '係助詞', '*', '*', '*', '*', 'は', 'ハ', 'ワ' ], [ 'まだ', '副詞', '助詞類接続', '*', '*', '*', '*', 'まだ', 'マダ', 'マダ' ], [ '無い', '形容詞', '自立', '*', '*', '形容詞・アウオ段', '基本形', '無い', 'ナイ', 'ナイ' ], [ '。', '記号', '句点', '*', '*', '*', '*', '。', '。', '。' ] ] wakachi ----------------------- [ '吾輩', 'は', '猫', 'で', 'ある', '。', '名前', 'は', 'まだ', '無い', '。' ]
とりあえずのメモですが、これで、吾輩も猫もばらし放題です。