Sisenseナレッジ - INSIGHT LAB

【Sisense Plugin】Word CloudでSlackの頻出名詞を可視化する

作成者: Turtle|2020年11月09日

セットアップ

まずはSisenseコミュニティのサイトからWord Cloudのプラグインをダウンロードして、サーバーにインストールします。

https://support.sisense.com/hc/en-us/community/posts/115007701128-Word-Cloud-Plugin

ダウンロードしたファイルを解凍し、下記のパスに置きます。

 

C:\Program Files\Sisense\app\plugins\

 

関連サービスをリスタートします。

 

今回の対象データ

今回のデータは、弊社、INSIGHT LABのSlackの「全メッセージ」を対象としました。詳しい取得方法については今回は割愛しますが、全従業員(累計96名)の全メッセージのメッセージ内容のみ(返信メッセージも含む)を抽出し、テキストファイルとして出力してあります。

  • 全従業員 累計96人
  • 抽出期間 約3年ほど
  • データ件数 45000件

※赤枠のTextカラムが対象です

 

前処理

SisenseでWord Cloudを作成するためには、頻出単語とそのカウント数をリストで洗い出す必要があります。今回は、Pythonとオープンソースの形態素解析エンジンであるMeCabを使用しました。

 

MeCabのセットアップ

1)MeCabの関連のファイルをインストール

Windows環境へのセットアップは環境変数にパスを追加したりと、少し面倒です。こちらのブログを参考にさせていただきました。各自、インストールをして頂ければと思います。

https://techacademy.jp/magazine/22052

 

2) Python環境のセットアップ

Python上からMeCabを使用するために、mecab-python3をインストールする必要があります。これは、シンプルにpip install でOKです。

pip install mecab-python3
 

Pythonコーデイング

詳細は割愛しますが、処理としては以下の手順で行いました。

  1. 必要なモジュールのインポート
  2. テキストファイルを読み込み
  3. MeCabで形態素解析。名詞のみをリストに格納
  4. 頻出順に出力
  5. CSVファイルとして書き出し

 

最終的なコードがこちらです。

 

import csv
import MeCab
import sys
import re
from collections import Counter

# テキストファイル読み込み
with open('<ファイルのパス>', encoding='utf-8') as f:
    data = f.read()

# パース
mecab = MeCab.Tagger('/usr/local/lib/mecab/dic/mecab-ipadic-neologd/')
parse = mecab.parse(data)
lines = parse.split('\n')
items = (re.split('[\t,]', line) for line in lines)


# 動詞をリストに格納
words = [item[0]
for item in items:
    if (item[0] not in ('EOS', '', 't', 'ー') and
    item[1] == '名詞' and item[2] == '一般')]

# 頻度順に出力
counter = Counter(words)
header = ['word','count']

# データをCSVに書き出し
with open('sample_slack.csv','w',newline='',encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(header)
    for word, count in counter.most_common():
        writer.writerow([word,count])

 

抽出結果がこちらです。

我が社のSlack頻出名詞TOP20です。

 

 

当たり前と言えばそうなのですが、社内のSlackで一番使われている言葉は「データ」でした。15位の「感じ」というカジュアルな言葉が一つだけ入っているのが気になります。

 

Sisense側の設定

データの取り込み

ElastiCubeで先程書き出したCSVファイルを読み込んで、見てみます。

データ件数が29875件と頻出単語のリストとしては多いですね。

Word Cloudでワードの数が多すぎると、表示に時間がかかります。思い切って削りましょう。

 

カスタムテーブルを作成し、countが100以上のみの行を抽出します。また、wordにはスタンプ関連や意味不明な単語が30個ほど含まれていたので、SQLのWHERE句で除外しました。

 

結果、29875語 => 430語となりました。

ビルドします。

 

これでWord Cloudを作るためのデータが準備できました。

次に、分析タブからダッシュボード作成へ移ります。実際にWord Cloudを作成していきましょう。

 

Word Cloudの設定

ダッシュボード作成画面より新しくウィジェットを作成します。ウィジェット作成の左上のチャート選択画面からWord Cloudが増えているのが確認できます。

ここからWord Cloudを選択します。

 

カテゴリに「word」を設定し、値に「count」を設定します。

設定した瞬間にすぐにWord Cloudが表示されました!

 

右ペインから、見た目をカスタマイズします。

以下のように行いました。

 

 

完成です!

 

 

ところで、カウント数が多いものから表で見てみると、

あれ、「Sisense」がまだ見つかりません!

 

スクロールしていくと・・・

ありました!

450回はなかなか多いので、Sisenseは社内でも話題に上がっていると解釈することにしましょう!

 

まとめ

今回は、WordCloudを紹介しました。

Pythonを使った前処理が必須となりますが、なかなか綺麗なビジュアルです。