Skip to main content

Use MeCab with simple code.

Project description

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をコマンドラインで実行する際に指定する引数を文字列としてそのまま指定できます。ただし、以下の引数は指定することができません。

  • -Owakatimecab.tokenize()関数を使用してください。
  • -F, -U, -B, -E, -S, -x といった出力フォーマットを指定する引数 → MeCabの出力を自動分類する性質上サポートできません。
    未知語の推定機能の利用可否の設定は今後追加予定です。
  • -N {N} → 今後対応予定です。

何も指定しないと、引数なし('')と同義になります。

引数dict_typeについて

dict_typeには以下の文字列のいずれかを指定してください。[ipadic以外はまだ実装されていません。]

dict_type 使用辞書
ipadic IPADic, mecab-ipadic-NEologd or 出力形式が同様の辞書
unidic UniDic or 出力形式が同様の辞書 (version 2.0で対応予定)

何も指定しないとipadicが使用されます。

日本語の文を形態素解析する

result = mecab.parse("文")

で、"文"の形態素解析結果を入手できます。

形態素解析結果は各形態素のlist形式になっていて、それぞれの要素は形態素のMorphemeクラスのインスタンスです。

Morphemeクラスの構成

MorphemeクラスはPythonのNamedTupleとして定義されており、形態素とその属性が格納されています。

例えば変数rにある形態素のMorphemeクラスのインスタンスが格納されているとき、

{MeCabの項目の値} = r.{Morphemeのfield}

で、属性の値を知ることができます。

サポートされている属性は以下のとおりです。

MeCabの項目 Morphemeのfield fieldのtype 出力例
形態素の文字列 token str '東京', '行っ'
品詞 pos0 str or None '名詞', '動詞'
品詞細分類1 pos1 str or None '固有名詞', '自立'
品詞細分類2 pos2 str or None '地域', None
品詞細分類3 pos3 str or None '一般', None
活用型 conjugation_type str or None None, '五段・カ行促音便'
活用形 conjugation str or None None, '連用タ接続'
原型 stem_form str or None '東京', '行く'
発音 pronunciation tuple[str] or None ('トウキョウ', 'トーキョー'), ('イッ')
<分類失敗時> unknown str or None None, None

tokenは常に文字列が格納されます。

それ以外の属性は、存在するときはその値の文字列、存在しない場合には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]

import simple_mecab

target_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)

# 各形態素について属性を表示する
for r in result:
    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を参照してください。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simple-mecab-1.2.1.tar.gz (15.9 kB view hashes)

Uploaded Source

Built Distribution

simple_mecab-1.2.1-py3-none-any.whl (11.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page