mecabの引数の--node-formatとかはMeCab::Writer内で内部構造→文字列化される。mecab_node_format()に渡せばOK。問題はClonedなノード。PurePerlでやるか?あとWriterはMecab内の先頭ノードと最後のノードを見ない。理由は不明だけど、多分リスト構造の目印的な扱い。
Text::MeCab0.15でのハック
--node-format= "%m %pn %pw"for (my $node = $mecab->parse($text);
$node;
$node = $node->next )
{
next unless $node->surface; # 先頭と最後のノードを排除
print join (" ",
$node->surface,
$node->cost - $node->prev->cost,
$node->wcost
), "\n";
}
うーん、cloneノード用をC++レベルでフォーマットしてもらうより、PurePerlで書いた方簡単な気がしてきた。