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

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

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

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

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

Mecab

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

Python

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

Q&A

解決済

1回答

4535閲覧

MeCabで追加したユーザー辞書が反映されない

CookieM

総合スコア7

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

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

Mecab

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

Python

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

0グッド

0クリップ

投稿2020/05/31 03:15

編集2020/05/31 14:45

##現象
windows10でjupyternotebookを利用しています。
1.mecabのipadic配下にuserdicフォルダを作成し、コンパイルしたuserdic.dicを格納
2.mecabrcにuserdicを記載

mecabrc

1; 2; Configuration file of MeCab 3; 4; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $; 5; 6dicdir = $(rcpath)..\dic\ipadic 7 8userdic = C:\Users\username\Documents\Tool\MeCab\dic\userdic\userdic.dic 9 10; output-format-type = wakati 11; input-buffer-size = 8192 12 13; node-format = %m\n 14; bos-format = %S\n 15; eos-format = EOS\n

3.jupyternotebookで辞書の反映を試みるも反映されていない

python

1import MeCab 2mecab = MeCab.Tagger(r'-d C:\Users\username\Documents\Tool\MeCab\dic\ipadic -u C:\Users\username\Documents\Tool\MeCab\dic\userdic\userdic.dic')

##試したこと
コマンドプロンプトでmecab textを辞書の反映は確認できました。
jupyternotebook上に反映されない原因として何が考えられるでしょうか。
よろしくお願い致します。

comandline

1C:\Users\username>echo "駿台模試と全統模試どっちが難しい?"|mecab -u C:\Users\username\Documents\Tool\MeCab\dic\userdic\userdic.dic 2" 蜷崎ゥ・繧オ螟画磁邯・*,*,*,*,* 3駿台模試 名詞,固有名詞,一般,*,*,*,すんだいもし,スンダイモシ,スンダイモシ 4 險伜捷,荳€闊ャ,*,*,*,*,* 5ニ全 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* 6統模試 險伜捷,荳€闊ャ,*,*,*,*,* 7ヌっ 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* 8ソが難しい 險伜捷,荳€闊ャ,*,*,*,*,* 9H 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* 10" 蜷崎ゥ・繧オ螟画磁邯・*,*,*,*,* 11EOS 12 13C:\Users\username>python 14Python 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32 15... 16>>> import MeCab 17>>> m = MeCab.Tagger(r"-Ochasen -u C:\Users\username\Documents\Tool\MeCab\dic\userdic\userdic.dic") 18>>> line = m.parse('駿台模試と全統模試どっちが難しい?') 19>>> word = line.split('\n') 20>>> word 21['駿台\tスンダイ\t駿台\t名詞-固有名詞-地域-一般\t\t', '模試\tモシ\t模試\t名詞-一般\t\t', 'と\tト\tと\t助詞-並立助詞\t\t', '全\tチョン\t全\t名詞-固有名詞-人名-姓\t\t', '統\tミツル\t統\t名詞-固有名詞-人名-名\t\t', '模試\tモシ\t模試\t名詞-一般\t\t', 'どっち\tドッチ\tどっち\t名詞-代名詞-一般\t\t', 'が\tガ\tが\t助詞-格助詞-一般\t\t', '難しい\tムズカシイ\t難しい\t形容詞-自立\t形容詞・イ段\t基本形', '?\t?\t?\t記号-一般\t\t', 'EOS', '']

システム辞書とユーザー辞書の情報

comandline

1C:\Users\username>mecab -D 2filename: C:\Users\username\Documents\Tool\MeCab\etc..\dic\ipadic\sys.dic 3version: 102 4charset: UTF-8 5type: 0 6size: 392126 7left size: 1316 8right size: 1316 9 10filename: C:\Users\username\Documents\Tool\MeCab\dic\userdic\userdic.dic 11version: 102 12charset: UTF-8 13type: 1 14size: 6 15left size: 1316 16right size: 1316 17コード

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

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

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

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

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

quickquip

2020/05/31 04:05

pythonはバージョン3系でいいですか。 > コマンドプロンプトでmecab textを辞書の反映は確認できました。 これがちょっと気になります。何をしましたか。
CookieM

2020/05/31 08:22

python3.7になります。 コマンドプロンプトに以下のコマンドを入力し、辞書に登録した単語(以下word)が表示されることを確認しました。 C:\Users\username>mecab -d C:\Users\username\Documents\Tool\MeCab\dic\ipadic -u C:\Users\username\Documents\Tool\MeCab\dic\userdic\userdic.dic word word 名詞,固有名詞,一般,*,*,*,ああああああ,アアアアアア,アアアアアア EOS
quickquip

2020/05/31 08:25

コマンドプロンプトのコードページを(mecabのために)いじったりしていますか?
quickquip

2020/05/31 08:26

あと情報はこの欄に書かないでください。ここは"質問への追記・修正の依頼"欄です。質問を編集して質問に載せましょう。
CookieM

2020/05/31 10:48

失礼しました。コードページについては操作は加えていない認識です。 mecabコマンドを実行した環境でchcpコマンドを入力をすると932と返ってきます。
quickquip

2020/05/31 12:31

ユーザー辞書が反映されないだけでPythonから普通のシステム辞書での解析ができる かつ コマンドプロンプトでも普通のシステム辞書+ユーザ辞書での解析ができる というのが状況的に"ありえない"感じがしていて悩ましいです。
CookieM

2020/05/31 12:44

コメントいただきありがとうございます。 試したことの詳細コードを掲載しました。コマンドプロンプト上でmecabとpython>mecabをそれぞれ実行しています。 mecabだけですと文字化けしていますがユーザー辞書に登録した「駿台模試」を読み込めているのですがpython>mecabのほうは読み込めていない状況になります。こちらから何か修正のヒントは得られないでしょうか。
guest

回答1

0

ベストアンサー

mecabだけですと文字化けしていますがユーザー辞書に登録した「駿台模試」を読み込めているのですが

plain

1C:\Users\username>mecab -d C:\Users\username\Documents\Tool\MeCab\dic\ipadic -u C:\Users\username\Documents\Tool\MeCab\dic\userdic\userdic.dic 2駿台 3 險伜捷,荳€闊ャ,*,*,*,*,* 4x 蜷崎ゥ・蝗コ譛牙錐隧・邨・ケ・*,*,*,* 5台 險伜捷,荳€闊ャ,*,*,*,*,* 6EOS 7駿台模試 8駿台模試 名詞,固有名詞,(略) 9EOS

こんな感じですか? (駿台と駿台模試が入力)

だとしたら、システム辞書がUTF-8で作られていて、ユーザ辞書がShiftJISで作られていますね。

コマンドプロンプトの入出力はShiftJISなのでシステム辞書からの出力(と辞書から引けなかった時の動作)が文字化け、ユーザ辞書からの出力は正しい。
Pythonの入出力はUTF-8なのでシステム辞書からの出力は正しく、ユーザ辞書からは引けない
という状況になると思います。

ユーザ辞書の作成で出力をShiftJISに指定しているのをやめればいいかと。


(追記)
システム辞書がUTF-8で作られていてユーザ辞書がShiftJISで作られている場合、ユーザ辞書の指定でincompatible dictionaryのエラーが出てmecabコマンドが動作しませんでした。
したがって上記は取り消します。

ユーザ辞書のseedファイルをShiftJISで作成した上で、ユーザ辞書の作成時にUTF-8を指定しても辞書作成ではエラーにならず、質問のような状況になります。

投稿2020/05/31 13:29

編集2020/06/01 00:36
quickquip

総合スコア11038

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

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

CookieM

2020/05/31 15:18

ご回答と整理ありがとうございます。 ご記載いただいた通りの内容が出力されました。 こちらの回答をヒントにmecab -Dの結果をみて(本文に掲載しております)UTF-8になっている…と 暫く悩んだのですが、コンパイルする前のcsvファイルがShiftJISになっていることに気づき、 UTF-8で再度保存、コンパイルしなおしたところうまくいきました! 一連のやりとりと調査で大変勉強させていただきました、ありがとうございました。
quickquip

2020/05/31 15:22

はい。同じ現象が再現できたところでした…… とりあえず解決してよかったです
quickquip

2020/06/01 00:37

回答も改めました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問