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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Mecab

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

214閲覧

ipadic-NEologdインストール時のエラーを解消したい。

SmaSTATION

総合スコア29

Mecab

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2024/01/17 05:09

実現したいこと

ipadic-NEologdをGoogleコラボ上でインストールし、形態素解析を行いたいと思っています。
参考にしているページは参考ページ様になっております。
最後の部分でエラーが起きていて、困っております。

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

形態素解析の部分でTaggerクラスの部分にエラーが出ている。

エラーメッセージ

error

1Failed initializing MeCab. Please see the README for possible solutions: 2 3 https://github.com/SamuraiT/mecab-python3#common-issues 4 5If you are still having trouble, please file an issue here, and include the 6ERROR DETAILS below: 7 8 https://github.com/SamuraiT/mecab-python3/issues 9 10issueを英語で書く必要はありません。 11 12------------------- ERROR DETAILS ------------------------ 13arguments: -d /content/drive/MyDrive/Colab\ Notebooks/Demo/pylibs/mecab-ipadic-neologd 14default dictionary path: None 15[ifs] no such file or directory: /content/drive/MyDrive/Colab Notebooks/Demo/pylibs/etc/mecabrc

該当のソースコード

Python

1import MeCab 2# Taggerに渡す文字列中の空白は\ (backslash)でエスケープ 3path2dic = "/content/drive/MyDrive/Colab\ Notebooks/Demo/pylibs/mecab-ipadic-neologd" 4mecab = MeCab.Tagger("-d {0}".format(path2dic)) 5print(m.parse("c++はc言語から派生したプログラミング言語だよ"))

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果
  • taggerの()内を空欄にした⇒エラー解消せず。

補足

𠮟咤激励含めて、些細なことからでもよろしくお願いいたします。

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

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

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

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

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

melian

2024/01/17 05:40

エラーメッセージには、 > [ifs] no such file or directory: /content/drive/MyDrive/Colab Notebooks/Demo/pylibs/etc/mecabrc と表示されていますが、ソースコードでは、 dic = "/content/drive/MyDrive/Colab\ Notebooks/Demo/pylibs/mecab-ipadic-neologd" とされています。何らかの書き間違いがあるのではないでしょうか。
quickquip

2024/01/17 08:43

確認した位置にある辞書データをコピー のセルのところでファイルが存在していて本当にコピーされたのか、確認していますか?
guest

回答2

0

検索等で来た人へのメモ

1つ目のセルは

! apt-get -q -y install sudo file mecab libmecab-dev mecab-ipadic-utf8 git curl ! 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

とする。

  1. Ubuntu22.04 LTSで存在しない python-mecab は入れない
  2. エラー、途中経過の表示が消されているのを無くす

mecab-ipadic-neologd/bin/install-mecab-ipadic-neologdの実行がOSDNからのダウンロードで止まることがありえる。その場合

  1. 本家 https://taku910.github.io/mecab/#download から IPA 辞書 のダウンロードにいって mecab-ipadic-2.7.0-20070801.tar.gz をローカルにダウンロード
  2. colab の左ペインで ファイル を開いてアップロード
  3. 展開して、ビルドディレクトリに移動して。その後ビルドを再実行(新しいセルを作って実行するとよい)
    ! tar xf mecab-ipadic-2.7.0-20070801.tar.gz ! mkdir -p mecab-ipadic-neologd/build ! mv mecab-ipadic-2.7.0-20070801.tar.gz mecab-ipadic-2.7.0-20070801 mecab-ipadic-neologd/build ! echo yes | mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n
  4. コピーするディレクトリを念のため作っておくコマンド。「/etc/mecabrcが辞書データ参照時に必要なのでetcフォルダごとコピー↓」は不要でmecabrcだけあればいい
    # 「Colab Notebooks」の間にある空白は\ (backslash)でエスケープ ! mkdir -p /content/drive/MyDrive/Colab\ Notebooks/Demo/pylibs ! cp -r /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd /content/drive/MyDrive/Colab\ Notebooks/Demo/pylibs # /etc/mecabrcが辞書データ参照時に必要なのでetcフォルダごとコピー↓ ! mkdir -p /content/drive/MyDrive/Colab\ Notebooks/Demo/pylibs/etc ! cp /etc/mecabrc /content/drive/MyDrive/Colab\ Notebooks/Demo/pylibs/etc
  5. mecab-python3で空白入りディレクトリを扱うには文字列データの中で""でくくるだけでもいい (mecab-python3の独自拡張なので注意)
    import MeCab path2dic = "/content/drive/MyDrive/Colab Notebooks/Demo/pylibs/mecab-ipadic-neologd" m = MeCab.Tagger('-d "{0}"'.format(path2dic)) print(m.parse("c++はc言語から派生したプログラミング言語だよ"))

余談
"/content/drive/MyDrive/Colab\ Notebooks/Demo/pylibs/mecab-ipadic-neologd"
r"/content/drive/MyDrive/Colab\ Notebooks/Demo/pylibs/mecab-ipadic-neologd"
"/content/drive/MyDrive/Colab\\ Notebooks/Demo/pylibs/mecab-ipadic-neologd" の方がちゃんと書いている感がある

https://docs.python.org/ja/3/reference/lexical_analysis.html#index-24

標準の C とは違い、認識されなかったエスケープシーケンスはすべて、そのまま文字列中に残ります。すなわち、バックスラッシュも結果中に残ります。

という仕様なので正しいけれど

投稿2024/01/23 01:14

編集2024/01/23 01:33
quickquip

総合スコア11044

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

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

0

自己解決

今回は再読み込みをしたくない!という思いでこちらの参考ページ様を参考にしましたが、それを断念し、GiNZA経由で毎回呼び出して使うことにしました。
ご協力いただいた方、ありがとうございました!

投稿2024/01/19 06:58

SmaSTATION

総合スコア29

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問