MeCabの出力フォーマットを指定する方法についてまとめます。
出力フォーマット指定方法 (正攻法)
オプション
| オプション | 指定するもの |
|---|---|
-F, --node-format
|
通常の形態素の出力フォーマット |
-U, --unk-format
|
未知語形態素の出力フォーマット |
-B, --bos-format
|
Headerの出力フォーマット |
-E, --eos-format
|
Footerの出力フォーマット |
オプションに与える文字列
MeCab: Yet Another Japanese Dependency Structure Analyzerをご覧ください。
なお、%f[N]の指定方法についてはMeCab辞書について | Yuta Hayashibeを参考にすると良いかと思います。
例
例
$ echo "本日は晴天なり。" | mecab -F "%m\n"
本日
は
晴天
なり
。
EOS
出力フォーマット指定方法 (バッドノウハウ)
IPAdicの場合、上記の方法で出力フォーマットの変更が可能です。
しかし、それ以外の辞書 (-d {辞書のパス}オプションで指定) の場合、上記の通りにオプションを指定しても、出力フォーマットは変更されない__かと思います。
これはMeCabのバグに起因するものであり、-O ""をオプションとして付与する__というバッドノウハウを用いることで解消されます。
例
$ echo "本日は晴天なり。" | mecab -d /var/lib/mecab/dic/unidic -O "" -F "%m\n"
本日
は
晴天
なり
。
EOS
なお、この方法はMeCabのPythonバインディングの1つであるnatto-pyにおいても用いることが可能です (natto-py 0.9.0以降のみ)。
関連リンク
-
Fix handling of
node-formatwhenoutput-format-typeis set by polm · Pull Request #38 · taku910/mecab
MeCabのバグを修正する (と考えられる) Pull Request - Ubuntu 18.04 LTSのPythonでMeCabを動かす方法 - Qiita