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

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

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

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

Q&A

0回答

263閲覧

MeCabがエラーとなり使えない

Kodanosuke

総合スコア42

Python 3.x

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

0グッド

1クリップ

投稿2019/02/28 01:11

Pyhon3.2でMeCabを使い,形態素解析をしようとしています.
商品レビューのリストがあり,それぞれのレビューにはその商品に対するレートがついています.
いまやろうとしていることは,レートごとにレビューを分類し,形態素解析をすることです.
以下のコードを実行すると,エラーが出てしまいます.

File "C:\ProgramData\Anaconda3\lib\site-packages\MeCab.py", line 491, in init
this = _MeCab.new_Tagger(*args)

RuntimeError
これは何が原因でしょうか.

Ptyhon

1# -*- coding: utf-8 -*- 2""" 3Created on Thu Feb 14 18:29:03 2019 4 5@author: kodaira-sh 6""" 7 8import pandas as pd 9import MeCab 10import re 11import collections 12import jaconv 13 14#ファイルを読み込んでレビューと購入履歴をリスト化する 15file = pd.ExcelFile('AmazonReviewList.xlsx', encoding='utf-8') 16sheet_df = file.parse('Review', header = 0) 17prereview = sheet_df['text_fragment'] 18purchase = sheet_df['verified_purchase'] 19prerating = sheet_df['overall_rating'] 20prereview = prereview.values.tolist() 21purchase = purchase.values.tolist() 22 23#レビューを1つの文字列に結合する 24delimiter = '::' 25item1 = map(str,prereview) 26item = str(delimiter.join(item1)) 27 28#テキストデータのクリーニング 29review = [] 30preprepre = [] 31prepre = [] 32pre = [] 33 34p = re.compile(r"<[^>]*?>") 35q = re.compile(r"、") 36r = re.compile(r"。") 37s = re.compile("^(http|https)://([-\w]+.)+[-\w]+(/[-\w./?%&=]*)?$") 38preprepre.append(p.sub("", item)) 39prepre.append(q.sub("",str(preprepre))) 40pre.append(r.sub("",str(prepre))) 41review.append(jaconv.z2h(s.sub("",str(pre)),digit=True)) 42review = str(review).split(delimiter) 43row = len(review) 44 45#レートごとにレビューを振り分け 46prerate1 = [[],[]] 47prerate2 = [[],[]] 48prerate3 = [[],[]] 49prerate4 = [[],[]] 50prerate5 = [[],[]] 51 52for i in range(row): 53 if prerating[i] == 5: 54 prerate5[0].append(prerating[i]) 55 prerate5[1].append(review[i]) 56 elif prerating[i] == 4: 57 prerate4[0].append(prerating[i]) 58 prerate4[1].append(review[i]) 59 elif prerating[i] == 3: 60 prerate3[0].append(prerating[i]) 61 prerate3[1].append(review[i]) 62 elif prerating[i] == 2: 63 prerate2[0].append(prerating[i]) 64 prerate2[1].append(review[i]) 65 elif prerating[i] == 1: 66 prerate1[0].append(prerating[i]) 67 prerate1[1].append(review[i]) 68 69precontents = prerate1 + prerate2 + prerate3 + prerate4 + prerate5 70 71 72#レートごとにレビューを分析 73contents = [] 74noun_rate = [[[] for i in range(3)]]*5 75 76verb_rate = [[[] for i in range(3)]]*5 77 78adjective_rate = [[[] for i in range(3)]]*5 79 80word_rate = [[[] for i in range(3)]]*5 81 82hinshi_rate = [] 83hinshi = [] 84word = [] 85word_yobi = [] 86count = 0 87 88 89#for l in range(10): 90# count = count+1 91# if not count % 2 == 0: 92l = 1 93for x in range(len(precontents[l][:])): 94 mecab = MeCab.Tagger() 95 text = str(precontents[l][:]) 96 mecab.parse() 97 node = mecab.parseToNode(text) 98# Mecab表記: 表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音 99 while node: 100 preword = node.feature.split(",")[6] 101 word_yobi = node.surface 102 pos = node.feature.split(",")[0] 103 word.append(preword) 104 hinshi.append(pos) 105 node = node.next 106 107#解析結果を品詞ごとに振り分け 108 for i in range(len(hinshi)): 109 if hinshi[i] == '名詞': 110 noun_rate[l][0].append(precontents[l][:]) 111 noun_rate[l][1].append(word[i]) 112 noun_rate[l][2].append(hinshi[i]) 113# elif hinshi[i] == '形容詞': 114# adjective_rate[l][0].append(word_rate[i]) 115# adjective_rate[l][1].append(hinshi[i]) 116# elif hinshi[i] == '動詞': 117# verb_rate[l][0].append(word_rate[i]) 118# verb_rate[l][1].append(hinshi[i]) 119#word_all = [word_rate1,word_rate2,word_rate3,word_rate4,word_rate5,] 120#adjective_all = [adjective_rate1,adjective_rate2,adjective_rate3,adjective_rate4,adjective_rate5] 121#verb_all = [verb_rate1,verb_rate2,verb_rate3,verb_rate4,verb_rate5] 122#noun_all = [noun_rate1,noun_rate2,noun_rate3,noun_rate4,noun_rate5,] 123 124

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

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

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

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

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

quickquip

2019/02/28 02:21

mecabは入れてありますか(Pythonのmecabモジュールではなくて、形態素解析器のmecabコマンド)
Kodanosuke

2019/02/28 03:01

入っています.他のコードで使えていたのですが,このコードを書き始めてからRuntime errorが出るようになりました.最初のimportとmecab = MeCab.Tagger()の行だけ実行するとエラーなく進みます. これでおわかりになりますでしょうか. よろしくおねがいします.
t_obara

2019/02/28 04:42

[mecab.tagger runtimeerror] というキーワードでググるといくつか解決方法が出てきていますが、それらを試し、それでも解決できない場合、試した結果もご提示していただけるとよろしいかと。
quickquip

2019/02/28 09:48

それは難しいですね。 他のコードで使えていたとのことですが、そのコードと今エラーがでているコードは同じディレクトリにありますか。 違うディレクトリの場合、動いていたコードを今エラーがでているコードのディレクトリに移動して実行した時、期待通りに動きますか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問