実現したいこと
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」を実行した
それでも結果は変わらなかった
補足
特になし
> incompatible dictionary: c:/neologd/NEologd.dic
https://teratail.com/help/question-tips#questionTips35
https://teratail.com/help/question-tips#questionTips36
https://teratail.com/help/question-tips
は読みましたか?
読んだ結果を本文に反映ください。解決のヒントを探れるかもしれません。
本筋じゃないですけど、「issueを英語で書く必要はありません」はぜんぜんエラーではないですよ
トラブルシュートは https://github.com/SamuraiT/mecab-python3#common-issues を読んでね。それでも解決できなかったらissueに書いてね。ただ issueを英語で書く必要はありません
のメッセージでしかなくて、そこはエラーでもなんでもない
読めるところだけ読んでここがエラーだと思っただけで、つまり中身を読んでないな、って思われるだけですよ
(同じようにここをエラーだと思い人がでてきて参考に読むかもしれないので、タイトルはこのままでもいいかも? と思いつつ、そういう人の誤解は解きておきたいのでコメント)
●●●●
なお「issueを英語で書く必要はありません」の意味は、この質問の本筋だと思います。
mecab-python3はオープンソースソフトウェアですので、ソフトウェアに問題が起きたら開発元に報告して修正に協力しましょうということです。そういうオープンソースの文化も含めて、教授から教わってください。
●●●●
●●●●
あなたのクラスメートにも言っておいてください。ここに質問しにこないようにと。
実は教授でも解決出来なかったんです…
じゃあ他の教授なり助教なり院生なりに聞いてください。学校というのは研究と教育のために特別に人を集めている場所なのですから、いくらでも質問できる相手がいます。それができる機会を得るためにお金を払ってまで通っているのでしょう?
あと、上で私は「オープンソースの文化」と書きましたが、それがどういうものなのか自分でも調べたらどうですか。学校の図書館へ行ったりすれば参考になる書籍なども見つかるでしょうから、読んだらどうですか。そうやって自分で勉強できるようになるための時間と場所を与えてくれるのが、学校というところです。
●●●●
大変失礼しました。以後気を付けます。
ちなみにこれは課題ではないです。授業前の下準備です。
勉強のしかたを学ぶことも含めて勉強なの。
とにかく、質問は学校でしてください。ここには質問しに来るのではなく、学校で学んだ成果を活かして将来、当サイトで出されるさまざまな質問に回答しにきてください。
![guest](/img/icon/icnUserSample.jpg)
回答1件
あなたの回答
tips
プレビュー