はじめに
node.js の mecab addon 作った - 凹みTipsというタイトルで前に MeCab の Node.js モジュールを作成しました。MeCab モジュールは他の人の手で作られたものが npm や github に幾つか上がっていますが、node-waf でコンパイルする古いものだったりします。
なので、非同期アドオンの作成も覚えたのと、初 npm 登録もしてみたいと思い、ちょっと作ってみました。
インストール
$ npm install mecab-async
コンパイルには mecab はもちろんのこと、boost も必要です。
- npm : mecab-async
- github : hecomi/node-mecab-async · GitHub
使い方
コード
var MeCab = new require('mecab-async') , mecab = new MeCab() ; mecab.parse('すもももももももものうち', function(err, result) { if (err) throw err; console.log(result); });
結果
[ [ 'すもも', '名詞', '一般', '*', '*', '*', '*', 'すもも', 'スモモ', 'スモモ' ], [ 'も', '助詞', '係助詞', '*', '*', '*', '*', 'も', 'モ', 'モ' ], [ 'もも', '名詞', '一般', '*', '*', '*', '*', 'もも', 'モモ', 'モモ' ], [ 'も', '助詞', '係助詞', '*', '*', '*', '*', 'も', 'モ', 'モ' ], [ 'もも', '名詞', '一般', '*', '*', '*', '*', 'もも', 'モモ', 'モモ' ], [ 'の', '助詞', '連体化', '*', '*', '*', '*', 'の', 'ノ', 'ノ' ], [ 'うち', '名詞', '非自立', '副詞可能', '*', '*', '*', 'うち', 'ウチ', 'ウチ' ] ]
わかち書きもできます。
var MeCab = new require('mecab-async') , mecab = new MeCab() ; mecab.wakachi('すもももももももものうち', function(err, result) { if (err) throw err; console.log(result); });
結果
[ 'すもも', 'も', 'もも', 'も', 'もも', 'の', 'うち' ]
npm への登録
npm への登録はとても簡単でした。
$ npm adduser
をしてから、
$ npm publish
を登録したいモジュールのあるディレクトリで実行するだけです。
その際の package.json は以下の様な感じ。
{ "name": "mecab-async", "version": "0.0.1", "author": { "name": "hecomi", "email": "info@hecomi.com" }, "main": "mecab", "dependencies": {}, "readmeFilename": "README.md", "description": "Asynchronous japanese morphological analyzer using MeCab.", "repository": { "type" : "git", "url": "http://github.com/hecomi/node-mecab-async.git" }, "bugs" : { "mail" : "info@hecomi.com" , "web" : "http://github.com/hecomi/node-mecab-async/issues" } }
ミスったけどバージョンは上げたくないといった場合は、force オプションをつければ簡単に修正できます。
$ npm publish --force
おわりに
ついでに iRemocon の Node.js モジュール(node-iRemocon つくった - 凹みTips)も公開しておきました。
$ npm install iremocon
でいけます。
-
- -
非同期アドオン既にあった…:
しかもこちらの方が出来がよさそうな気もしてちょっと凹んでます。。。すみません。