chat miner
v0.5.4
chat-miner는 채팅을 데이터프레임으로 변환하는 모든 주요 플랫폼에 린 파서를 제공합니다. 예술적 시각화를 통해 데이터를 탐색하고 채팅에서 아트워크를 만들 수 있습니다.
종속성을 포함한 최신 릴리스는 PyPI를 통해 설치할 수 있습니다.
pip install chat-miner
기여에 관심이 있거나, 최신 소스 코드를 실행하고 싶거나, 모든 것을 직접 구축하고 싶다면:
git clone https://github.com/joweich/chat-miner.git
cd chat-miner
pip install .
플랫폼에 맞게 채팅 로그를 내보내는 방법을 알아보려면 WhatsApp, Signal, Telegram, Facebook Messenger 또는 Instagram Chats의 공식 튜토리얼을 살펴보세요.
다음 코드는 WhatsAppParser
모듈을 보여줍니다. SignalParser
, TelegramJsonParser
, FacebookMessengerParser
및 InstagramJsonParser
의 사용법은 동일한 패턴을 따릅니다.
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
참고: 소스 시스템에 따라 Python에서는 파일 경로를 원시 문자열로 변환해야 합니다.
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는 채팅 로그를 csv 파일로 구문 분석하는 것을 지원합니다. 현재로서는 CLI에서 직접 시각화를 생성 할 수 없습니다 .
사용 예:
$ chatminer -p whatsapp -i exportfile.txt -o output.csv
사용 가이드:
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