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

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

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

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

Mecab

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

Q&A

解決済

3回答

4935閲覧

colaboratory MeCab.Tagger で辞書を指定しようとするとエラーになる。

doulichtruhis

総合スコア2

Python 3.x

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

Mecab

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

0グッド

0クリップ

投稿2021/08/30 08:43

編集2021/08/30 09:44

'08/30 18:00更新'
皆様ご指摘ありがとうございます。ご指摘のように引数を一つにしてみましたところ、こちらのようなエラーが出てしまいました。

mecab = MeCab.Tagger("-Ochasen -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd")


RuntimeError Traceback (most recent call last)
<ipython-input-24-a9f5c4f82fbf> in <module>()
1 import MeCab
----> 2 mecab = MeCab.Tagger("-Ochasen -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd")
3
4
5 # 文単位の名詞リストを生成

/usr/local/lib/python3.7/dist-packages/MeCab/init.py in init(self, *args)
97 def init(self, *args):
98 with _mecabrc_for_bundled_dictionary():
---> 99 super(Tagger, self).init(*args)
100
101

RuntimeError:

'①Mecabと辞書のインストール'
!apt-get -q -y install sudo file mecab libmecab-dev mecab-ipadic-utf8 git curl python-mecab > /dev/null
!git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git > /dev/null
!echo yes | mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n > /dev/null 2>&1
!pip install mecab-python3 > /dev/null

'②辞書のパス確認'
check path to "ipadic-neologd"
!echo mecab-config --dicdir"/mecab-ipadic-neologd"

→/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd

③形態素解析
import MeCab
mecab = MeCab.Tagger("-Ochasen", "-d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd")

③の形態素解析において、"-d~~の辞書指定の一節を入れるとエラーになります。(ない場合はエラーはなく、機能します)

エラーはこんなかんじです。
辞書指定について、どこが間違っているのでしょうか。

TypeError Traceback (most recent call last)
<ipython-input-20-f3d0c4a97aef> in <module>()
1 import MeCab
----> 2 mecab = MeCab.Tagger("-Ochasen", "-d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd")
3
4 # 文単位の名詞リストを生成
5 noun_list = [

/usr/local/lib/python3.7/dist-packages/MeCab/init.py in init(self, *args)
97 def init(self, *args):
98 with _mecabrc_for_bundled_dictionary():
---> 99 super(Tagger, self).init(*args)
100
101

TypeError: new_Tagger expected at most 1 arguments, got 2
Additional information:
Wrong number or type of arguments for overloaded function 'new_Tagger'.
Possible C/C++ prototypes are:
MeCab::Tagger::Tagger(char const *)
MeCab::Tagger::Tagger()

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

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

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

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

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

quickquip

2021/08/30 09:32

RuntimeError: の後ろが欠けていませんか?
quickquip

2021/08/30 09:35

コードやエラー、markdownで装飾されるとよみづらので、前後行を```にしてコード扱いにするとよいと思います。
doulichtruhis

2021/08/30 09:38

更新後の末尾のRuntimeError:ですが、その後はSearch Stack Overflowというポップアップが出ている以外は空白です。
jbpb0

2021/08/30 10:09 編集

Python経由じゃなくて、直接 !echo "これはテストです" | mecab -Ochasen -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd みたいに実行したら、何かエラー出ませんか?
doulichtruhis

2021/08/30 09:46 編集

申し訳ありません、初心者なのでよくわからず、直接いただいたコードをコラボラトリーで打ち込んだら下記のエラーが帰ってきました。 param.cpp(69) [ifs] no such file or directory: /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/dicrc
jbpb0

2021/08/30 09:52

> no such file or directory: /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/dicrc あれ? !ls -l /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd を実行したら、「dicrc」ってありませんか?
doulichtruhis

2021/08/30 09:56

こうでます。 ls: cannot access '/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd': No such file or directory colaboratoryのディレクトリを見てると、ここに辞書が落っこちてるみたいなんですが /content/mecab-ipadic-neologd
jbpb0

2021/08/30 10:02

!ls -l /content/mecab-ipadic-neologd を実行して、そこに何があるのか確認してください char.bin left-id.def pos-id.def right-id.def unk.dic dicrc matrix.bin rewrite.def sys.dic というファイルがありますか? bin ChangeLog diff misc README.md build COPYING libexec README.ja.md seed があるのなら、そこは違いますよ
doulichtruhis

2021/08/30 10:03

仰るとおり、該当のREADMEファイルがあったのでちがうみたいです。
jbpb0

2021/08/30 10:07

先ほどgoogle colabで、質問に書いてある !apt-get -q -y install sudo file mecab libmecab-dev mecab-ipadic-utf8 git curl python-mecab !git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git !echo yes | mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n !pip install mecab-python3 を全部やった後に、 !ls -l /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd をやって確認したら、そこに「dicrc」とか一通りありましたよ もしかしたら、上記手順でインストールした後に、ランタイムを再起動して消えてしまったのでは? もう一度インストールを全部やり直してから、「!ls -l...」で確認してみてください
doulichtruhis

2021/08/30 10:28

やった!!うまくいきました!! おっしゃったとおりコラボラトリーのファイルを新規で作り直したら、しっかりファイルが見つかり、 !ln -s /etc/mecabrc /usr/local/etc/mecabrc こちらも実施したら、想定したとおり辞書を反映しました! ありがとうございました!!
jbpb0

2021/08/30 10:34

google colabは、ランタイムを再起動したら、ファイルやインストールしたものが全部消えてしまうので、その度にインストールからやり直す必要があります
guest

回答3

0

ベストアンサー

引数を一つにしてみましたところ、こちらのようなエラーが出てしまいました。

python

1!ls -l /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd

を実行して、そこに「dicrc」があるか確認して、もしなければ下記を実行してから、再度上記を実行して確認

python

1!apt-get -q -y install sudo file mecab libmecab-dev mecab-ipadic-utf8 git curl python-mecab 2!git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git 3!echo yes | mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n 4!pip install mecab-python3

 
さらに、下記も実行

python

1!ln -s /etc/mecabrc /usr/local/etc/mecabrc

参考
google colab で mecab-ipadic-NEologd を使おうとしたら mecabrc がないと error が出る場合の対処法

投稿2021/08/31 11:57

jbpb0

総合スコア7651

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

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

0

動作未検証ですが

TypeError: new_Tagger expected at most 1 arguments, got 2

とあるように、引数が多いとのエラーです。

MeCab.Tagger("-Ochasen", "-d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd")

MeCab.Tagger("-Ochasen -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd")
のように引数を一つのコマンドライン文字列で渡してください。
参考:MeCabの使い方

投稿2021/08/30 08:59

can110

総合スコア38262

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

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

0

TypeError: new_Tagger expected at most 1 arguments, got 2

MeCab.Taggerは引数を1つのみ取るので、下記のように修正するとどうでしょうか?

mecab = MeCab.Tagger("-Ochasen -d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd")

投稿2021/08/30 08:56

texo

総合スコア31

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問