Node.jsでTinySegmenter、kuromoji、MeCabを使って分かち書きをしてみる

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)
})

出力結果

[ '吾輩', 'は', '猫', 'で', 'ある', '。', '名前', 'は', 'まだ', '無い', '。' ]

参照