MeCabとは
京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたオープンソースの形態素解析ツールです。類似の形態素解析ツールであるChaSenと比較して、同等の精度且つ解析速度が速いことが特徴です。
公式情報は以下のサイトを参照してください。
MeCabを準備する
前提条件(使用OS)
本記事の手順は、以下のOS上で実行しています。
RHEL
1 2 |
$ cat /etc/redhat-release Red Hat Enterprise Linux release 8.7 (Ootpa) |
Ubuntu
1 2 3 4 5 |
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.6 LTS" |
MeCabをインストールする
MeCabのインストール方法をOSごとに記載します。
RHEL
「dnf」コマンドを使用して、MeCabとMeCab用の辞書をインストールします。
1 |
$ sudo dnf -y install mecab mecab-ipadic |
Ubuntu
「apt」コマンドを使用して、MeCabとMeCab用の辞書をインストールします。
1 |
$ sudo apt -y install mecab libmecab-dev mecab-ipadic-utf8 |
「E: Unable to locate package mecab」と表示された場合は、「apt update」コマンドを実行してaptを更新してください。
MeCabのバージョン情報を確認する
MeCabのインストール後、「-v」オプションを指定して「mecab」コマンドを実行すると、MeCabのバージョン情報を確認できます。
1 2 |
$ mecab -v mecab of 0.996 |
MeCabの文字コードを確認する
ターミナル環境とMeCab環境の文字コードが一致していない場合、MeCabの実行時に文字化けが発生します。
<ターミナル環境の文字コードがEUCで、MeCab環境の文字コードがUTF-8の場合>
1 2 3 4 5 6 7 8 9 10 11 12 |
$ mecab 今年は2023年です。 今 荐????,筝????,*,*,*,*,* 年 綽????,綽??????????,腟????,*,*,*,* ? 荐????,筝????,*,*,*,*,* ?2 綽????,筝????,*,*,*,*,* 023 綽????,羶?,*,*,*,*,* 年 綽????,筝????,*,*,*,*,* ? 荐????,筝????,*,*,*,*,* 任 綽????,綽??????????,腟????,*,*,*,* 后? 荐????,筝????,*,*,*,*,* EOS |
MeCabのインストール後、「-D」オプションを指定して「mecab」コマンドを実行すると、MeCab環境の文字コードを確認できます。
1 2 3 4 5 6 7 8 |
$ mecab -D filename: /usr/lib64/mecab/dic/ipadic/sys.dic version: 102 charset: utf8 type: 0 size: 392126 left size: 1316 right size: 1316 |
ターミナル環境とMeCab環境の文字コードを統一すると以下のように正常に表示されます。
<ターミナル環境の文字コードとMeCab環境の文字コードがUTF-8の場合>
1 2 3 4 5 6 7 8 9 |
$ mecab 今年は2023年です。 今年 名詞,副詞可能,*,*,*,*,今年,コトシ,コトシ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 2023 名詞,数,*,*,*,*,* 年 名詞,接尾,助数詞,*,*,*,年,ネン,ネン です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS |
MeCabを実行する
標準入力した文章の解析結果を標準出力する
「mecab」コマンドを実行後、任意の文章を入力し「Enter」キーを押すと解析結果が標準出力されます。
1 2 3 4 5 6 7 8 9 |
$ mecab 今年は2023年です。 今年 名詞,副詞可能,*,*,*,*,今年,コトシ,コトシ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 2023 名詞,数,*,*,*,*,* 年 名詞,接尾,助数詞,*,*,*,年,ネン,ネン です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS |
標準入力した文章の解析結果をファイル出力する
出力先のファイルを指定して「mecab」コマンドを実行後、任意の文章の入力を終了すると解析結果がファイルに出力されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$ mecab > output.txt 今年は2023年です。 来年は2023年です。 ^C $ cat result.txt 今年 名詞,副詞可能,*,*,*,*,今年,コトシ,コトシ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 2023 名詞,数,*,*,*,*,* 年 名詞,接尾,助数詞,*,*,*,年,ネン,ネン です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS 来年 名詞,副詞可能,*,*,*,*,来年,ライネン,ライネン は 助詞,係助詞,*,*,*,*,は,ハ,ワ 2023 名詞,数,*,*,*,*,* 年 名詞,接尾,助数詞,*,*,*,年,ネン,ネン です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS |
ファイル入力した文章の解析結果を標準出力する
入力ファイルを指定して「mecab」コマンドを実行すると、解析結果がファイルに出力されます。
1 2 3 4 5 6 7 8 |
$ mecab input.txt 今年 名詞,副詞可能,*,*,*,*,今年,コトシ,コトシ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 2023 名詞,数,*,*,*,*,* 年 名詞,接尾,助数詞,*,*,*,年,ネン,ネン です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS |
ファイル入力した文章の解析結果をファイル出力する
入力ファイルと出力ファイルを指定して「mecab」コマンドを実行すると、解析結果がファイルに出力されます。出力ファイルの指定には「
1 2 3 4 5 6 7 8 9 10 11 |
$ mecab input.txt -o output.txt または $ mecab input.txt > output.txt $ cat output.txt 今年 名詞,副詞可能,*,*,*,*,今年,コトシ,コトシ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 2023 名詞,数,*,*,*,*,* 年 名詞,接尾,助数詞,*,*,*,年,ネン,ネン です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS |
出力フォーマットを変更する
「-O」オプションの後ろに以下のように文字列を指定すると、出力フォーマットを変更できます。目的に応じて、活用してみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<わかち書きで出力する> $ mecab input.txt -Owakati 今年 は 2023 年 です 。 <ヨミを付与する> $ mecab input.txt -Oyomi コトシハ2023ネンデス。 <ChaSen互換フォーマットで出力する> $ mecab input.txt -Ochasen 今年 コトシ 今年 名詞-副詞可能 は ハ は 助詞-係助詞 2023 2023 2023 名詞-数 年 ネン 年 名詞-接尾-助数詞 です デス です 助動詞 特殊・デス 基本形 。 。 。 記号-句点 EOS <すべての解析結果を出力する> $ mecab input.txt -Odump 0 BOS BOS/EOS,*,*,*,*,*,*,*,* 0 0 0 0 0 0 2 1 0.000000 0.000000 0.000000 0 7 今年 名詞,副詞可能,*,*,*,*,今年,コトシ,コトシ 0 6 1314 1314 67 2 0 1 0.000000 0.000000 0.000000 2532 17 は 助詞,係助詞,*,*,*,*,は,ハ,ワ 6 9 261 261 16 6 0 1 0.000000 0.000000 0.000000 3407 18 2023 名詞,数,*,*,*,*,* 9 13 1295 1295 48 4 1 1 0.000000 0.000000 0.000000 31159 21 年 名詞,接尾,助数詞,*,*,*,年,ネン,ネン 13 16 1300 1300 53 2 0 1 0.000000 0.000000 0.000000 28893 35 です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 16 22 460 460 25 6 0 1 0.000000 0.000000 0.000000 29689 43 。 記号,句点,*,*,*,*,。,。,。 22 25 8 8 7 3 0 1 0.000000 0.000000 0.000000 26299 45 EOS BOS/EOS,*,*,*,*,*,*,*,* 25 25 0 0 0 0 3 1 0.000000 0.000000 0.000000 24763 |