mecabで分かち書き

分かち書きだけしたい時、parseToNodeしてnode.surfaceで文字だけ(品詞としての情報などを除いて)取れる

mecab-split-terms.rb

#!/usr/bin/env ruby
require 'rubygems'
require 'MeCab'

exit if ARGV.size < 1

puts ARGV.to_s
node = MeCab::Tagger.new.parseToNode(ARGV.to_s)
while node do
  puts node.surface # 分かち書きされた文字だけ
  node = node.next
end

puts '*'*5

# 出力を自前でparse
puts MeCab::Tagger.new.parse(ARGV.to_s).map{|i| i.split(/\t/).first}.delete_if{|i| i =~ /^EOS/}


実行

ruby mecab-split-terms.rb 味に厚みがある、しかも糖質ゼロ
味に厚みがある、しかも糖質ゼロ

味
に
厚み
が
ある
、
しかも
糖
質
ゼロ

*****
味
に
厚み
が
ある
、
しかも
糖
質
ゼロ