{"id":28499186,"url":"https://github.com/kei-mag/simple-mecab","last_synced_at":"2025-07-27T20:07:45.698Z","repository":{"id":65309771,"uuid":"562815800","full_name":"kei-mag/simple-mecab","owner":"kei-mag","description":"Use MeCab with simple code.","archived":false,"fork":false,"pushed_at":"2023-02-07T04:22:03.000Z","size":61,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-03T22:36:33.071Z","etag":null,"topics":["mecab","morphological-analysis","pip","pypi","python3"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/simple-mecab/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kei-mag.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-07T10:15:50.000Z","updated_at":"2023-05-06T07:26:20.000Z","dependencies_parsed_at":"2024-08-05T15:22:16.811Z","dependency_job_id":null,"html_url":"https://github.com/kei-mag/simple-mecab","commit_stats":null,"previous_names":["keisuke-magara/simple-mecab"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/kei-mag/simple-mecab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kei-mag%2Fsimple-mecab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kei-mag%2Fsimple-mecab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kei-mag%2Fsimple-mecab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kei-mag%2Fsimple-mecab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kei-mag","download_url":"https://codeload.github.com/kei-mag/simple-mecab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kei-mag%2Fsimple-mecab/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267417664,"owners_count":24083839,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mecab","morphological-analysis","pip","pypi","python3"],"created_at":"2025-06-08T14:35:49.900Z","updated_at":"2025-07-27T20:07:45.684Z","avatar_url":"https://github.com/kei-mag.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Python package \"simple-mecab\"\n\n**MeCabをPythonから簡単に使えるようにした、[mecab](https://pypi.org/project/mecab/)パッケージのラッパーです。**\n\n通常のMeCabよりも使える機能に制限がありますが、辞書の違いを吸収して統一されたアクセス方法で形態素情報にアクセスできます。\n\n## インストール方法\n\nターミナルで `pip install simple-mecab` を実行し、パッケージをインストールします。\n\n## 要件\n- Python 3.7 以上 （`mecab`パッケージが対応しているバージョンのみ）\n- 形態素解析器MeCabとUTF-8辞書がインストール済みで、プログラムからアクセス可能であること\n- `mecab`パッケージをインストールできる環境にあること  \n  （このパッケージをインストールする際に、pipによって`mecab`パッケージが自動的にインストールされます。）  \n  - コンピューターにインストールされたMeCabの対応bitとPythonのアーキテクチャが一致していること  \n    （例：[MeCab 32bit](https://taku910.github.io/mecab/#download)とPython 32bit, [MeCab 64bit](https://github.com/ikegami-yukino/mecab/releases)とPython 64bit）\n  - Pythonのバージョンが`mecab`パッケージの対応バージョンであること  \n\n## 使い方\n\n### MeCabWrapperのインスタンスを入手する\n```python\nmecab = simple_mecab.MeCabWrapper(args=\"{MeCab Args}\", dict_type='{dict_type Literal}')\n```\nで入手できます。\n\n#### 引数argsについて\n`args`には、通常MeCabをコマンドラインで実行する際に指定する引数を文字列としてそのまま指定できます。ただし、以下の引数は指定することができません。\n- `-Owakati` → [`mecab.tokenize()`関数](#日本語の文を分かち書きする)を使用してください。\n- `-F`, `-U`, `-B`, `-E`, `-S`, `-x` といった出力フォーマットを指定する引数 → MeCabの出力を自動分類する性質上サポートできません。  \n  未知語の推定機能の利用可否の設定は今後追加予定です。\n- `-N {N}` → 今後対応予定です。\n\n何も指定しないと、引数なし（`''`）と同義になります。\n\n\n#### 引数dict_typeについて\n`dict_type`には以下の文字列のいずれかを指定してください。[**`ipadic`以外はまだ実装されていません。**]\n| dict_type   | 使用辞書                                             |\n| :---------- | :--------------------------------------------------- |\n| ipadic      | [IPADic](http://manual.freeshell.org/chasen/ipadic-ja.pdf), [mecab-ipadic-NEologd](https://github.com/neologd/mecab-ipadic-neologd) or 出力形式が同様の辞書                      |\n| ~~unidic~~  | ~~[UniDic](https://clrd.ninjal.ac.jp/unidic/) or 出力形式が同様の辞書~~ (version 2.0で対応予定)              |\n\n何も指定しないと`ipadic`が使用されます。\n\n\n### 日本語の文を形態素解析する\n```python\nresult = mecab.parse(\"文\")\n```\nで、`\"文\"`の形態素解析結果を入手できます。\n\n形態素解析結果は各形態素のlist形式になっていて、それぞれの要素は形態素の`Morpheme`クラスのインスタンスです。\n\n#### Morphemeクラスの構成\n`Morpheme`クラスはPythonの`NamedTuple`として定義されており、形態素とその属性が格納されています。\n\n例えば変数`r`にある形態素の`Morpheme`クラスのインスタンスが格納されているとき、\n```\n{MeCabの項目の値} = r.{Morphemeのfield}\n```\nで、属性の値を知ることができます。\n\nサポートされている属性は以下のとおりです。\n| MeCabの項目    | Morphemeのfield | fieldのtype         | 出力例                                 | \n| -------------- | ------------------ | ---------------------- | -------------------------------------- | \n| 形態素の文字列 | token              | `str`                  | '東京', '行っ'                         | \n| 品詞           | pos0               | `str` or `None`        | '名詞', '動詞'                         | \n| 品詞細分類1    | pos1               | `str` or `None`        | '固有名詞', '自立'                     | \n| 品詞細分類2    | pos2               | `str` or `None`        | '地域', None                           | \n| 品詞細分類3    | pos3               | `str` or `None`        | '一般', None                           | \n| 活用型         | conjugation_type   | `str` or `None`        | None, '五段・カ行促音便'               | \n| 活用形         | conjugation        | `str` or `None`        | None, '連用タ接続'                     | \n| 原型           | stem_form          | `str` or `None`        | '東京', '行く'                         | \n| 発音           | pronunciation      | `tuple[str]` or `None` | ('トウキョウ', 'トーキョー'), ('イッ') | \n| \u003c分類失敗時\u003e   | unknown            | `str` or `None`        | None, None                             | \n\n`token`は常に文字列が格納されます。\n\nそれ以外の属性は、存在するときはその値の文字列、存在しない場合には`None`が格納されます。\n\n`pronunciation`のみ、発音が1つしかない場合でもタプルが格納されるため、`r.pronunciation[0]`などでアクセスしてください。  \n（IPADicの場合、MeCabの出力した発音2種がどちらも異なる場合にのみ、タプルの要素が2つになります。）\n\n`unknown`にはMeCabの出力を正しく分類できなかった際に、MeCabの出力結果が文字列としてそのまま格納されます。通常は`None`です。MeCabの辞書を正しく分類するために、[`dict_type`](#引数dict_typeについて)は正しく指定してください。\n\n\n### 日本語の文を分かち書きする\nこのパッケージではMeCab標準の`-Owakati`を用いた分かち書きを使用することができません。代わりに、\n```python\nwakati_gaki_str = mecab.tokenize(\"文\")\n```\nによって文を形態素ごとに分割できます。\n\n`wakati_gaki_str`はそれぞれの形態素をスペースで区切った文字列になっています。\n\n分かち書きの際の区切り文字は、`tokenize`関数の第2引数`sep`で指定することも可能です。\n\n\n## 例外\n`simple_mecab.InvalidArgumentError` : このパッケージがサポートしていない引数が`MeCabWrapper()`の`args`に指定された場合に発生します。対応しない引数を削除して再度お試しください。\n\n## サンプル\n以下ではサンプルとして \"渋谷に行った。\" という文を形態素解析・分かち書きした際のPythonコードと結果を示します。\n\n[Python 3.10]\n```python\nimport simple_mecab\n\ntarget_sentence = \"渋谷に行った。\"\n\nmecab: simple_mecab.MeCabWrapper = simple_mecab.MeCabWrapper(args=r\"-r C:\\PROGRA~2\\MeCab\\etc\\mecabrc\", dict_type='ipadic')\n\nresult: list[simple_mecab.Morpheme] = mecab.parse(target_sentence)\n\n# 各形態素について属性を表示する\nfor r in result:\n    print(\"形態素\", r.token)\n    print(\"品詞\", r.pos0)\n    print(\"品詞細分類1\", r.pos1)\n    print(\"品詞細分類2\", r.pos2)\n    print(\"品詞細分類3\", r.pos3)\n    print(\"活用型\", r.conjugation_type)\n    print(\"活用形\", r.conjugation)\n    print(\"原型\", r.stem_form)\n    print(\"発音\", r.pronunciation)\n    print(\"\u003c分類失敗時\u003e\", r.unknown)\n    print('\\n')\n\n# 文を分かち書きする\nwakati_result: str = mecab.wakati_gaki(target_sentence)\nprint(\"文をスペース区切りの分かち書きにします。\")\nprint(wakati_result)\n```\n\n[出力]\n```\n形態素 渋谷\n品詞 名詞\n品詞細分類1 固有名詞\n品詞細分類2 地域\n品詞細分類3 一般\n活用型 None\n活用形 None\n原型 渋谷\n発音 シブヤ\n\u003c分類失敗時\u003e None\n\n\n形態素 に\n品詞 助詞\n品詞細分類1 格助詞\n品詞細分類2 一般\n品詞細分類3 None\n活用型 None\n活用形 None\n原型 に\n発音 ニ\n\u003c分類失敗時\u003e None\n\n\n形態素 行っ\n品詞 動詞\n品詞細分類1 自立\n品詞細分類2 None\n品詞細分類3 None\n活用型 五段・カ行促音便\n活用形 連用タ接続\n原型 行く\n発音 イッ\n\u003c分類失敗時\u003e None\n\n\n形態素 た\n品詞 助動詞\n品詞細分類1 None\n品詞細分類2 None\n品詞細分類3 None\n活用型 特殊・タ\n活用形 基本形\n原型 た\n発音 タ\n\u003c分類失敗時\u003e None\n\n\n形態素 。\n品詞 記号\n品詞細分類1 句点\n品詞細分類2 None\n品詞細分類3 None\n活用型 None\n活用形 None\n原型 。\n発音 。\n\u003c分類失敗時\u003e None\n\n\n文をスペース区切りの分かち書きにします。\n渋谷 に 行っ た 。\n```\n\nさらにサンプルコードを閲覧したい場合には[sample.ipynb](sample.ipynb)を参照してください。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkei-mag%2Fsimple-mecab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkei-mag%2Fsimple-mecab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkei-mag%2Fsimple-mecab/lists"}