snoopy55
@snoopy55

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

pythonで指定した辞書(mecab-ipadic-neologd)を使う時のエラーを解決したい(windows)

解決したいこと

pythonで指定した辞書(mecab-ipadic-neologd)を使えるようにしたいです。
下記に実行したコード、エラー、自分で試したことを記載します。
アドバイスを頂けますと大変助かります。

実行環境

・windows10
・python3.8.5
・Mecab 0.996.2
・mecab-0.996.2(Pyhtonライブラリ)
・Ubuntu 20.04 LTS

自分で進めていたこと

下記サイトを参考に1~5まで実施したものの、6ができない状況です。
(以下「発生している問題・エラー」「該当するソースコード」にも関連します)
1.Mecabのインストール
2.PythonでMecabを標準の辞書で動かすこと
3.Ubuntuのインストール
4.mecab-ipadic-NEologd辞書のダウンロード
5.mecab-ipadic-NEologd辞書ファイルのコンパイル
6.PythonでNEologd辞書を指定してMecabを利用する

発生している問題・エラー

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-46-724e92af0b23> in <module>
      1 import MeCab
      2 
----> 3 mecab = MeCab.Tagger(r'-Owakati -d C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910')
      4 target_str = "DOS窓では、基本的には日本語がアウトです"
      5 print(mecab.parse(target_str))

D:\anaconda\lib\site-packages\MeCab.py in __init__(self, *args)
    353 
    354     def __init__(self, *args):
--> 355         _MeCab.Tagger_swiginit(self, _MeCab.new_Tagger(*args))
    356 
    357     def parseToString(self, str, length=0):

RuntimeError: 

該当するソースコード

import MeCab

mecab = MeCab.Tagger(r'-Owakati -d C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910')
target_str = "DOS窓では、基本的には日本語がアウトです"
print(mecab.parse(target_str))

自分でトライしたこと(解決に至らず)

●空白が入っているディクレトリに辞書を置かないこと
●使用するシステム辞書を指定するために、「-d」を用いること
●また、「build\mecab-ipadic-2.7.0-20070801-neologd-20170420」をディレクトリとして指定すること
●(pythonで)Mecabの標準辞書で動くことは確認済み
→実行結果
b.PNG
●コマンドプロンプト上では、NEologd辞書で動くことは確認済み
コード:mecab -d C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910
→実行結果
a.PNG
●別のフォルダを参照先にしようとしたものの、「発生している問題・エラー」が同様にでてしまいます(写真の通り辞書は確かにあるはずなのですが…)。
別のフォルダ:C:\Users\tyamada\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\opt\mecab\mecab-ipadic-neologd\build\mecab-ipadic-2.7.0-20070801-neologd-20200910
image.png

解決のために参考にしたサイト

0

6Answer

下記をコマンドプロンプトで実行したら、どういう結果が表示されますか?

echo 'DOS窓では、基本的には日本語がアウトです' | mecab -Owakati -d C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910
0Like

Comments

  1. @snoopy55

    Questioner

    コメントありがとうございます!
    下記の通りになりました。

    (入力内容)
    C:\Users\tyamada>echo 'DOS窓では、基本的には日本語がアウトです' | mecab -Owakati -d C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910

    (出力結果)
    ' DOS 窓・ナ・ヘ・A 基本・I には日本語が・A ・E ・g ・ナ・キ '

下記のコードを(IPythonではなく)Pythonから直接実行したら、どういう結果が表示されますか?

import MeCab

mecab = MeCab.Tagger(r'-Owakati -d C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910')
target_str = "DOS窓では、基本的には日本語がアウトです"
print(mecab.parse(target_str))
0Like

Comments

  1. @snoopy55

    Questioner

    以下の通り出力されました!
    「該当するソースコード」と同じ内容のはずなのにうまく回りましたが、なぜでしょうか…?

    入力内容
    ```
    import MeCab

    mecab = MeCab.Tagger(r'-Owakati -d C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910')
    target_str = "DOS窓では、基本的には日本語がアウトです"
    print(mecab.parse(target_str))
    ```

    出力結果
    ```
    DOS窓 で は 、 基本的 に は 日本語 が アウト です
    ```

IPythonからそのフォルダにアクセスする権限はありますか?

IPythonで下記のコードを実行して、フォルダの中にあるファイルの一覧が表示されれば、権限はあると思います。(表示されなければ、ない)

import glob

files = glob.glob(r"C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910")
for file in files:
    print(file)

参考

0Like

Comments

  1. @snoopy55

    Questioner

    ありがとうございます!
    以下の通り、python、ipython同じ出力結果になりました。
    いずれもアクセス権があるのかなと思います。

ありがとうございます!
以下の通り、python、ipython同じ出力結果になりました。
いずれもアクセス権があるのかなと思います。

python
#入力内容
import glob

files = glob.glob(r"C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910")
for file in files:
    print(file)

#出力結果
C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910

ipython
#入力内容
import glob

files = glob.glob(r"C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910")
for file in files:
    print(file)

#出力結果
C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910

0Like

すみません、コードを間違えました。
IPythonで下記のコードを実行したら、ファイルの一覧が表示されますか?

import glob

files = glob.glob(r"C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\*")
for file in files:
    print(file)
0Like

Comments

  1. @snoopy55

    Questioner

    ありがとうございます!
    以下のようにフォルダ内のファイルが出力されましたので、アクセスできているように思います。

    (出力結果)
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\aclocal.m4
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Adj.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Adnominal.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Adverb.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\AUTHORS
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Auxil.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\ChangeLog
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\char.bin
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\char.def
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\config.guess
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\config.log
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\config.status
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\config.sub
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\configure
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\configure.in
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Conjunction.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\COPYING
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\dicrc
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\feature.def
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Filler.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\INSTALL
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\install-sh
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Interjection.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\left-id.def
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Makefile
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Makefile.am
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Makefile.in
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\matrix.bin
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\matrix.def
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\mecab-user-dict-seed.20200910.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\missing
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\mkinstalldirs
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\neologd-adjective-std-dict-seed.20151126.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\neologd-adjective-verb-dict-seed.20160324.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\neologd-adverb-dict-seed.20150623.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\neologd-common-noun-ortho-variant-dict-seed.20170228.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\neologd-ill-formed-words-dict-seed.20170127.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\neologd-interjection-dict-seed.20170216.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\neologd-noun-sahen-conn-ortho-variant-dict-seed.20160323.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\neologd-proper-noun-ortho-variant-dict-seed.20161110.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\NEWS
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Noun.adjv.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Noun.adverbal.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Noun.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Noun.demonst.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Noun.nai.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Noun.name.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Noun.number.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Noun.org.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Noun.others.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Noun.place.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Noun.proper.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Noun.verbal.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Others.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\pos-id.def
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Postp-col.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Postp.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Prefix.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\README
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\RESULT
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\rewrite.def
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\right-id.def
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Suffix.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Symbol.csv
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\sys.dic
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\unk.def
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\unk.dic
    C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910\Verb.csv

下記のコードをIPythonで実行したら、どうなりますか?(ディレクトリ指定のみ)

import MeCab

mecab = MeCab.Tagger(r'-d C:\Users\tyamada\OneDrive\デスクトップ\test\build\mecab-ipadic-2.7.0-20070801-neologd-20200910')
target_str = "DOS窓では、基本的には日本語がアウトです"
print(mecab.parse(target_str))

また、辞書フォルダをC直下にコピーして、下記のコードをIPythonで実行したら、どうなりますか?

import MeCab

mecab = MeCab.Tagger(r'-Owakati -d C:\mecab-ipadic-2.7.0-20070801-neologd-20200910')
target_str = "DOS窓では、基本的には日本語がアウトです"
print(mecab.parse(target_str))
0Like

Your answer might help someone💌