質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

3413閲覧

MeCabに作成したユーザー辞書を追加したのですが、Python上でエラーがおきてしまいます

hasegawahakase

総合スコア1

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/29 08:59

編集2021/10/29 09:59

プログラミング初心者です。
MeCabに作成したユーザー辞書を追加したのですが、Python上でエラーがおきてしまい困っています、、

utf-8で作成したcsvファイル(dic3.csv)から、
(例 J:COM,1288,1288,1000,名詞,固有名詞,一般,,,*,J:COM,ジェイコム,じぇいこむ)
以下のようにユーザー辞書(original2.dic)をコンパイル(?)しました。

mecab-dict-index -d "C:/Program Files/MeCab/dic/ipadic" -u original2.dic -f utf-8 -t utf-8 dic3.csv

その後、mecabrcへ以下のように記載を行い辞書の登録を行いました。

userdic = C:\Program Files\MeCab\dic\ipadic\original2.dic

※追記です
mecabrcは以下の場所にあります
C:\Program Files\MeCab\etc\mecabrc

その結果、以下のような状態となっています。

mecab -D filename: C:\Program Files\MeCab\etc..\dic\ipadic\sys.dic version: 102 charset: UTF-8 type: 0 size: 392126 left size: 1316 right size: 1316 filename: C:\Program Files\MeCab\dic\ipadic\original2.dic version: 102 charset: utf-8 type: 1 size: 305 left size: 1316 right size: 1316

PowerShell上で実行を行うと、以下のようになり、一応ユーザー辞書の内容が結果に反映されているようだということまではわかりました。

WindowsPowerShell

1PS C:\Users\lklng> mecab 2J:COM 3J 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* 4: 蜷崎ゥ・繧オ螟画磁邯・*,*,*,*,* 5COM 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* 6EOS 7 8PS C:\Users\lklng> mecab -u "C:\Program Files\MeCab\dic\ipadic\original.dic" 9J:COM 10J:COM 名詞,固有名詞,一般,*,*,*,J:COM,ジェイコム,じぇいこむ 11EOS

前提・実現したいこと

これらをふまえ、追加したユーザー辞書をPython上でのMeCabの実行へ反映したいのですが、以下のようなエラーがかえってきてしまい困っています、、

発生している問題・エラーメッセージ

Python - 辞書テスト.py:1 Traceback (most recent call last): File "C:\Users\lklng\anaconda3\lib\site-packages\MeCab\__init__.py", line 133, in __init__ super(Tagger, self).__init__(args) RuntimeError The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\lklng\AppData\Local\Temp\atom_script_tempfiles\2021929-61608-1ji56vg.013a", line 5, in <module> m=mc.Tagger("-Ochasen -u C:\Program Files\MeCab\dic\ipadic\original2.dic")# ここで作成した辞書を読み込む File "C:\Users\lklng\anaconda3\lib\site-packages\MeCab\__init__.py", line 135, in __init__ raise RuntimeError(error_info(rawargs)) from ee RuntimeError: ---------------------------------------------------------- Failed initializing MeCab. Please see the README for possible solutions: https://github.com/SamuraiT/mecab-python3#common-issues If you are still having trouble, please file an issue here, and include the ERROR DETAILS below: https://github.com/SamuraiT/mecab-python3/issues issueを英語で書く必要はありません。 ------------------- ERROR DETAILS ------------------------ arguments: -Ochasen -u C:\Program Files\MeCab\dic\ipadic\original2.dic ) [tokenizer_->open(param)] tokenizer.cpp(127) [d->open(dicfile[i])] dictionary.cpp(79) [dmmap_->open(file, mode)] no such file or directory: C:Program ----------------------------------------------------------

該当のソースコード

Python

1import MeCab as mc 2text ="J:COM" 3m=mc.Tagger(r"-Ochasen -u C:\Program Files\MeCab\dic\ipadic\original2.dic")#ここで作成した辞書を読み込む 4m1=m.parse(text) 5print(m1)

※追記です
システム辞書のみだと以下のような結果がかえってきます

Python

1import MeCab as mc 2text = "J:COM" 3m=mc.Tagger("-Ochasen")# ここで作成した辞書を読み込む 4m1=m.parse(text) 5print(m1) 6 7J J J 名詞-固有名詞-組織 8: : : 名詞-サ変接続 9COM COM COM 名詞-固有名詞-組織 10EOS

試したこと

ネット上にある似たような質問や解説サイトなどをあさり、
sysdicの指定(-d C:\Program Files\MeCab\dic\ipadic)やパスの省略(-u original2.dic)
等をためしたのですが、結局どうすればいいのかわかりませんでした。。

なにか解決策がありましたら、教えていただけますでしょうか。

(質問の形式の不備や、情報の不足などありましたらご指摘ください、、)

補足情報(FW/ツールのバージョンなど)

Windows10
Python 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
mecab of 0.996

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2021/10/29 09:43 編集

m=mc.Tagger() は動くのでしょうか? mecabrcはどこにありますか?
hasegawahakase

2021/10/29 10:02

反応ありがとうございます。以下の内容を本文にも追記しています。 ・m=mc.Tagger("-Ochasen") での実行結果を追記しました。 システム辞書での実行は一応できている(?)と思います、、 ・mecabrcは以下の場所にあります C:\Program Files\MeCab\etc\mecabrc
jbpb0

2021/10/30 01:29

original2.dicのパスはmecabrcに登録してるのだから、mecabrcのパスを環境変数MECABRCに登録して認識させたら、Pythonコードは m=mc.Tagger("-Ochasen") だけでいけるかも 参考 https://qiita.com/fu23/items/34f55f0b7aaa7e2205b8 の「導入手順」の「2. 環境変数を設定」の後半
quickquip

2021/10/30 13:04 編集

メッセージを見るとmecab-python3のようなんですが、なぜ C:\Program Files\MeCab\etc\mecabrc を見にいっている理由がわからないでいます。環境変数MECABRCを設定していたりしますか? 回答自体はcan110さんのものでいいと思いました。 解決しないようであれば 使っているmecabバインディングはmecab-python3で合っていますか? バージョンはいくつでしょうか? どうやってインストールしたのでしょうか? mecabバインディングを複数入れていたりしないでしょうか? あたりの情報があるといいと思いました。
guest

回答1

0

動作未検証ですがエラー詳細no such file or directory: C:Program から
r'-Ochasen -u "C:\Program Files\MeCab\dic\ipadic\original2.dic"'のようにパスを"で囲むと解消するかもしれません。

投稿2021/10/29 10:05

can110

総合スコア38264

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問