見出し画像

MeCabの使い方

「MeCab」の使い方を備忘録的にまとめました。

1. MeCab

「MeCab」 はオープンソースの形態素解析エンジンです。

・形態素解析
 ・トークン化
 ・品詞タグ付け
 ・レンマ化
・係り受け解析 (+ CaboCha)

2. インストール

Macへのインストール方法は、次のとおりです。

◎ MeCab
「HomeBrew」で以下のコマンドを実行します。

$ brew install mecab
$ brew install mecab-ipadic

◎ NEologd
「git」で以下のコマンドを実行します。

$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
$ bin/install-mecab-ipadic-neologd -n -a  # 途中でyesと入力
$ cd ..

◎ Pythonの仮想環境
Anaconda」でPython 3.7の仮想環境を作成して以下のコマンドを実行します。

$ brew install swig
$ pip install mecab-python3

3. コマンドラインでの利用

◎ MeCab
「mecab」を入力後、形態素解析するテキストを入力します。

$ mecab
吾輩は猫である。
吾輩	名詞,代名詞,一般,*,*,*,吾輩,ワガハイ,ワガハイ
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
猫	名詞,一般,*,*,*,*,猫,ネコ,ネコ
で	助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある	助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
。	記号,句点,*,*,*,*,。,。,。
EOS

◎ NEologd
「MeCab」の標準状態では「鬼滅の刃」のような新語は認識できません。

$ mecab
鬼滅の刃
鬼	名詞,一般,*,*,*,*,鬼,オニ,オニ
滅	名詞,一般,*,*,*,*,滅,メツ,メツ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
刃	名詞,一般,*,*,*,*,刃,ハ,ハ
EOS

「NEologd」を使うと、認識できるようになります。

$ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
鬼滅の刃
鬼滅の刃	名詞,固有名詞,一般,*,*,*,鬼滅の刃,キメツノヤイバ,キメツノヤイバ

4. Pythonでの利用

◎ トークン化

import MeCab
wakati = MeCab.Tagger("-Owakati -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd")
print(wakati.parse('鬼滅の刃が大好きです').split())
['鬼滅の刃', 'が', '大好き', 'です']

◎ 品詞タグ付けとレンマ化

import MeCab
chasen = MeCab.Tagger('-Ochasen -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')
node = chasen.parseToNode('鬼滅の刃が大好きです')

#形態素の情報表示
while node:
    feature = node.feature.split(',')
    print('語彙:'+node.surface)
    print('品詞:'+feature[0])
    print('品詞細分類1:'+feature[1])
    print('品詞細分類2:'+feature[2])
    print('品詞細分類3:'+feature[3])
    print('活用型:'+feature[4])
    print('活用系:'+feature[5])
    print('レンマ:'+feature[6])
    if len(feature) >= 8:
        print('読み:'+feature[7])
        print('発音:'+feature[8])
    print('')
    node = node.next
語彙:
品詞:BOS/EOS
品詞細分類1:*
品詞細分類2:*
品詞細分類3:*
活用型:*
活用系:*
レンマ:*
読み:*
発音:*

語彙:鬼滅の刃
品詞:名詞
品詞細分類1:固有名詞
品詞細分類2:一般
品詞細分類3:*
活用型:*
活用系:*
レンマ:鬼滅の刃
読み:キメツノヤイバ
発音:キメツノヤイバ

語彙:が
品詞:助詞
品詞細分類1:格助詞
品詞細分類2:一般
品詞細分類3:*
活用型:*
活用系:*
レンマ:が
読み:ガ
発音:ガ

語彙:大好き
品詞:名詞
品詞細分類1:形容動詞語幹
品詞細分類2:*
品詞細分類3:*
活用型:*
活用系:*
レンマ:大好き
読み:ダイスキ
発音:ダイスキ

語彙:です
品詞:助動詞
品詞細分類1:*
品詞細分類2:*
品詞細分類3:*
活用型:特殊・デス
活用系:基本形
レンマ:です
読み:デス
発音:デス

語彙:
品詞:BOS/EOS
品詞細分類1:*
品詞細分類2:*
品詞細分類3:*
活用型:*
活用系:*
レンマ:*
読み:*
発音:*

5. IPA辞書とNEologdの確認

MeCabの辞書は、以下の3種類があります。

・システム辞書 (IPA辞書(推奨)、Juman辞書、Unidic辞書)
・ユーザー辞書
・新語・固有表現辞書 (NEologd)

単語「国家公務員」をトークン化した際の、各辞書のトークン粒度は次のとおりです。

 ・NEologd : 国家公務員
 ・IPA辞書 : 国家 公務員
 ・Unidic : 国家 公務 員

◎ IPA辞書
IPA辞書の中身を確認する方法は次のとおりです。

(1) IPA辞書をダウンロードして解凍。
(2) 中身のCSVの文字コードがEUC_JPなのでUTF-8に変換。

$ brew install nkf
$ nkf -w --overwrite *.csv

CSVは次のとおりです。

・Adj.csv : 形容詞
・Adnominal.csv : 連体詞
・Adverb.csv : 副詞
・Auxil.csv : 補助
・Conjunction.csv : 接続子
・Filler.csv : フィラー
・Interjection.csv : 間投詞
・Noun.adjv.csv : 名詞.adjv
・Noun.adverbal.csv : 名詞.副詞
・Noun.csv : 名詞
・Noun.demonst.csv : 名詞.demonst
・Noun.nai.csv : 名詞.nai
・Noun.name.csv : 名詞.名前
・Noun.number.csv : 名詞.数字
・Noun.org.csv : 名詞.組織
・Noun.others.csv : 名詞.その他
・Noun.place.csv : 名詞.場所
・Noun.proper.csv : 名詞.固有名詞
・Noun.verbal.csv : 名詞.口語
・Other.csv.csv : その他
・Postp-col.csv : Postp-col
・Postp.csv : Postp
・Prefix.csv : プレフィックス
・Suffix.csv : サフィックス
・Symbol.csv : シンボル
・Verb.csv : 動詞

◎ NEologd
NEologdの中身を確認する方法は次のとおりです。

(1) mecab-ipadic-neologdのクローンおよびビルド。
「2. インストール」を参照してください。
(2) mecab-ipadic-neologd/build/mecab-ipadic-2.7.0-20070801-neologd-20200910(バージョンと日付は随時変更)内のCSVを確認。
IPA辞書のCSVに加えて、以下のCSVがあります。

・mecab-user-dict-seed.20200910.csv : 定期更新辞書
・neologd-adjective-exp-dict-seed.20151126.csv : 追加の形容詞
・neologd-adjective-std-dict-seed.20151126.csv : 追加の形容詞
・neologd-adjective-verb-dict-seed.20160324.csv : 追加の形容動詞
・neologd-adverb-dict-seed.20150623.csv : 追加の副詞
・neologd-common-noun-ortho-variant-dict-seed.20170228.csv : 一般名詞の表記ゆれ
・neologd-date-time-infreq-dict-seed.20190415.csv : 日時
・neologd-ill-formed-words-dict-seed.20170127.csv : 崩れ表記語
・neologd-interjection-dict-seed.20170216.csv : 追加の感動詞
・neologd-noun-sahen-conn-ortho-variant-dict-seed.20160323.csv : 一般名詞の表記ゆれ
・neologd-proper-noun-ortho-variant-dict-seed.20161110.csv : 固有名詞の表記ゆれ
・neologd-quantity-infreq-dict-seed.20190415.csv : 数量

6. ユーザー辞書の追加

ユーザー辞書の追加方法は、次のとおりです。

(1) 辞書フォルダのパスの確認。

$ mecab -D
filename:	/usr/local/lib/mecab/dic/ipadic/sys.dic
version:	102
charset:	utf8
type:	0
size:	392126
left size:	1316
right size:	1316

(2) 辞書フォルダ(/usr/local/lib/mecab/dic/ipadic/)にユーザー辞書のCSVを配置。

【user_dic.csv】(エンコードはUTF-8)

サーバーダウン,-1,-1,1,名詞,一般,*,*,*,*,*,*,*,mydic
サーバダウン,-1,-1,1,名詞,一般,*,*,*,*,*,*,*,mydic

(3) コンパイル。
「user_dic.csv「をコンパイルして「user_dic.dic」を生成します。

/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic -u user_dic.dic -f utf-8 -t utf-8 user_dic.csv 

(4) 「/usr/local/etc/mecabrc」を開き、ユーザー辞書の設定を追加。

userdic = /usr/local/lib/mecab/dic/ipadic/user_dic.dic

(5) 動作確認。

$ mecab
サーバーダウン
サーバーダウン	名詞,一般,*,*,*,*,*,*,*,mydic

7. 参考

【おまけ】 NEologdの更新

更新方法は、次のとおり。

$ cd mecab-ipadic-neologd
$ bin/install-mecab-ipadic-neologd -n 


この記事が気に入ったらサポートをしてみませんか?