【LINEログ解析】会話ログから参加者の感情解析とか色々する奴を作ってみた

#LINEのグループ会話ログを分析したら面白そうだったので作ってみた
LINEの会話ログを解析するためのプログラムです．

以前この記事でも同じようなものを作っていますが，今回のバージョンでは
発言の<font color="blue">ポジティブ度判断機能と感情解析機能が付きました！</font>
<a href="http://qiita.com/rorensu2236/items/d71bc73455e0405e99b4">
![image](https://qiita-image-store.s3.amazonaws.com/0/69647/0bffaaf9-20f6-88a3-e5cb-4efc67662013.png)
</a>

このプログラムに会話ログを読み込ませることでそのグループで行われた会話の解析を行うことができ，
長期間会話しているグループで解析を行うと面白いと思います

gitにソースをあげました
LineAnalyzerの中に入っているLineAnalyzer.javaがメインファイルです．
<a href="https://github.com/keisuke2236/LineLogAnalyzer_Java">
git hub

![image](https://qiita-image-store.s3.amazonaws.com/0/69647/c15167f1-1a39-c197-0882-e4b4a10ac07b.png)
</a>


詳しい利用方法は下の方に書きました＞＜

##このプログラムを利用するとLINEグループの会話ログを分析して遊べます
###出来ること
1．ユーザーごとの発言回数のカウント
2．頻出単語の集計
3．ユーザーごとの発言のポジティブさの判定
4．ユーザーごとの感情値の解析　（10項目）


#出力結果の一例（各項目の解説）
##1．ユーザーごとの発言回数のカウント
そのLINEグループで各ユーザーが何回発言したかをカウントすることができます．

```java:グループ内での発言数カウントを行うメソッドの呼び出し方法
//スマートフォンから送信したLINEの会話ログファイルのパスを記述
WordCounter counter = new WordCounter("./src/javatest/log2.txt");
counter.showPersonMap(0);
counter.getPersonMap();
```

```shell:発言数の表示例
-------------------------------
発言数ランキング
-------------------------------
Y.A  :  336
ロレンス  :  423
山田 太郎  :  688
```

##2．頻出単語の集計
頻出単語の集計では全ての会話に対して形態素解析を行い，
その後その単語が何回出現したかをカウントしています．

```java:WordCounter.javaの頻出単語集計を行うクラス
//スマートフォンから送信したLINEの会話ログファイルのパスを記述
WordCounter counter = new WordCounter("./src/javatest/log2.txt");
//ここの引数は単語の出現回数が○回未満だった場合に表示しないという設定が可能　（未記入でもおk）
counter.showWordsMap(5);
counter.getWordMap();
```

```shell:頻出単語の集計例（パズドラの会話を行うグループの解析）
-----------------------------
利用頻度の高い単語ランキング
-------------------------------
魔窟  :  56
時間  :  57
お願い  :  59
そ  :  59
プラス  :  63
ゼウス  :  66
カーリー  :  75
スキル  :  75
ポチ  :  78
スタミナ  :  90
闘技  :  93
継承  :  94
マルチ  :  102
()  :  115
こと  :  117
体  :  122
そう  :  123
₊₂₉₇  :  144
それ  :  157
俺  :  200
お  :  275
スタンプ  :  300
さん  :  322
笑  :  528
画像  :  568
ビルド成功(合計時間: 1秒)
```
##3．ユーザーごとの発言のポジティブさの判定
これに関してはRikyuを用いて感情解析を行っています
https://github.com/YoshiteruIwasaki/rikyu
発言した内容がポジティブかネガティブかという判定を行っています．


```text:ポジティブ度合いの解析結果例
-----------------------------
発言のポジティブ度合い
-------------------------------
Y.A  :  35
山田太郎  :  48
ロレンス  :  49
```

##4．ユーザーごとの感情値の解析　（10項目）
あらかじめ定められた10個の感情値に関連する発言を行ったら1とカウントし
各ユーザーの発言した内容から感情を解析することができます．

この10個の感情一つ一つには数百以上の感情に関するそのキーワードが登録されており，
その単語と発言内容がマッチングした際に1点とカウントしています．

ここにあるTypesのファイル内のテキストファイルを書き換えることで，感情ファイルを増やすこともできます
今は10感情ですが，新しいテキストファイルをこのディレクトリに追加し，そのテキストファイルにその感情に関する単語を
手入力で入れるとその感情の解析も行うことができるようになります．
https://github.com/keisuke2236/LineLogAnalyzer_Java/tree/master/Types


```text:感情解析結果の表示例
-----------------------------
発言者ごとの発言感情分析
-----------------------------
-----------------
Y.A
-----------------
aware : 0
iya : 7
yasuraka : 2
kowai : 1
suki : 2
yorokobi : 4
haji : 2
takaburi : 0
ikari : 2
odoroki : 1
-----------------
山田　太郎
-----------------
aware : 2
iya : 39
yasuraka : 2
kowai : 4
suki : 8
yorokobi : 7
haji : 0
takaburi : 4
ikari : 3
odoroki : 1
-----------------
ロレンス
-----------------
aware : 2
iya : 7
yasuraka : 4
kowai : 1
suki : 1
yorokobi : 6
haji : 0
takaburi : 2
ikari : 1
odoroki : 1
```



##jarファイルで必要なやつ DL必須！
lucene-gosen-4.4.0-ipadic.jar: 形態素解析ライブラリが必要です

https://code.google.com/archive/p/lucene-gosen/downloads

kuromoji-0.7.7.jar :kuromojiが必要です

https://github.com/atilika/kuromoji/downloads

両方ともダウンロードしてプロジェクトファイルのプロパティーからjarファイルの追加をしましょう．

私の開発環境はMacbookのNetBeansです．

#使い方
初めにスマートフォンのLINEの設定から会話ログを送信し会話ログをPCに移します．


WordCounter.javaが解析を行うメインのプログラムファイルになり，

このファイルの21行目

```java:LINEの会話ログを解析してくれるクラスの作成方法
WordCounter count = new WordCounter("./src/javatest/log2.txt");
```

この文字列の部分が会話ログをしているためのファイルパスになっていますので

スマートフォンから送られてきたテキストファイルのファイルパスをそのままここに書きましょう．

あとは適当にWordCounter.javaの中にあるメソッドを上記の解説で出した感じで使うとプログラムが解析してくれます！

```java:利用例
count.showFeelingMap();

count.showFeelingMap();

count.showPersonMap(0);

count.showPositive();

count.showWordsMap(5);
```


#使っている他のプログラム様
すでにこのプログラムの中に入っていますがrikyuを利用しています
https://github.com/YoshiteruIwasaki/rikyu