chat-miner menyediakan parser ramping untuk setiap platform utama yang mengubah obrolan menjadi kerangka data. Visualisasi artistik memungkinkan Anda menjelajahi data dan membuat karya seni dari obrolan Anda.
Rilis terbaru termasuk dependensi dapat diinstal melalui PyPI:
pip install chat-miner
Jika Anda tertarik untuk berkontribusi, menjalankan kode sumber terbaru, atau hanya ingin membuat semuanya sendiri:
git clone https://github.com/joweich/chat-miner.git
cd chat-miner
pip install .
Lihat tutorial resmi untuk WhatsApp, Signal, Telegram, Facebook Messenger, atau Obrolan Instagram untuk mempelajari cara mengekspor log obrolan untuk platform Anda.
Kode berikut menampilkan modul WhatsAppParser
. Penggunaan SignalParser
, TelegramJsonParser
, FacebookMessengerParser
, dan InstagramJsonParser
mengikuti pola yang sama.
from chatminer . chatparsers import WhatsAppParser
parser = WhatsAppParser ( FILEPATH )
parser . parse_file ()
df = parser . parsed_messages . get_df ( as_pandas = True ) # as_pandas=False returns polars dataframe
Catatan: Bergantung pada sistem sumber Anda, Python perlu mengonversi jalur file menjadi string mentah.
import os
FILEPATH = r"C:UsersUsernamechat.txt" # Windows
FILEPATH = "/home/username/chat.txt" # Unix
assert os . path . isfile ( FILEPATH )
import chatminer . visualizations as vis
import matplotlib . pyplot as plt
fig , ax = plt . subplots ( 2 , 1 , figsize = ( 9 , 3 ))
ax [ 0 ] = vis . calendar_heatmap ( df , year = 2020 , cmap = 'Oranges' , ax = ax [ 0 ])
ax [ 1 ] = vis . calendar_heatmap ( df , year = 2021 , linewidth = 0 , monthly_border = True , ax = ax [ 1 ])
fig , ax = plt . subplots ( 1 , 2 , figsize = ( 7 , 3 ), subplot_kw = { 'projection' : 'polar' })
ax [ 0 ] = vis . sunburst ( df , highlight_max = True , isolines = [ 2500 , 5000 ], isolines_relative = False , ax = ax [ 0 ])
ax [ 1 ] = vis . sunburst ( df , highlight_max = False , isolines = [ 0.5 , 1 ], color = 'C1' , ax = ax [ 1 ])
fig , ax = plt . subplots ( figsize = ( 8 , 3 ))
stopwords = [ 'these' , 'are' , 'stopwords' ]
kwargs = { "background_color" : "white" , "width" : 800 , "height" : 300 , "max_words" : 500 }
ax = vis . wordcloud ( df , ax = ax , stopwords = stopwords , ** kwargs )
if not vis . is_radar_registered ():
vis . radar_factory ( 7 , frame = "polygon" )
fig , ax = plt . subplots ( 1 , 2 , figsize = ( 7 , 3 ), subplot_kw = { 'projection' : 'radar' })
ax [ 0 ] = vis . radar ( df , ax = ax [ 0 ])
ax [ 1 ] = vis . radar ( df , ax = ax [ 1 ], color = 'C1' , alpha = 0 )
from chatminer . nlp import add_sentiment
df_sentiment = add_sentiment ( df )
df_grouped = df_sentiment . groupby ([ 'author' , 'sentiment' ]). size (). unstack ( fill_value = 0 )
ax = df_grouped . plot ( kind = 'bar' , stacked = True , figsize = ( 8 , 3 ))
CLI mendukung penguraian log obrolan ke dalam file csv. Saat ini, Anda tidak dapat membuat visualisasi dari CLI secara langsung.
Contoh penggunaan:
$ chatminer -p whatsapp -i exportfile.txt -o output.csv
Panduan penggunaan:
usage: chatminer [-h] [-p {whatsapp,instagram,facebook,signal,telegram}] [-i INPUT] [-o OUTPUT]
options:
-h, --help
Show this help message and exit
-p {whatsapp,instagram,facebook,signal,telegram}, --parser {whatsapp,instagram,facebook,signal,telegram}
The platform from which the chats are imported
-i INPUT, --input INPUT
Input file to be processed
-o OUTPUT, --output OUTPUT
Output file for the results