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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

10368閲覧

MeCabのシステム辞書が使えない

kazushige

総合スコア20

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/07/03 07:24

MeCabは、インストールして、使えるようになったのですが、MeCabのシステム辞書を使えるようにするため、mecab-ipadic-NEologdをダンロードして、システム辞書の使用を指定しましたが、
エラーが出て使用できません。何が悪いのか分かりません。ご指示、ヒント、解決方向を
ご指導お願いいたします。

1.環境:Windows10、python3.5、MeCab,Anaconda3
mecab-ipadic-NEologdをダンロードして以下のところに入っいています。
全部試してみましたが、同じエラーになります。

C:\Program Files (x86)\MeCab\dic\ipadic-neologd"
C:/Users/momo/AppData/Local/Programs/Python/Python35/MeCab/dic/ipadic-neologd
C:\Program Files\MeCab\dic\ipadic-neologd
C:/Program Files (x86)/MeCab/dic/ipadic-neologd

2.プログラム:
import MeCab
m = MeCab.Tagger ("-Ochasen")
print(m.parse ("恋ダンスを踊っている。"))
m = MeCab.Tagger("-d C:/Users/momo/mecab-ipadic-neologd")
print(m.parse ("恋ダンスを踊っている。"))

3.実行結果:
恋 コイ 恋 名詞-一般
ダンス ダンス ダンス 名詞-サ変接続
を ヲ を 助詞-格助詞-一般
踊っ オドッ 踊る 動詞-自立 五段・ラ行 連用タ接続
て テ て 助詞-接続助詞
いる イル いる 動詞-非自立 一段 基本形
。 。 。 記号-句点
EOS


RuntimeError Traceback (most recent call last)
<ipython-input-31-187153d20cd6> in <module>()
5 print(m.parse ("恋ダンスを踊っている。"))
6
----> 7 m = MeCab.Tagger("-d C:/Users/momo/mecab-ipadic-neologd")
8 print(m.parse ("恋ダンスを踊っている。"))
9

~\Anaconda3\lib\site-packages\MeCab.py in init(self, *args)
489
490 def init(self, *args):
--> 491 this = _MeCab.new_Tagger(*args)
492 try:
493 self.this.append(this)

RuntimeError:

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

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

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

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

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

t_obara

2019/07/03 07:39

実行しているフォルダにmecab-ipadic-neologdをフォルダごとコピーし、 m = MeCab.Tagger("-d mecab-ipadic-neologd")で試して見てはいかがでしょうか。これでうまくいくのであれば、ディレクトリセパレータの指定に問題があると思われます。
kazushige

2019/07/03 08:45

早速のご教示ありがとうございます。m = MeCab.Tagger("-d mecab-ipadic-neologd")で試して見てましたが、同じエラーになります。ディレクトリセパレータの指定に問題があるとのではと思い、色々確かめてみましたが、ダメでした。下の方に記載しましたが、色々の所にmecab-ipadic-neologdをフォルダごとコピーして、あえいでみましたが、ダメでした。  ところで、"-d mecab-ipadic-neologd"の指定の意味が分からなかったのですが・・
quickquip

2019/07/03 09:06

mecabコマンドで解析できることは確認していますか?
kazushige

2019/07/03 10:05

m = MeCab.Tagger ("-Ochasen")で解析した結果が、実行結果に締め切りシステム絵あります。m = MeCab.Tagger ()でも試していて、うまくいっています。
kazushige

2019/07/03 10:08

修正します。m = MeCab.Tagger ("-Ochasen")で解析した結果が、実行結果に示してあります。m = MeCab.Tagger ()でも試していて、うまくいっています。
quickquip

2019/07/03 10:29

いえ、Pythonからではなくてmecabコマンドからneologdが使えることを確認していますか? ということでした。
kazushige

2019/07/03 10:52

mecabコマンドからneologdが使う確認の具体的な方法は分かりませんが、 コマンドプロプトにmecabを入力し、次に日本文を入力すると、解析は されます。(分解された説明は漢字が意味不明ですが)
t_obara

2019/07/04 03:38

コマンドプロンプトでシステム辞書が使えるの?という質問でしょう。 これまでのやりとりから、そもそもシステム辞書が壊れているのでは?という疑問が生じますし。
guest

回答1

0

Windowsでmecabを使うのは色々と苦行ですよね。

mecabコマンドでシステム辞書の場所を指定するのが -dオプションです。
なぜ-dで指定することを知っているのに、"neologdが使う確認の具体的な方法は分かりません"なのか謎で困惑しています。

コマンドプロンプトで

plain

1mecab -d C:/Users/momo/mecab-ipadic-neologd

で試せばいいでしょう。


確定的にわかったこと

パス区切りは/でも\でもいい。

\を使う場合Pythonの文字列リテラルの中ではエスケープ文字として動くので2重にするかrow文字列リテラルを使うべき

python

1MeCab.Tagger("-d C:/Users/momo/mecab-ipadic-neologd") 2MeCab.Tagger("-d C:\Users\momo\mecab-ipadic-neologd") 3MeCab.Tagger(r"-d C:\Users\momo\mecab-ipadic-neologd")

のいずれか。

空白が入っているディクレトリに辞書を置かない方がよい。
コマンドでは mecab -d "c:/a b/mecab-ipadic-neologd"と指定できるが、Pythonからは空白を含むディレクトリを指定できない(おそらくは回避する手段はないと思われますが、mecabのソースを調べないといけないので不明)。


推測できること

Pythonから解析できているので、おそらくデフォルトのシステム辞書はUTF-8で作られている。
WindowsのコマンドプロンプトのデフォルトがShift-JISなのでUTF-8で作られた辞書の品詞情報が読めなくなっていることも傍証となる。


まったく不明なこと

mecab-ipadic-neologd はどこからどういうものを入手したのか?


追記

https:
//github.com/neologd/mecab-ipadic-neologd.git は辞書をコンパイルするためのソースコードだけですので、cloneしただけでは辞書は作られていません。
そして、readmeを見れば分かるとおり、Windowsでこれを動かすための手順はここにはありません。

エラーは単に「辞書がない」ために起きているだけでしょう。

投稿2019/07/05 04:16

編集2019/07/06 12:03
quickquip

総合スコア11038

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

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

kazushige

2019/07/06 06:32

mecab -d C:/Users/momo/mecab-ipadic-neologd は試しているのですが、不思議なことに、次のエラーが出てしまいます。 「param.cpp(70) [ifs] no such file or directory: C:/Users/momo/mecab-ipadic-neologd\dicrc」  システム辞書は、次のどっちで行ったのかわすれてしまいました。 pip install mecab-python-windows git clone --depth 1 https: //github.com/neologd/mecab-ipadic-neologd.git  mecab-ipadic-neologdのseedの中身を調べたら、 xzファイルと解凍したcsvファイルがあり、 多くの年月のファイルまでも入っていたのですが、 問題は起きないとそのままにしてあります。  現在は、C:\Program Files (x86)\MeCab\etcの中のmecabc修正を試みています。 dicdir = $(rcpath)..\dic\ipadicを次の2文に修正したいのですが、 dicdir = $(rcpath)..\dic\ipadic-neologd userdic = C:\Program Files\MeCab\dic\NEologd\Neologd.20190610.dic 管理者権限で、セキュリィを変更して変更できるようにしたのですが、 拒絶されてしまいます。試しに、C:\Program Files\MeCab\etcの方の、 mecabcに同じことを行うと成功しています。対策を調査中です。
kazushige

2019/07/06 13:34

C:\Program Files (x86)\MeCab\etcの中のmecabcの修正を試みは、姑息な方法で成功させましたが、システム辞書が使えない状況は改善されませんでした。もう一度、初めからやりなおしてみます。
kazushige

2019/07/08 04:25

https://github.com/neologd/mecab-ipadic-neologd.gitから NEologd辞書システム辞書をダンロードし、 cd mecab-ipadic-neologd\seed dir で中身を確認し、これら.csv.xzファイルを以下のコマンドで7-zipで展開。 展開された中身も確認しています。 もう少し独自で調査を進めてみます。
quickquip

2019/07/08 05:39

それは辞書のエントリのファイルでしかなく、mecabの辞書ファイルではありません。 https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md#mecab-ipadic-neologd-%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A8%E6%9B%B4%E6%96%B0 にしたがって辞書ファイルを作成する必要がありますが、これはWindowsのコマンドプロンプトではできません。 Windows上でも、Windows Subsystem for Linux を使って実行している人は見受けられますが知識は要ります。 VirtualBoxなどでLinux仮想マシンを使った方が早いかとは思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問