18
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Microsoft Power BIAdvent Calendar 2022

Day 21

PythonとPower BIを使ってテキストマイニングしようとした話

Last updated at Posted at 2022-12-20

今回はPower BIでテキストマイニングをしてみた話です。私の環境ではAzure Cognitive Serviceを使うことができないのですが、Azure Cognitive Serviceを使わずに日本語で記載されたテキスト(今回は製品のレビューコメント)内のキーワードの出現頻度をWordCloudで可視化してみました。
(私の会社だけかもしれませんが、WordCloudはユーザーの興味をひきやすいので、Power BIの啓蒙活動の時とかにお勧めのビジュアルです!)

Power BIにはWordCloudのビジュアルが用意されていますが、日本語のテキストをそのままWordCloudに読み込むと、日本語が単語単位に分解されずに、文章がそのままみえてきてしまうので、まずはテキストを単語に分解(形態素分析)する必要があります。形態素分析するためによいライブラリがPythonには揃っているのでPythonを使って形態素分析しました。今回は形態素分析するためのライブラリとしてMeCabを使用しています。

image.png

※Power BIではPythonと連携することもできますが、スケジュール更新ができなかったため、今回はPower BI上でのPython連携はせずに、Pythonでテキスト解析した情報を別途Power BIで読み込んでいます。
https://learn.microsoft.com/ja-jp/power-bi/connect-data/desktop-python-scripts

準備

・製品のレビューコメント(ShampooLove.csv)
今回はアットコスメのレビューからスクレイピングしたデータを用意しました。
※データの内容(例)

date name age ... product score review ...
10/5/2022 Kaori 29 AAAA 5 香りがよい
30/8/2022 Ayako 34 BBBB 4 髪の毛さらさら
3/11/2022 Mari 20 CCCC 6 パッケージがかわいい

・Python
・Power BI

処理の流れ

1.PythonでMecabを使ってレビューコメントを形態素解析
2.Power BIにて形態素解析したデータの読込み
3.Word Cloud作成(カスタムビジュアル)

手順

1.PythonでMecabを使って形態素解析

1-1.Pythonにpandas, MeCab, csvライブラリをインポートする

    import pandas as pd
    import MeCab
    import csv

1-2.準備した"ShampooLove.csv"を読み込んでMeCabを使って形態素分析する

    df = pd.read_csv('ShampooLove.csv')
    tagger = MeCab.Tagger("-Ochasen")
    
    def extractKeyword(text):
        """Morphological analysis of text and returning a list of nouns, adjective, verb, adverb"""
        node = tagger.parseToNode(text)
        keywords = []
        while node:
            if node.feature.split(",")[0] == u"名詞": 
                keywords.append(node.surface)
            elif node.feature.split(",")[0] == u"形容詞":
                keywords.append(node.feature.split(",")[6])
            elif node.feature.split(",")[0] == u"動詞":
                keywords.append(node.feature.split(",")[6])
            elif node.feature.split(",")[0] == u"副詞":
                keywords.append(node.feature.split(",")[6])
            node = node.next
            
        return keywords

1-3.同じファイルに"review-1"という列を作成し、"review"にあるレビューコメントを形態素分析した結果を返す

    df['review-1'] = df['review'].apply(extractKeyword)

2.Power BIにて形態素解析したデータの読込み

詳細は省きますが、形態素解析したレビューコメントが含まれるデータ(ShampooLove.csv)をPower BIに読込みます。

3.Word Cloud作成(カスタムビジュアル)

3-1.WordCloudをVisualizations一覧からインポートする
・・・をクリックし、Get more visualsをクリックします
image.png

Power BI visualsの中からWord Cloudをクリックします
image.png

3-2.Word Cloudを設定する
Categoryに形態素分析した方の列("review-1")を設定する。Valuesにも態素分析した方の列("review-1")を設定し、単語の集計値にするために、Count of "review-1"に変更します。
image.png

3-3.Stop wordを設定する
Visualの書式設定にて、Word Cloudには表示したくない単語を設定します。

image.png

すると下記のようなWord Cloudが出来上がります!

image.png

アットコスメのデータには製品の評価(★★★★★)や肌タイプ、年齢などが含まれているのでこれらのデータを掛け合わせてどのようなキーワードが使われているかを見るのも面白そうです。

でもやっぱりAzure Cognitive Serviceは感情分析もできるっていうから使ってみたいですね~

18
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?