Package: simple-mecab
Python package "simple-mecab"MeCabをPythonから簡単に使えるようにした、mecabパッケージのラッパーです。通常のMeCabよりも使える機能に制限がありますが、辞書の違いを吸収して統一されたアクセス方法で形態素情報にアクセスできます。インストール方法ターミナルでpip install simple-mecabを実行し、パッケージをインストールします。要件Python 3.7 以上 （mecabパッケージが対応しているバージョンのみ）形態素解析器MeCabとUTF-8辞書がインストール済みで、プログラムからアクセス可能であることmecabパッケージをインストールできる環境にあること（このパッケージをインストールする際に、pipによってmecabパッケージが自動的にインストールされます。）コンピューターにインストールされたMeCabの対応bitとPythonのアーキテクチャが一致していること（例：MeCab 32bitとPython 32bit,MeCab 64bitとPython 64bit）Pythonのバージョンがmecabパッケージの対応バージョンであること使い方MeCabWrapperのインスタンスを入手するmecab=simple_mecab.MeCabWrapper(args="{MeCab Args}",dict_type='{dict_type Literal}')で入手できます。引数argsについてargsには、通常MeCabをコマンドラインで実行する際に指定する引数を文字列としてそのまま指定できます。ただし、以下の引数は指定することができません。-Owakati→mecab.tokenize()関数を使用してください。-F,-U,-B,-E,-S,-xといった出力フォーマットを指定する引数 → MeCabの出力を自動分類する性質上サポートできません。未知語の推定機能の利用可否の設定は今後追加予定です。-N {N}→ 今後対応予定です。何も指定しないと、引数なし（''）と同義になります。引数dict_typeについてdict_typeには以下の文字列のいずれかを指定してください。[ipadic以外はまだ実装されていません。]dict_type使用辞書ipadicIPADic,mecab-ipadic-NEologdor 出力形式が同様の辞書unidicUniDicor 出力形式が同様の辞書(version 2.0で対応予定)何も指定しないとipadicが使用されます。日本語の文を形態素解析するresult=mecab.parse("文")で、"文"の形態素解析結果を入手できます。形態素解析結果は各形態素のlist形式になっていて、それぞれの要素は形態素のMorphemeクラスのインスタンスです。Morphemeクラスの構成MorphemeクラスはPythonのNamedTupleとして定義されており、形態素とその属性が格納されています。例えば変数rにある形態素のMorphemeクラスのインスタンスが格納されているとき、{MeCabの項目の値} = r.{Morphemeのfield}で、属性の値を知ることができます。サポートされている属性は以下のとおりです。MeCabの項目Morphemeのfieldfieldのtype出力例形態素の文字列tokenstr'東京', '行っ'品詞pos0strorNone'名詞', '動詞'品詞細分類1pos1strorNone'固有名詞', '自立'品詞細分類2pos2strorNone'地域', None品詞細分類3pos3strorNone'一般', None活用型conjugation_typestrorNoneNone, '五段・カ行促音便'活用形conjugationstrorNoneNone, '連用タ接続'原型stem_formstrorNone'東京', '行く'発音pronunciationtuple[str]orNone('トウキョウ', 'トーキョー'), ('イッ')<分類失敗時>unknownstrorNoneNone, Nonetokenは常に文字列が格納されます。それ以外の属性は、存在するときはその値の文字列、存在しない場合にはNoneが格納されます。pronunciationのみ、発音が1つしかない場合でもタプルが格納されるため、r.pronunciation[0]などでアクセスしてください。（IPADicの場合、MeCabの出力した発音2種がどちらも異なる場合にのみ、タプルの要素が2つになります。）unknownにはMeCabの出力を正しく分類できなかった際に、MeCabの出力結果が文字列としてそのまま格納されます。通常はNoneです。MeCabの辞書を正しく分類するために、dict_typeは正しく指定してください。日本語の文を分かち書きするこのパッケージではMeCab標準の-Owakatiを用いた分かち書きを使用することができません。代わりに、wakati_gaki_str=mecab.tokenize("文")によって文を形態素ごとに分割できます。wakati_gaki_strはそれぞれの形態素をスペースで区切った文字列になっています。分かち書きの際の区切り文字は、tokenize関数の第2引数sepで指定することも可能です。例外simple_mecab.InvalidArgumentError: このパッケージがサポートしていない引数がMeCabWrapper()のargsに指定された場合に発生します。対応しない引数を削除して再度お試しください。サンプル以下ではサンプルとして "渋谷に行った。" という文を形態素解析・分かち書きした際のPythonコードと結果を示します。[Python 3.10]importsimple_mecabtarget_sentence="渋谷に行った。"mecab:simple_mecab.MeCabWrapper=simple_mecab.MeCabWrapper(args=r"-r C:\PROGRA~2\MeCab\etc\mecabrc",dict_type='ipadic')result:list[simple_mecab.Morpheme]=mecab.parse(target_sentence)# 各形態素について属性を表示するforrinresult:print("形態素",r.token)print("品詞",r.pos0)print("品詞細分類1",r.pos1)print("品詞細分類2",r.pos2)print("品詞細分類3",r.pos3)print("活用型",r.conjugation_type)print("活用形",r.conjugation)print("原型",r.stem_form)print("発音",r.pronunciation)print("<分類失敗時>",r.unknown)print('\n')# 文を分かち書きするwakati_result:str=mecab.wakati_gaki(target_sentence)print("文をスペース区切りの分かち書きにします。")print(wakati_result)[出力]形態素 渋谷
品詞 名詞
品詞細分類1 固有名詞
品詞細分類2 地域
品詞細分類3 一般
活用型 None
活用形 None
原型 渋谷
発音 シブヤ
<分類失敗時> None


形態素 に
品詞 助詞
品詞細分類1 格助詞
品詞細分類2 一般
品詞細分類3 None
活用型 None
活用形 None
原型 に
発音 ニ
<分類失敗時> None


形態素 行っ
品詞 動詞
品詞細分類1 自立
品詞細分類2 None
品詞細分類3 None
活用型 五段・カ行促音便
活用形 連用タ接続
原型 行く
発音 イッ
<分類失敗時> None


形態素 た
品詞 助動詞
品詞細分類1 None
品詞細分類2 None
品詞細分類3 None
活用型 特殊・タ
活用形 基本形
原型 た
発音 タ
<分類失敗時> None


形態素 。
品詞 記号
品詞細分類1 句点
品詞細分類2 None
品詞細分類3 None
活用型 None
活用形 None
原型 。
発音 。
<分類失敗時> None


文をスペース区切りの分かち書きにします。
渋谷 に 行っ た 。さらにサンプルコードを閲覧したい場合にはsample.ipynbを参照してください。