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

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

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

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

Mecab

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

受付中

MeCabを用いたレビューにおける頻出単語のグラフ化について

yasutin
yasutin

総合スコア24

Python 3.x

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

Mecab

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

1回答

0リアクション

0クリップ

226閲覧

投稿2022/09/27 04:57

前提

pythonでMeCabを用いたレビューにおける頻出単語抽出を行っています。
月ごとの測定をしており、レビュー数の最も多い月と少ない月を比べようとグラフ化を試みましたが、レビュー数の最も多い月のグラフだけおかしくなってしまいました。

実現したいこと

・text_October_maximu.csv というファイルからグラフを作成したい。
・また、最頻出している単語が「*」になってしまうので、それを除去したい。

発生している問題・エラーメッセージ

すべてのテキストから抽出したもの

最も少ないレビュー数の月から抽出したもの

最も多いレビュー数の月から抽出したもの

このように「text_October_maximum」のものだけ、グラフがおかしくなてしまいます。どうすればよいでしょうか。

また、3つのグラフいずれも最頻出単語が「*」となってしまいます。除去することはできるのでしょうか。

該当のソースコード

python

import csv import pandas as pd import MeCab import collections import seaborn as sns import matplotlib.pyplot as plt import japanize_matplotlib files = open(r"C:\Users\Yasu\Documents\情報科学特別演習\csv\text_October_maximum.csv",encoding="utf-8",errors="ignore") #files = open(r"C:\Users\Yasu\Documents\情報科学特別演習\csv\text_August_minimum.csv",encoding="utf-8",errors="ignore") #files = open(r"C:\Users\Yasu\Documents\情報科学特別演習\csv\text_all.csv",encoding="utf-8",errors="ignore") data = pd.read_csv(files) message = data["text"] messagelst = message.astype(str).tolist() messagestr = "".join(messagelst) mecab = MeCab.Tagger("-Ochasen")#-Ochasenという辞書でMeCabを用いた構文解析をするよ^^ node = mecab.parseToNode(messagestr) words=[] while node: hinshi = node.feature.split(",")[0] if hinshi in ["名詞","動詞","形容詞"]:#名詞、動詞、形容詞 origin = node.feature.split(",")[6] words.append(origin) node = node.next """ 「node.feature」には単語の品詞などの情報がカンマ区切りで入っており、 0番目に品詞名、6番目に原型のデータがある。 そこで、node.featureの0番目が名詞・動詞・形容詞だったらその6番目をとる というコード """ ######################### c = collections.Counter(words) """ collections.Counterにリストやタプルを渡すと、要素とその要素の出現回数をとる。 """ sns.set(context="talk",font="IPAexGothic")#context=talkは文字サイズの大きさが3/4。MAXはcontext=poster fig = plt.subplots(figsize=(8,8)) """ figure:描画領域全体 →「fig = plt.subplots」でfigureを生成することができる axes:個別の座標軸 """ sns.countplot(y=words,order=[i[0] for i in c.most_common(20)]) plt.show()

試したこと

・パスの確認
・CSVファイルの見比べ
・IDLEの再起動

補足情報(FW/ツールのバージョンなど)

windows11,IDLE(3.10.2)

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

can110

2022/09/27 05:18

「errors="ignore"」を指定しないで実行した結果を記載ください(文字コードが正しいなら不要のはず)

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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

Mecab

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