chat-miner proporciona analizadores sencillos para todas las plataformas principales y transforma los chats en marcos de datos. Las visualizaciones artísticas le permiten explorar sus datos y crear obras de arte a partir de sus chats.
La última versión, incluidas las dependencias, se puede instalar a través de PyPI:
pip install chat-miner
Si está interesado en contribuir, ejecutar el código fuente más reciente o simplemente desea crearlo todo usted mismo:
git clone https://github.com/joweich/chat-miner.git
cd chat-miner
pip install .
Echa un vistazo a los tutoriales oficiales de WhatsApp, Signal, Telegram, Facebook Messenger o Instagram Chats para aprender cómo exportar registros de chat para tu plataforma.
El siguiente código muestra el módulo WhatsAppParser
. El uso de SignalParser
, TelegramJsonParser
, FacebookMessengerParser
e InstagramJsonParser
sigue el mismo patrón.
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
Nota: Dependiendo de su sistema fuente, Python requiere convertir la ruta del archivo en una cadena sin formato.
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 ))
La CLI admite el análisis de registros de chat en archivos csv. A partir de ahora, no puede crear visualizaciones desde la CLI directamente.
Uso de ejemplo:
$ chatminer -p whatsapp -i exportfile.txt -o output.csv
Guía de uso:
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