Node.jsで簡単に使うことができる3つの分かち書きができるライブラリを使ってみました。
- TinySegmenter
- kuromoji.js
- MeCab
TinySegmenter
JavaScriptだけで書かれて辞書を持たず機械学習で分かち書きを行うTinySegmenterを使ってみます。
npm install tiny-segmenter
npmでtiny-segmenterを入れるだけで簡単に、辞書も持っていないので軽快に動きます。
const TinySegmenter = require('tiny-segmenter')
const segmenter = new TinySegmenter()
const segs = segmenter.segment('吾輩は猫である。名前はまだ無い。')
console.log(segs)
出力結果
[ '吾輩', 'は', '猫', 'で', 'ある', '。', '名前', 'は', 'まだ', '無い', '。' ]
kuromoji.js
npmでkuromojiを入れると辞書もパッケージ内に入っているので辞書にはそれを指定します。
npm install kuromoji
kuromojiには分かち書きのみをするメソッドがなさそうだったので、mapで表層形のみを取り出しています。
const kuromoji = require('kuromoji')
const builder = kuromoji.builder({
dicPath: 'node_modules/kuromoji/dict'
})
builder.build(function(err, tokenizer) {
if(err){throw err}
const tokens = tokenizer.tokenize('吾輩は猫である。名前はまだ無い。')
const tokenArr = tokens.map((token)=>{
return token.surface_form
})
console.dir(tokenArr)
})
出力結果
[ '吾輩', 'は', '猫', 'で', 'ある', '。', '名前', 'は', 'まだ', '無い', '。' ]
MeCab
最初にmecab本体と辞書のmecab-ipadicを入れます。
brew install mecab mecab-ipadic
今回mecab-asyncというライブラリを使うのでnpmで入れておきます。
npm install mecab-async
const MeCab = new require('mecab-async')
const mecab = new MeCab()
mecab.wakachi('吾輩は猫である。名前はまだ無い。', function(err, result) {
if (err) throw err
console.log(result)
})
出力結果
[ '吾輩', 'は', '猫', 'で', 'ある', '。', '名前', 'は', 'まだ', '無い', '。' ]