前提
pythonでMeCabを用いたレビューにおける頻出単語抽出を行っています。
月ごとの測定をしており、レビュー数の最も多い月と少ない月を比べようとグラフ化を試みましたが、レビュー数の最も多い月のグラフだけおかしくなってしまいました。
実現したいこと
・text_October_maximu.csv というファイルからグラフを作成したい。
・また、最頻出している単語が「*」になってしまうので、それを除去したい。
発生している問題・エラーメッセージ
このように「text_October_maximum」のものだけ、グラフがおかしくなてしまいます。どうすればよいでしょうか。
また、3つのグラフいずれも最頻出単語が「*」となってしまいます。除去することはできるのでしょうか。
該当のソースコード
python
1import csv 2import pandas as pd 3import MeCab 4import collections 5import seaborn as sns 6import matplotlib.pyplot as plt 7import japanize_matplotlib 8 9files = open(r"C:\Users\Yasu\Documents\情報科学特別演習\csv\text_October_maximum.csv",encoding="utf-8",errors="ignore") 10#files = open(r"C:\Users\Yasu\Documents\情報科学特別演習\csv\text_August_minimum.csv",encoding="utf-8",errors="ignore") 11#files = open(r"C:\Users\Yasu\Documents\情報科学特別演習\csv\text_all.csv",encoding="utf-8",errors="ignore") 12 13 14data = pd.read_csv(files) 15message = data["text"] 16messagelst = message.astype(str).tolist() 17messagestr = "".join(messagelst) 18 19 20mecab = MeCab.Tagger("-Ochasen")#-Ochasenという辞書でMeCabを用いた構文解析をするよ^^ 21 22node = mecab.parseToNode(messagestr) 23words=[] 24while node: 25 hinshi = node.feature.split(",")[0] 26 if hinshi in ["名詞","動詞","形容詞"]:#名詞、動詞、形容詞 27 origin = node.feature.split(",")[6] 28 words.append(origin) 29 node = node.next 30""" 31「node.feature」には単語の品詞などの情報がカンマ区切りで入っており、 320番目に品詞名、6番目に原型のデータがある。 33そこで、node.featureの0番目が名詞・動詞・形容詞だったらその6番目をとる 34 35というコード 36""" 37######################### 38 39c = collections.Counter(words) 40""" 41collections.Counterにリストやタプルを渡すと、要素とその要素の出現回数をとる。 42""" 43 44 45sns.set(context="talk",font="IPAexGothic")#context=talkは文字サイズの大きさが3/4。MAXはcontext=poster 46fig = plt.subplots(figsize=(8,8)) 47""" 48figure:描画領域全体 49 →「fig = plt.subplots」でfigureを生成することができる 50axes:個別の座標軸 51""" 52 53sns.countplot(y=words,order=[i[0] for i in c.most_common(20)]) 54plt.show()
試したこと
・パスの確認
・CSVファイルの見比べ
・IDLEの再起動
補足情報(FW/ツールのバージョンなど)
windows11,IDLE(3.10.2)
回答1件
あなたの回答
tips
プレビュー