---
title: 【Sisense Plugin】Word CloudでSlackの頻出名詞を可視化する
description: SisenseにはWord Cloudのプラグインが存在します。今回はPythonとMeCabでSlackのメッセージを形態素解析し、頻出単語のリストを作り、Sisense上で可視化をしていこうと思います。
---

[Sisenseナレッジ - INSIGHT LAB](https://knowledge.insight-lab.co.jp/sisense)

# [【Sisense Plugin】Word CloudでSlackの頻出名詞を可視化する](https://knowledge.insight-lab.co.jp/sisense/wordcloud)

 作成者: [Turtle](https://knowledge.insight-lab.co.jp/sisense/author/turtle)｜2020年11月09日

## セットアップ

まずはSisenseコミュニティのサイトからWord Cloudのプラグインを[ダウンロード](https://support.sisense.com/hc/en-us/community/posts/115007701128-Word-Cloud-Plugin)して、サーバーにインストールします。

[https://support.sisense.com/hc/en-us/community/posts/115007701128-Word-Cloud-Plugin](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](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を使った前処理が必須となりますが、なかなか綺麗なビジュアルです。

[完全な記事を表示](https://knowledge.insight-lab.co.jp/sisense/wordcloud)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Turtle"
  },
  "dateModified" : "2022-02-28T12:47:09.471Z",
  "datePublished" : "2020-11-09T03:34:48Z",
  "headline" : "【Sisense Plugin】Word CloudでSlackの頻出名詞を可視化する",
  "image" : {
    "@type" : "ImageObject",
    "height" : 563,
    "url" : "https://download.insight-lab.co.jp/hubfs/thumb-2.png",
    "width" : 1174
  },
  "mainEntityOfPage" : "https://knowledge.insight-lab.co.jp/sisense/wordcloud",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60,
      "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
      "width" : 60
    },
    "name" : "Sisenseナレッジ"
  }
}
```