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

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

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

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

Python

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

Q&A

解決済

1回答

1750閲覧

Pythonの構文エラー(MeCab関連?)が解消出来ません

nyumonsya

総合スコア34

Mecab

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

Python

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

0グッド

0クリップ

投稿2019/05/21 06:30

PythonによるWordCloudを行いたいのですが、以下のエラーが解消出来ず困っています。
解消方法をアドバイス頂けると助かります m(_ _)m
ちなみに、以下のソースコードについて、他のPCでは問題無く動いたので、コードではなくPCの環境が要因と思われます・・。
そのため、コード中に不要な箇所が多数あるかと思いますが、無視して頂ければです。

【試したこと】
・Pathを通してから再起動
・MeCabインストールし直し

【使用中のソースコード】

### WordCloud単語版 ### #!/usr/bin/env python import os,matplotlib,re,MeCab,itertools,pydotplus,requests,io,string print(os.getcwd()) matplotlib.use('TkAgg') import matplotlib.pyplot as plt # coding: utf-8 #!/usr/bin/env python from wordcloud import WordCloud from PIL import Image import numpy as np from collections import Counter import MeCab as amee from igraph import * def get_text(path): f = open(path, encoding="utf-8") text = f.read() f.close() return text # 形態素解析開始 class Wakati: # コンストラクタ def __init__(self, text): self.text = text self.tokens = None self.targets = ["名詞", "動詞", "形容詞"] # NGワードリスト〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 self.stopwords = [u'てる', u'いる', u'なる', u'れる', u'する'] # 分かち書きを行うメソッド def tokenize(self): words = self.get_words() self.tokens = self.get_stopped_words(words) return self.tokens # 形態素解析の結果をDataFrameで返す関数 def get_dfw(self): t = MeCab.Tagger("Owakati") t.parse("") node = t.parseToNode(self.text) surfaces = [] stems = [] poss = [] while node: surface = node.surface feature = node.feature.split(",") stem = feature[6] pos = feature[0] surfaces.append(surface) stems.append(stem) poss.append(pos) node = node.next dfw = pd.DataFrame() dfw["SURFACE"] = surfaces[1:-1] dfw["STEM"] = stems[1:-1] dfw["POS"] = poss[1:-1] return dfw # 形態素解析結果から目的となる品詞に一致した単語リストを取得する関数 def get_words(self): dfw = self.get_dfw() words = [] for row in dfw.iterrows(): for target_pos in self.targets: if row[1]["POS"] == target_pos: if row[1]["STEM"] != "*": words.append(row[1]["STEM"]) return words # 単語リストからストップワードを除去した単語リストを返す関数 def get_stopped_words(self, words): stopped_words = [word for word in words if word not in self.stopwords] return stopped_words # トークンリストを半角スペースで結合したテキストに変換する関数 def tokens2linetext(tokens): linetext = "" for token in tokens: linetext += token linetext += " " return linetext[:-1] # テキストデータの取り込み path = u"C:/python/00__text/テキストデータ名.txt" text = get_text(path) # テキストの形態素解析 tokens = Wakati(text).tokenize() # 形態素解析結果を半角スペースで結合されたテキストに変換 linetext = tokens2linetext(tokens) fontpath = "C:/python/08__font/AozoraMinchoHeavy.ttf" datum_mask = np.array(Image.open(mask_path)) wc = WordCloud(height=500,width=700) wc.generate(linetext) # 出力ファイル名設定 filename = os.path.basename(path) filename = os.path.splitext(filename)[0] outname = "wordcloud_" + filename + ".png" wc.to_file(outname) #出力 plt.figure(figsize=(15,12)) plt.imshow(wc) plt.axis("off") plt.show()

【以下、エラーメッセージです】

Traceback (most recent call last): File "C:\python\11w_wordcloud.py", line 118, in <module> tokens = Wakati(text).tokenize() File "C:\python\11w_wordcloud.py", line 57, in tokenize words = self.get_words() File "C:\python\11w_wordcloud.py", line 89, in get_words dfw = self.get_dfw() File "C:\python\11w_wordcloud.py", line 63, in get_dfw t = MeCab.Tagger("Owakati") File "C:\Users\ユーザ名\AppData\Local\Programs\Python\Python37\lib\site-packages\MeCab.py", line 253, in __init__ _MeCab.Tagger_swiginit(self, _MeCab.new_Tagger(*args)) RuntimeError

以上となります。
何卒よろしくお願い致します!m(_ _)m

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

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

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

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

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

guest

回答1

0

ベストアンサー

RuntimeErrorなので構文エラーではないですよ。

mecab-pythonがちゃんと動いていない場合のエラーです。

  • mecab本体の導入(pipで入れる手順とは別)を済ませているか
  • コマンドプロンプトでmecabコマンドが動くかどうか

をまずは確認するべきでしょう。

投稿2019/05/21 07:18

hayataka2049

総合スコア30933

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

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

nyumonsya

2019/05/21 08:31

hayataka2049さん 回答を頂きありがとうございます!! pipとは別でのインストールは出来ていませんでした・・・ 無事にスクリプト動きました、とても助かりました! 誠にありがとうございましたm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問