#5 LINEでの会話は文章派?スタンプ派?データで見えたトークスタイル
前回は、LINEからトーク履歴を書出し、Excelへ読み込みました。
せっかくデータを落としたので、これから色々と分析してみようと思います。
その前に、読込んだデータはノイズがあったりするので、まずはクリーニングしていきます。
1. メッセージのデータをクリーニング
読込んだメッセージには、"(ダブルクォーテーション)や、セル内に余分な空行があります。まずは、これらを除去していきます。
プロンプト
ExcelのC列で、"を削除するコードをVBAで生成して下さい。
また、セル内の空行も削除するようにして下さい。
ChatGPT回答
以下のVBAコードを使用すると、ExcelのC列で以下の操作を実行できます:
セル内の "(ダブルクォーテーション)を削除する。
セル内の空行を削除する。
VBAコード
Sub CleanColumnC()
Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim temp As String
' 現在のシートを取得
Set ws = ThisWorkbook.ActiveSheet
' C列の使用範囲を取得
Set rng = ws.Range("C1:C" & ws.Cells(ws.Rows.Count, "C").End(xlUp).Row)
' 各セルをループ処理
For Each cell In rng
If Not IsEmpty(cell.Value) Then
' セルの値を取得
temp = cell.Value
' ダブルクォーテーションを削除
temp = Replace(temp, """", "")
' 空行を削除(改行文字 vbLf を取り除く)
temp = Replace(temp, vbLf, "")
' 修正した値をセルに設定
cell.Value = temp
End If
Next cell
MsgBox "C列の処理が完了しました!", vbInformation
End Sub
実行手順
Excelを開き、Alt + F11 を押してVBAエディターを開きます。
メニューから 挿入 → 標準モジュール を選択し、新しいモジュールを追加します。
上記のコードを貼り付けます。
Alt + F8 を押してマクロ一覧を開き、CleanColumnC を選択して実行します。
これで、C列内の " と空行が削除されます。
それでは、分析をしていこうと思います。
本日の分析:スタンプの比率を見る。
LINEトークにおけるスタンプと文字の比率を分析することで、以下のような興味深い洞察を得ることができます。
今回は、写真は除外します。
1. コミュニケーションのスタイル
スタンプが多い場合:
コミュニケーションがカジュアルで親しみやすい雰囲気である可能性が高い。
言語化が少なく、スタンプで感情や意思を表現している。
相手との関係性が深い場合、スタンプの使用が多い傾向がある。
文字が多い場合:
内容が詳細で、説明や議論が必要な場面であることが考えられる。
仕事やフォーマルな会話で文字が優勢になるケースも多い。
2. 感情表現のパターン
スタンプは感情を直感的に表現するツールとして機能します。これが多い場合、感情の共有や共感がトークの主な目的である可能性があります。
文字主体の場合、具体的な情報や意図を明確に伝えることを重視していると考えられます。
3. 会話の活発さ
スタンプの比率が高い場合、短時間でテンポ良くメッセージがやり取りされる「軽い会話」が特徴的です。
逆に文字主体の場合は、内容が密度の高い会話や一方通行的な情報共有が多い可能性があります。
4. 年齢や文化的背景の影響
若い世代はスタンプを多用する傾向があり、絵文字やGIFも合わせて使う場合が多いです。
年齢が高い層では、文字を主体にしつつ必要に応じてスタンプを補助的に使うことが一般的。
5. 関係性の深さ
親しい友人や家族間の会話では、スタンプが多用される傾向があります。
仕事上の関係やフォーマルなやり取りでは、スタンプが少なく文字が中心になるでしょう。
6. 効率性の評価
スタンプが多い場合、コミュニケーションにかかる時間が短く、迅速な意思疎通が可能と考えられます。
文字が多い場合、内容が具体的で正確性を重視していることを示します。
データ分析からの活用例
ターゲットマーケティング: トークスタイルの傾向を把握することで、LINEのユーザーに最適なコンテンツ(スタンプセットや広告)を提案できます。
コミュニケーション効率の最適化: 特定のトークにおけるスタンプと文字の比率を評価し、効率的なやり取りの方法を提案できます。
感情分析の補完: スタンプを感情表現として扱うことで、文字にはない感情情報を含めた分析が可能になります。
プロンプト
ExcelのC列には、LINEのメッセージが記載されています。
スタンプは、"[スタンプ]"と記載されています。
"[写真]"は、今回の集計からは除外して下さい。
その他は文章です。
文章とスタンプの比率を計算し、円グラフを描いて下さい。
円グラフ内へ比率をパーセントで記載して下さい。
作成するシートは"スタンプ比率"とし、存在しない場合は作成して下さい。
VBAでコード生成して下さい。
Continue Forは使用しないでください。
ChatGPT回答
以下は、指定された要件を満たすVBAコードです。このコードは、C列のデータを解析し、テキストとスタンプの比率を計算して「スタンプ比率」シートに円グラフを作成します。写真メッセージは集計から除外されます。
Sub CreateStampRatioChart()
Dim wsSource As Worksheet
Dim wsDest As Worksheet
Dim lastRow As Long
Dim i As Long
Dim textCount As Long
Dim stampCount As Long
Dim photoCount As Long
Dim chartObj As ChartObject
Dim dataRange As Range
Dim chartRange As Range
' ソースシートを設定(現在のアクティブシートを使用)
Set wsSource = ActiveSheet
' "スタンプ比率"シートが存在するか確認し、存在しない場合は作成
On Error Resume Next
Set wsDest = Worksheets("スタンプ比率")
On Error GoTo 0
If wsDest Is Nothing Then
Set wsDest = Worksheets.Add
wsDest.Name = "スタンプ比率"
Else
' 既存の内容をクリア
wsDest.Cells.Clear
End If
' C列の最終行を取得
lastRow = wsSource.Cells(wsSource.Rows.Count, "C").End(xlUp).Row
' カウントを初期化
textCount = 0
stampCount = 0
photoCount = 0
' C2から最終行までループ
For i = 2 To lastRow
Dim cellValue As String
cellValue = Trim(wsSource.Cells(i, "C").Value)
If cellValue = "[スタンプ]" Then
stampCount = stampCount + 1
ElseIf cellValue = "[写真]" Then
photoCount = photoCount + 1
' 写真は除外
Else
If cellValue <> "" Then
textCount = textCount + 1
End If
End If
Next i
' 集計結果を"スタンプ比率"シートに出力
wsDest.Range("A1").Value = "種類"
wsDest.Range("B1").Value = "件数"
wsDest.Range("A2").Value = "テキスト"
wsDest.Range("B2").Value = textCount
wsDest.Range("A3").Value = "スタンプ"
wsDest.Range("B3").Value = stampCount
' データ範囲を設定
Set dataRange = wsDest.Range("A1:B3")
' 円グラフを挿入
Set chartObj = wsDest.ChartObjects.Add(Left:=100, Top:=50, Width:=375, Height:=225)
With chartObj.Chart
.SetSourceData Source:=wsDest.Range("A2:B3")
.ChartType = xlPie
.HasTitle = True
.ChartTitle.Text = "テキストとスタンプの比率"
' データラベルをパーセント表示に設定
With .SeriesCollection(1)
.HasDataLabels = True
.DataLabels.ShowPercentage = True
.DataLabels.ShowValue = False
.DataLabels.ShowCategoryName = False
End With
End With
' メッセージボックスで完了を通知
MsgBox "スタンプ比率の円グラフを作成しました。", vbInformation
End Sub
コードの説明
シートの設定:
現在のアクティブシートをデータのソースシートとして設定します。
「スタンプ比率」シートが存在しない場合は新規作成し、存在する場合は内容をクリアします。
データの集計:
C列の最終行を取得し、2行目から最終行までループします。
各セルの値をチェックし、"[スタンプ]"の場合はstampCountを増加、"[写真]"の場合はphotoCountを増加(ただし集計には含めない)、それ以外の非空文字列はtextCountを増加させます。
集計結果の出力:
「スタンプ比率」シートに集計結果を「種類」と「件数」の形式で出力します。
円グラフの作成:
集計したテキストとスタンプのデータを基に円グラフを作成します。
グラフのタイトルを「テキストとスタンプの比率」に設定し、データラベルをパーセント表示に設定します。
完了メッセージ:
処理が完了したことをユーザーに通知します。
使用方法
VBAエディタを開く:
ExcelでAlt + F11を押してVBAエディタを開きます。
新しいモジュールを挿入:
「挿入」メニューから「モジュール」を選択します。
コードを貼り付け:
上記のコードを新しいモジュールに貼り付けます。
マクロを実行:
F5キーを押すか、Excelに戻って「マクロ」からCreateStampRatioChartを実行します。
このマクロを実行すると、「スタンプ比率」シートにテキストとスタンプの比率を示す円グラフが作成され、各セクションにパーセントが表示されます。写真メッセージは集計から除外されています。
実行結果

文章が9割も!!!
スタンプはあまり使うほうではないけれど、1割程度だったとは。。。
次回は、時間ごとのやり取りの数、頻度を分析していこうと思います。
おわり。