シアトルコンサルティング サービス開発ブログ

シアトルコンサルティング株式会社プロダクトソリューション事業部の開発ブログです

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 -----------------------
[ '吾輩', 'は', '猫', 'で', 'ある', '。', '名前', 'は', 'まだ', '無い', '。' ]

とりあえずのメモですが、これで、吾輩も猫もばらし放題です。