NEologd (mecab-ipadic-NEologd) の .csv
から、MeCab 用のユーザー辞書 (.dic
) を生成する方法です(辞書をコンパイルする方法です)。
OS は Windows 10 (64 bit) です。
とても簡単でした。
ユーザー辞書の作成は、Windows 用の MeCab と一緒にインストールされる mecab-dict-index.exe
を使うとできました。
mecab-dict-index.exe
に、mecab-ipadic-NEologd の .csv
を渡して実行すると、MeCab で使える形式の辞書 (.dic
) が生成されました。
早速ですが、結論です。
NEologd の全部の .csv
(12 個)から、ユーザー辞書 (.dic
) を生成するコマンド例です(とても長いです)。
mecab.exe
ではなくて、mecab-dict-index.exe
を使用します。
(NEologd 以外に、自作の辞書を追加する場合も、同じコマンドの書き方でできました。)
"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u "F:\user_dic\mecab-user-dict-seed.20200910.dic" -f utf8 -t utf8 "F:\mecab-ipadic-neologd-master\seed\mecab-user-dict-seed.20200910.csv"
"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u "F:\user_dic\neologd-adjective-exp-dict-seed.20151126.dic" -f utf8 -t utf8 "F:\mecab-ipadic-neologd-master\seed\neologd-adjective-exp-dict-seed.20151126.csv"
"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u "F:\user_dic\neologd-adjective-std-dict-seed.20151126.dic" -f utf8 -t utf8 "F:\mecab-ipadic-neologd-master\seed\neologd-adjective-std-dict-seed.20151126.csv"
"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u "F:\user_dic\neologd-adjective-verb-dict-seed.20160324.dic" -f utf8 -t utf8 "F:\mecab-ipadic-neologd-master\seed\neologd-adjective-verb-dict-seed.20160324.csv"
"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u "F:\user_dic\neologd-adverb-dict-seed.20150623.dic" -f utf8 -t utf8 "F:\mecab-ipadic-neologd-master\seed\neologd-adverb-dict-seed.20150623.csv"
"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u "F:\user_dic\neologd-common-noun-ortho-variant-dict-seed.20170228.dic" -f utf8 -t utf8 "F:\mecab-ipadic-neologd-master\seed\neologd-common-noun-ortho-variant-dict-seed.20170228.csv"
"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u "F:\user_dic\neologd-date-time-infreq-dict-seed.20190415.dic" -f utf8 -t utf8 "F:\mecab-ipadic-neologd-master\seed\neologd-date-time-infreq-dict-seed.20190415.csv"
"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u "F:\user_dic\neologd-ill-formed-words-dict-seed.20170127.dic" -f utf8 -t utf8 "F:\mecab-ipadic-neologd-master\seed\neologd-ill-formed-words-dict-seed.20170127.csv"
"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u "F:\user_dic\neologd-interjection-dict-seed.20170216.dic" -f utf8 -t utf8 "F:\mecab-ipadic-neologd-master\seed\neologd-interjection-dict-seed.20170216.csv"
"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u "F:\user_dic\neologd-noun-sahen-conn-ortho-variant-dict-seed.20160323.dic" -f utf8 -t utf8 "F:\mecab-ipadic-neologd-master\seed\neologd-noun-sahen-conn-ortho-variant-dict-seed.20160323.csv"
"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u "F:\user_dic\neologd-proper-noun-ortho-variant-dict-seed.20161110.dic" -f utf8 -t utf8 "F:\mecab-ipadic-neologd-master\seed\neologd-proper-noun-ortho-variant-dict-seed.20161110.csv"
"C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe" -d "C:\Program Files (x86)\MeCab\dic\ipadic" -u "F:\user_dic\neologd-quantity-infreq-dict-seed.20190415.dic" -f utf8 -t utf8 "F:\mecab-ipadic-neologd-master\seed\neologd-quantity-infreq-dict-seed.20190415.csv"
(参考)(taku910.github.io) 単語の追加方法 ⇒ ユーザ辞書への追加 ⇒ 辞書のコンパイル
もちろん、毎回手作業でコマンドプロンプトに打つのは大変でした。
なので、実際には上記をそのままバッチファイル .bat
に保存して使ったり、Python の subprocess.run()
でコマンドを実行したりして、ユーザー辞書を生成しています。
(自分は Python でユーザー辞書を作っています)
自分が参照したマニュアルと、具体的な Python コード例を紹介します。
MeCab のインストール方法(辞書の文字コードの選択)
MeCab をインストールするときの『辞書の文字コードの選択 (SHIFT-JIS, UTF-8, UTF-16, EUC-JP)』についてです(システム辞書)。
基本的に UTF-8 を選べば大丈夫でした(ただし、コマンドプロンプトでは文字化けしました。SHIFT-JIS なら日本語表示できました)。
文字コードはインストールした後でも一応変更できました(ただし Windows 10 では MeCab を再インストールするほうが確実でした)。
後から辞書の文字コードを変更する方法です。
Windows 10 スタートメニュー ⇒ M ⇒ MeCab の中に、以下のようなショートカットがありました。
MeCab
MeCab
MeCab Document
Recompile EUC-JP Dictionary
Recompile SHIFT-JIS Dictionary
Recompile UTF-8 Dictionary
Recompile UTF-16 Dictionary
Recompile という、わかりやすい名前のショートカットがあります。
ここから好きな文字コード(エンコーディング)のものを押すだけで、すぐにインストール時と同じようなコンパイルが始まりました。
ただし、Windows 10 だと "C:\Program Files (x86)"
への書き込みができなくて失敗したり、VirtualStore の機能か何かの影響で、再コンパイルした辞書が反映されなかったりしました。管理者権限で辞書を再コンパイルして、管理者権限で mecab.exe
を起動すれば、辞書の変更が反映されていました。このような感じで、昔の Windows とちがって色々大変だったので、Windows 10 の場合は MeCab の再インストールが確実でした。
MeCab の文字化けについて(コマンドプロンプト)
MeCab のシステム辞書で SHIFT-JIS を選んだら、コマンドプロンプト (cmd.exe
) で日本語が正常に表示されました。
ただし、SHIFT-JIS で保存されたテキストしか、正常に扱えなくなりました。(わざと UTF-8 のバイト列を渡すこともできましたが、意図した結果になりませんでした。)
MeCab のシステム辞書で UTF-8 を選んだら、コマンドプロンプト (cmd.exe
) で日本語が文字化けしました。
ですが、2022年の時点で広く使用されている UTF-8 で保存されたテキストを扱うことができました。また、NEologd のドキュメントには 『UTF-8 にしか対応していない』という旨が書かれていましたので、自分は UTF-8 で MeCab をインストールしました。ユーザー辞書も UTF-8 (utf8) で作ります。
別に、辞書を UTF-8 にしても、SHIFT-JIS などで記録されたテキストを解析することはできました。
自分は Python から MeCab を使用しましたが、何の問題もなかったです。
そのあたりは、『文字コード(エンコーディング)』と『Unicode コードポイント』の込み入った感じでしたので割愛しますが、ざっくり書きますと、Python3 上でいろいろな文字コードのテキストを自由に読み込んで、mecab.exe
に渡す時だけ、UTF-8 に変換して渡しました。
(参考)(docs.python.org) Unicode HOWTO(Unicode 入門)(😊絵文字✨を含めて Python が Unicode や UTF-8 をどのように使用しているか?の説明です)
UTF-8 なら、ほかの文字コードの範囲を広くカバーしていました。
もし、MeCab のシステム辞書を SHIFT-JIS で作ってしまうと、Python 上で『UTF-8 ⇒ SHIFT-JIS』に変換するときに、SHIFT-JIS に無い文字を無視する必要がありました(情報の欠落)。
通常はコマンドプロンプトではなく、各種のプログラミング言語から MeCab を使用すると思います。
なので、基本的には UTF-8 でシステム辞書とユーザー辞書を作るのが良いと思います。
NEologd のインストール方法(特に無かったです)
NEologd のインストール方法というのは、特に無かったです。
GitHub から取得した NEologd を好きなフォルダに置いて解凍して、好きなフォルダに辞書 (.dic
) を生成して、実際に Mecab (mecab.exe) を使うときは辞書の場所 (.dic
) をフルパスで指定してあげるだけでした。
.csv の数だけ mecab-dict-index.exe
を実行するので、最終的に .csv
と同じ数のユーザー辞書 (.dic
) ができました。
実際に「複数のユーザー辞書」を使用して形態素解析するときは、すべての (.dic
) のフルパスをリソースファイル (resource file, rcfile) に書きます。そのファイルのフルパスを、mecab.exe --rcfile "(フルパス)"
で渡すと、『複数のユーザー辞書』を使用してくれました。
MeCab マニュアル
32 bit 版 MeCab
『MeCab の本体』とドキュメントの場所です。自分が取得した時の MeCab インストーラーは『mecab-0.996.exe』でした。
(taku910.github.io) MeCab (和布蕪)とは – MeCab: Yet Another Part-of-Speech and Morphological Analyzer
『mecab-dict-index.exe
の使い方(辞書のコンパイル方法)』の場所です。自分は『ユーザ辞書への追加』を選びました。
(taku910.github.io) 単語の追加方法 ⇒ ユーザ辞書への追加 ⇒ 辞書のコンパイル
『複数のユーザー辞書 (.dic
) を指定して使う方法』の場所です。
(taku910.github.io) 単語の追加方法 ⇒ ユーザ辞書への追加 ⇒ userdic は CSV フォーマットで複数指定可能(2022年2月2日閲覧)
userdic = /home/foo/bar/foo.dic,/home/foo/bar2/usr.dic,/home/foo/bar3/bar.dic
『辞書の生成に使える .csv
のフォーマット(エントリのフォーマット)』の場所です。
(taku910.github.io) エントリのフォーマット (活用しない語)(2022年2月2日閲覧)
表層形,左文脈ID,右文脈ID,コスト,品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音
64 bit 版 MeCab
64 bit 版の MeCab でも mecab-dict-index.exe
が一緒にインストールされましたので、同じ方法でユーザー辞書 (.dic
) を作ることができました。
『64 bit 版の MeCab の本体』の場所です。自分が取得した時の MeCab インストーラーは『mecab-64-0.996.2.exe』でした。
(github.com) MeCab 0.996 64bit version
64 bit 版の MeCab だと、100 万文字を超えるようなテキスト(mecab.exe のメモリ使用量が 1GB を超えるようなテキスト)でも解析できるようになりました。
ただ、それでも無制限になるわけではなかったです(mecab.exe のメモリ使用量が 8GB くらいになったところで処理が止まりました)。
詳細は割愛しますが、自分が実験してみた範囲では、システム辞書やユーザー辞書を使うか?使わないか?によっても、一度に解析できるテキストの大きさが変わりました。
もちろん、実際には一度にそんなに長いテキストを解析する必要はなかったので、なんの問題もないです。
NEologd マニュアル
『NEologd (mecab-ipadic-NEologd) の本体』とドキュメントの場所です。自分は『緑色の Code▼ボタン ⇒ Download ZIP』から取得した『mecab-ipadic-neologd-master.zip
』というファイルを使用しました。
(github.com) mecab-ipadic-NEologd とは
git コマンドが分かる方なら、NEologd のマニュアルの通り git コマンドで取得するのが便利なのかもしれません。
NEologd で実際に使用したのは、mecab-ipadic-neologd-master.zip
の seed フォルダの中にある .csv
ファイルたちでした。.xz
形式で圧縮されていたので、7-Zip で解凍してから使用しました。
(sevenzip.osdn.jp) 圧縮・解凍ソフト 7-Zip
ほかにも、Python には .xz
形式を扱える lzma モジュールがありましたので、そちらを使用する方法もありました。
以下で .xz
ファイルを開いて (mode='rb'
)、f.read()
で解凍データを取得します。
そして、以下で書き込み先を開いて (mode='wb'
)、f.write()
で解凍データを書き込みます。
そのような感じでできました。
Python マニュアル
コード例で使用した重要な機能のマニュアルの場所です。
- (docs.python.org)
class pathlib.Path(*pathsegments)
- (docs.python.org)
Path.glob(pattern)
- (docs.python.org)
sys.stdout
- (docs.python.org)
subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None, **other_popen_kwargs)
- (docs.python.org)
class subprocess.CompletedProcess
コード例
NEologd (mecab-ipadic-NEologd) の seed フォルダの中にある .csv
ファイルから、MeCab 用のユーザー辞書 (.dic
) を作る Python コード例です。
seed フォルダの中の .xz
は、事前に 7-Zip で .csv
に解凍しておきました。
"""
Mecab 用の『ユーザー辞書』を作る Python コード例です。
mecab.exe と一緒にインストールされる
mecab-dict-index.exe を使用して、
NEologd の .csv からユーザー辞書 (.dic) を作ります。
"""
from pathlib import Path
import subprocess, sys, datetime
# 実行ファイル (.exe) の場所を指定します。
exe_file = Path(r'C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe')
# exe_file = Path(r'C:\Program Files\MeCab\bin\mecab-dict-index.exe') # 64-bit
# システム辞書のフォルダの場所を指定します。
system_dic_dir = Path(r'C:\Program Files (x86)\MeCab\dic\ipadic')
# system_dic_dir = Path(r'C:\Program Files\MeCab\dic\ipadic') # 64-bit
# neologd の辞書データ (.csv) を置いた場所を指定します。
src_dir = Path(r'F:\mecab-ipadic-neologd-master\seed')
# ユーザー辞書のファイルを保存するフォルダを決めます。
user_dic_dir = Path(r'F:\user_dic')
# フォルダが無ければ作ります。
user_dic_dir.mkdir(exist_ok=True)
# rcfile (resource file) を保存する場所を決めます。
rc_file = user_dic_dir.joinpath(r'mecabrc')
# (この中にユーザー辞書のファイルパスたちを書きます)
# (デバッグ)
print(f'(Python) {sys.version}')
print(f'(exe_file) {exe_file}')
print(f'(system_dic_dir) {system_dic_dir}')
print(f'(src_dir) {src_dir}')
print(f'(user_dic_dir) {user_dic_dir}')
print(f'(rc_file) {rc_file}\n')
def main():
# ファイルパスを入れるリストです。
# rcfile (resource file) を作る時に使用しました。
dic_files = []
# (1/5) 辞書データ (.csv) を列挙します。
for src_file in src_dir.glob('*.csv'):
print(f'\n(生成中) {src_file.name} ...')
# (2/5) 辞書の保存ファイルパス (.dic) を作ります。
dic_file = user_dic_dir.joinpath(f'{src_file.stem}.dic')
# (3/5) mecab-dict-index.exe のコマンドを作ります。
cmd = (
exe_file,
'-d', system_dic_dir,
'-u', dic_file,
'-f', 'utf8',
'-t', 'utf8',
src_file,
)
# 『タプル (tuple)』でも『リスト (list)』でも OK です。
# Path オブジェクトは、そのままタプルに入れても使用できました。
# もちろん、str() で文字列に変換してから入れても OK でした。
# (4/5) mecab-dict-index.exe で Mecab 用の辞書を作ります。
cp = subprocess.run(cmd, stdout=sys.stdout, stderr=sys.stderr)
# cp は CompletedProcess の略です。
# stdout=sys.stdout と stderr=sys.stderr は、
# mecab-dict-index.exe の進捗表示と標準エラー出力を
# コンソールに表示するために書きました。
# (デバッグ) 戻り値(返り値)は 0 のはず。
cp.check_returncode()
# ファイルパスをリストに追加します。
dic_files.append(dic_file)
# (5/5) rcfile (resource file) を作ります。
with rc_file.open('w', encoding='utf-8') as f:
# Path オブジェクトを普通の文字列に変換します。
dic_files = [str(x) for x in dic_files]
# カンマ区切りで連結します。
dic_paths = ','.join(dic_files)
#『ユーザ辞書への追加』の形式 (userdic) にします。
# https://taku910.github.io/mecab/dic.html#:~:text=userdic%20はCSV
text = f'userdic = {dic_paths}'
# ファイルに書き込みます。
f.write(text)
# この rcfile を使用して、mecab.exe に
# neologd 辞書の場所を指示します。
return
if __name__ == '__main__':
print('start')
start_time = datetime.datetime.now()
try:
main()
finally:
elapsed_time = datetime.datetime.now() - start_time
print(f'\n(経過時間) {elapsed_time}')
print('end')
実行結果
画面表示
Python コードを実行したときのコンソール表示です。自分の場合は 1 分くらいで完了しました。
(Python) 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)]
(exe_file) C:\Program Files (x86)\MeCab\bin\mecab-dict-index.exe
(system_dic_dir) C:\Program Files (x86)\MeCab\dic\ipadic
(src_dir) F:\mecab-ipadic-neologd-master\seed
(user_dic_dir) F:\user_dic
(rc_file) F:\user_dic\mecabrc
start
(生成中) mecab-user-dict-seed.20200910.csv ...
reading F:\mecab-ipadic-neologd-master\seed\mecab-user-dict-seed.20200910.csv ... 3224584
emitting double-array: 100% |###########################################|
done!
(生成中) neologd-adjective-exp-dict-seed.20151126.csv ...
reading F:\mecab-ipadic-neologd-master\seed\neologd-adjective-exp-dict-seed.20151126.csv ... 1051146
emitting double-array: 100% |###########################################|
done!
(生成中) neologd-adjective-std-dict-seed.20151126.csv ...
reading F:\mecab-ipadic-neologd-master\seed\neologd-adjective-std-dict-seed.20151126.csv ... 507812
emitting double-array: 100% |###########################################|
done!
(生成中) neologd-adjective-verb-dict-seed.20160324.csv ...
reading F:\mecab-ipadic-neologd-master\seed\neologd-adjective-verb-dict-seed.20160324.csv ... 20268
emitting double-array: 100% |###########################################|
done!
(生成中) neologd-adverb-dict-seed.20150623.csv ...
reading F:\mecab-ipadic-neologd-master\seed\neologd-adverb-dict-seed.20150623.csv ... 139792
emitting double-array: 100% |###########################################|
done!
(生成中) neologd-common-noun-ortho-variant-dict-seed.20170228.csv ...
reading F:\mecab-ipadic-neologd-master\seed\neologd-common-noun-ortho-variant-dict-seed.20170228.csv ... 152869
emitting double-array: 100% |###########################################|
done!
(生成中) neologd-date-time-infreq-dict-seed.20190415.csv ...
reading F:\mecab-ipadic-neologd-master\seed\neologd-date-time-infreq-dict-seed.20190415.csv ... 16866
emitting double-array: 100% |###########################################|
done!
(生成中) neologd-ill-formed-words-dict-seed.20170127.csv ...
reading F:\mecab-ipadic-neologd-master\seed\neologd-ill-formed-words-dict-seed.20170127.csv ... 60616
emitting double-array: 100% |###########################################|
done!
(生成中) neologd-interjection-dict-seed.20170216.csv ...
reading F:\mecab-ipadic-neologd-master\seed\neologd-interjection-dict-seed.20170216.csv ... 4701
emitting double-array: 100% |###########################################|
done!
(生成中) neologd-noun-sahen-conn-ortho-variant-dict-seed.20160323.csv ...
reading F:\mecab-ipadic-neologd-master\seed\neologd-noun-sahen-conn-ortho-variant-dict-seed.20160323.csv ... 26058
emitting double-array: 100% |###########################################|
done!
(生成中) neologd-proper-noun-ortho-variant-dict-seed.20161110.csv ...
reading F:\mecab-ipadic-neologd-master\seed\neologd-proper-noun-ortho-variant-dict-seed.20161110.csv ... 138379
emitting double-array: 100% |###########################################|
done!
(生成中) neologd-quantity-infreq-dict-seed.20190415.csv ...
reading F:\mecab-ipadic-neologd-master\seed\neologd-quantity-infreq-dict-seed.20190415.csv ... 229216
emitting double-array: 100% |###########################################|
done!
(経過時間) 0:01:07.698864
end
『ユーザー辞書』と『リソースファイル』のファイルパス
生成された『ユーザー辞書 (.dic
)』と『リソースファイル (mecabrc)』のファイルパスです。
F:\user_dic\mecab-user-dict-seed.20200910.dic
F:\user_dic\neologd-adjective-exp-dict-seed.20151126.dic
F:\user_dic\neologd-adjective-std-dict-seed.20151126.dic
F:\user_dic\neologd-adjective-verb-dict-seed.20160324.dic
F:\user_dic\neologd-adverb-dict-seed.20150623.dic
F:\user_dic\neologd-common-noun-ortho-variant-dict-seed.20170228.dic
F:\user_dic\neologd-date-time-infreq-dict-seed.20190415.dic
F:\user_dic\neologd-ill-formed-words-dict-seed.20170127.dic
F:\user_dic\neologd-interjection-dict-seed.20170216.dic
F:\user_dic\neologd-noun-sahen-conn-ortho-variant-dict-seed.20160323.dic
F:\user_dic\neologd-proper-noun-ortho-variant-dict-seed.20161110.dic
F:\user_dic\neologd-quantity-infreq-dict-seed.20190415.dic
F:\user_dic\mecabrc
『リソースファイル』の中身
『リソースファイル (mecabrc)』の中身です。1行だけです。今回は全部で 12 個の .csv
を使用したので、1行がとても長くなりました。
userdic = F:\user_dic\mecab-user-dict-seed.20200910.dic,F:\user_dic\neologd-adjective-exp-dict-seed.20151126.dic,F:\user_dic\neologd-adjective-std-dict-seed.20151126.dic,F:\user_dic\neologd-adjective-verb-dict-seed.20160324.dic,F:\user_dic\neologd-adverb-dict-seed.20150623.dic,F:\user_dic\neologd-common-noun-ortho-variant-dict-seed.20170228.dic,F:\user_dic\neologd-date-time-infreq-dict-seed.20190415.dic,F:\user_dic\neologd-ill-formed-words-dict-seed.20170127.dic,F:\user_dic\neologd-interjection-dict-seed.20170216.dic,F:\user_dic\neologd-noun-sahen-conn-ortho-variant-dict-seed.20160323.dic,F:\user_dic\neologd-proper-noun-ortho-variant-dict-seed.20161110.dic,F:\user_dic\neologd-quantity-infreq-dict-seed.20190415.dic
この F:\user_dic\mecabrc
ファイルを mecab.exe
に渡したら、NEologd の辞書を使用して『形態素解析』をしたり、『分かち書き』のテキストを取得したりすることができました。
(補足です)mecabrc に書いたユーザー辞書が、本当にすべて使われていたか?までは確認していません。『ユーザー辞書をこのように作って指定したら、エラーが出ることもなく、MeCab での解析結果にも変化があった。』ということで、たぶん『できている』と判断しました。(補足終わり)
以上です。
MeCab の使用例
Windows で MeCab を使用する Python コード例の記事です。
⇒ 【Windows】MeCab で形態素解析する Python コード例【NEologd】