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

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

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

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

Mecab

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

Q&A

解決済

1回答

1366閲覧

「issueを英語で書く必要はありません。」を解決したい

PythonNINJYA

総合スコア20

Python 3.x

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

Mecab

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

0グッド

0クリップ

投稿2024/05/02 06:54

実現したいこと

PythonのMeCabでNeologd辞書を使ったフレーズ認識を授業で使えるようにしたい

発生している問題・分からないこと

Pythonの授業で教授から「NEologd.dic」の導入をして、Neologd辞書を使ったフレーズ認識を行ったのですが、その時に「issueを英語で書く必要はありません」というエラーが出ました。
NEologd.dicのパスはちゃんと合っていて、MeCabも辞書もインストールしたのに解決できません。

エラーメッセージ

error

1--------------------------------------------------------------------------- 2RuntimeError Traceback (most recent call last) 3File C:\anaconda\Lib\site-packages\MeCab\__init__.py:137, in Tagger.__init__(self, rawargs) 4 136 try: 5--> 137 super(Tagger, self).__init__(args) 6 138 except RuntimeError as ee: 7 8RuntimeError: 9 10The above exception was the direct cause of the following exception: 11 12RuntimeError Traceback (most recent call last) 13Cell In[1], line 3 14 1 import MeCab 15----> 3 tagger = MeCab.Tagger("mecabrc -u c:/neologd/NEologd.dic") 16 4 tagger.parse('')# 実行の準備 17 6 token=tagger.parseToNode('いつもながら、パスタランチはお気軽でいい感じ。今回は2種類のパスタを2人でシェア盛りにしてもらいました。\ 18 7 エビのオイルベースのショートパスタとトマトパスタ。あっさりした味付けで、いつの間にかペロリと食べてしまいます。お野菜を多く使ってヘルシーな内容 \ 19 8 になっていました。ブルーベリージャムのババロアは定番なのだとか。いつ行っても食べられそうで嬉しいです。') 20 21File C:\anaconda\Lib\site-packages\MeCab\__init__.py:139, in Tagger.__init__(self, rawargs) 22 137 super(Tagger, self).__init__(args) 23 138 except RuntimeError as ee: 24--> 139 raise RuntimeError(error_info(rawargs)) from ee 25 26RuntimeError: 27---------------------------------------------------------- 28 29Failed initializing MeCab. Please see the README for possible solutions: 30 31 https://github.com/SamuraiT/mecab-python3#common-issues 32 33If you are still having trouble, please file an issue here, and include the 34ERROR DETAILS below: 35 36 https://github.com/SamuraiT/mecab-python3/issues 37 38issueを英語で書く必要はありません。 39 40------------------- ERROR DETAILS ------------------------ 41arguments: mecabrc -u c:/neologd/NEologd.dic 42default dictionary path: C:\anaconda\Lib\site-packages\unidic\dicdir 43) [tokenizer_->open(param)] tokenizer.cpp(130) [sysdic->isCompatible(*d)] incompatible dictionary: c:/neologd/NEologd.dic 44----------------------------------------------------------

該当のソースコード

Python3

1import MeCab 2 3tagger = MeCab.Tagger("mecabrc -u c:/neologd/NEologd.dic") 4tagger.parse('')# 実行の準備 5 6token=tagger.parseToNode('いつもながら、パスタランチはお気軽でいい感じ。今回は2種類のパスタを2人でシェア盛りにしてもらいました。\ 7エビのオイルベースのショートパスタとトマトパスタ。あっさりした味付けで、いつの間にかペロリと食べてしまいます。お野菜を多く使ってヘルシーな内容 \ 8になっていました。ブルーベリージャムのババロアは定番なのだとか。いつ行っても食べられそうで嬉しいです。') 9 10 11while token: 12 print(token.surface,token.feature) 13 token = token.next

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

NEologd.dicのパスを確認した
「pip install unidic-lite」を実行した

それでも結果は変わらなかった

補足

特になし

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

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

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

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

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

quickquip

2024/05/02 15:48

本筋じゃないですけど、「issueを英語で書く必要はありません」はぜんぜんエラーではないですよ トラブルシュートは https://github.com/SamuraiT/mecab-python3#common-issues を読んでね。それでも解決できなかったらissueに書いてね。ただ issueを英語で書く必要はありません のメッセージでしかなくて、そこはエラーでもなんでもない 読めるところだけ読んでここがエラーだと思っただけで、つまり中身を読んでないな、って思われるだけですよ (同じようにここをエラーだと思い人がでてきて参考に読むかもしれないので、タイトルはこのままでもいいかも? と思いつつ、そういう人の誤解は解きておきたいのでコメント)
ikedas

2024/05/10 12:16 編集

●●●● なお「issueを英語で書く必要はありません」の意味は、この質問の本筋だと思います。 mecab-python3はオープンソースソフトウェアですので、ソフトウェアに問題が起きたら開発元に報告して修正に協力しましょうということです。そういうオープンソースの文化も含めて、教授から教わってください。 ●●●● ●●●● あなたのクラスメートにも言っておいてください。ここに質問しにこないようにと。
PythonNINJYA

2024/05/02 23:47

実は教授でも解決出来なかったんです…
ikedas

2024/05/10 12:13 編集

じゃあ他の教授なり助教なり院生なりに聞いてください。学校というのは研究と教育のために特別に人を集めている場所なのですから、いくらでも質問できる相手がいます。それができる機会を得るためにお金を払ってまで通っているのでしょう? あと、上で私は「オープンソースの文化」と書きましたが、それがどういうものなのか自分でも調べたらどうですか。学校の図書館へ行ったりすれば参考になる書籍なども見つかるでしょうから、読んだらどうですか。そうやって自分で勉強できるようになるための時間と場所を与えてくれるのが、学校というところです。 ●●●●
PythonNINJYA

2024/05/03 01:33

大変失礼しました。以後気を付けます。 ちなみにこれは課題ではないです。授業前の下準備です。
ikedas

2024/05/03 02:06

勉強のしかたを学ぶことも含めて勉強なの。 とにかく、質問は学校でしてください。ここには質問しに来るのではなく、学校で学んだ成果を活かして将来、当サイトで出されるさまざまな質問に回答しにきてください。
guest

回答1

0

ベストアンサー

default dictionary path: C:\anaconda\Lib\site-packages\unidic\dicdir

とでているところを見るとunidicパッケージをインストールしていますね

メッセージ"issueを英語で書く必要はありません。"がでているということはmecab-python3を使っていますね

mecab-python3は、import unidicimport unidic_liteが成功すると、問答無用でその辞書をシステム辞書として使う様な挙動をします
(参考)
https://github.com/SamuraiT/mecab-python3/blob/v1.0.9/src/MeCab/__init__.py#L62
https://github.com/SamuraiT/mecab-python3/blob/v1.0.9/src/MeCab/__init__.py#L125

NEologdはIPA品詞体系で、UniDicとは品詞体系が異なります
メイン辞書とユーザ辞書で品詞体系が違うと動くはずがないですから、そのチェックで引っかかって"incompatible dictionary"だと言われているのです

まずはunidicパッケージやunidic-liteパッケージを削除してimport unidicimport unidic_liteが失敗するようにしてください


あと MeCab.Tagger("mecabrc -u c:/neologd/NEologd.dic")としてますけれど、オプションなしにmecabrcをいきなり指定するとどう動くのか知らないです
MeCab.Tagger("-r mecabrc -u c:/neologd/NEologd.dic")でカレントディレクトリにあるmecabrcを指定したかったのかな? とは感じました

投稿2024/05/02 07:18

編集2024/05/02 08:38
quickquip

総合スコア11202

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

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

PythonNINJYA

2024/05/03 01:54

>>unidic-liteパッケージをアンインストール やり方をネットで調べてみたのですが、イマイチやり方が分かりません。 これはファイルを普通に削除(右クリック削除)すればよろしいのでしょうか?
quickquip

2024/05/03 04:40

どうやってインストールしたのか? という情報が欠けてます pip uninstall unidic-lite か conda uninstall unidic-lite だとは思いますが
PythonNINJYA

2024/05/04 08:45

そうですね、pip uninstall unidic-liteでインストールしました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問