From 38bfd8001651160e37208c2cc8a226325b79316e Mon Sep 17 00:00:00 2001 From: smty2018 <74114936+smty2018@users.noreply.github.com> Date: Tue, 17 Oct 2023 15:37:04 +0530 Subject: [PATCH 1/4] Added simple usage for NLP package to ReadMe --- README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 084f5e8..3e63983 100644 --- a/README.md +++ b/README.md @@ -94,8 +94,21 @@ ax[1] = vis.radar(df, ax=ax[1], color='C1', alpha=0)

+## 5. NLP Package Usage -## 5. Command Line Interface +```python +from chatminer.nlp import add_sentiment +``` +### 5.1 Add Sentiment + +Extracts sentiment from the message and adds sentiment column to the input dataframe. + +```python +# Adds sentiment column to the DataFrame +df_with_sentiment = add_sentiment(df) +``` + +## 6. Command Line Interface The CLI supports parsing chat logs into csv files. As of now, you **can't** create visualizations from the CLI directly. From a56d8f739b2a834036012c6134e10573a56f4994 Mon Sep 17 00:00:00 2001 From: Sheetali Maity <74114936+smty2018@users.noreply.github.com> Date: Thu, 19 Oct 2023 00:44:22 +0530 Subject: [PATCH 2/4] Update README.md Co-authored-by: Jonas Weich --- README.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 3e63983..391d001 100644 --- a/README.md +++ b/README.md @@ -96,17 +96,12 @@ ax[1] = vis.radar(df, ax=ax[1], color='C1', alpha=0) ## 5. NLP Package Usage -```python -from chatminer.nlp import add_sentiment -``` ### 5.1 Add Sentiment -Extracts sentiment from the message and adds sentiment column to the input dataframe. - ```python -# Adds sentiment column to the DataFrame +from chatminer.nlp import add_sentiment + df_with_sentiment = add_sentiment(df) -``` ## 6. Command Line Interface The CLI supports parsing chat logs into csv files. From b40f9f6257492b68dedca94d204aba8c328586ee Mon Sep 17 00:00:00 2001 From: smty2018 <74114936+smty2018@users.noreply.github.com> Date: Sun, 22 Oct 2023 18:58:06 +0530 Subject: [PATCH 3/4] stacked chart --- README.md | 15 +++++++++++++++ examples/stacked_bar_chart.png | Bin 0 -> 30964 bytes 2 files changed, 15 insertions(+) create mode 100644 examples/stacked_bar_chart.png diff --git a/README.md b/README.md index 391d001..6a75143 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,21 @@ ax[1] = vis.radar(df, ax=ax[1], color='C1', alpha=0) from chatminer.nlp import add_sentiment df_with_sentiment = add_sentiment(df) +``` +### 5.2 Stacked Bar Chart:Sentiment per Day of the Week + +```python +grouped = df_with_sentiment.groupby(['weekday', 'sentiment']).size().unstack(fill_value=0) +ax = grouped.plot(kind='bar', stacked=True, figsize=(10, 6), colormap=plt.cm.get_cmap('Set3')) +ax.set(xlabel='Day of the Week', ylabel='Count', title='Sentiment per Day of the Week') +ax.legend(title='Sentiment', loc='upper right') +plt.show() +``` + +

+ +

+ ## 6. Command Line Interface The CLI supports parsing chat logs into csv files. diff --git a/examples/stacked_bar_chart.png b/examples/stacked_bar_chart.png new file mode 100644 index 0000000000000000000000000000000000000000..3c75453ec4d8ec613547a74139da2790c57f4fe6 GIT binary patch literal 30964 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 Y@()Zc`f2p~IQ?sv&t^_ebDFo|U;h(oWdHyG literal 0 HcmV?d00001 From 5015e03fcb3bfd807d11f2b08896da0e7acb2255 Mon Sep 17 00:00:00 2001 From: Jonas Weich Date: Sat, 4 Nov 2023 23:55:30 +0100 Subject: [PATCH 4/4] Adapted example to group by author --- README.md | 15 +- examples/nlp.svg | 982 +++++++++++++++++++++++++++++++++ examples/stacked_bar_chart.png | Bin 30964 -> 0 bytes 3 files changed, 988 insertions(+), 9 deletions(-) create mode 100644 examples/nlp.svg delete mode 100644 examples/stacked_bar_chart.png diff --git a/README.md b/README.md index 6a75143..1e5cdea 100644 --- a/README.md +++ b/README.md @@ -94,27 +94,24 @@ ax[1] = vis.radar(df, ax=ax[1], color='C1', alpha=0)

-## 5. NLP Package Usage +## 5. Natural Language Processing ### 5.1 Add Sentiment ```python from chatminer.nlp import add_sentiment -df_with_sentiment = add_sentiment(df) +df_sentiment = add_sentiment(df) ``` -### 5.2 Stacked Bar Chart:Sentiment per Day of the Week +### 5.2 Example Plot: Sentiment per Author in Groupchat ```python -grouped = df_with_sentiment.groupby(['weekday', 'sentiment']).size().unstack(fill_value=0) -ax = grouped.plot(kind='bar', stacked=True, figsize=(10, 6), colormap=plt.cm.get_cmap('Set3')) -ax.set(xlabel='Day of the Week', ylabel='Count', title='Sentiment per Day of the Week') -ax.legend(title='Sentiment', loc='upper right') -plt.show() +df_grouped = df_sentiment.groupby(['author', 'sentiment']).size().unstack(fill_value=0) +ax = df_grouped.plot(kind='bar', stacked=True, figsize=(8, 3)) ```

- +

diff --git a/examples/nlp.svg b/examples/nlp.svg new file mode 100644 index 0000000..11fa55e --- /dev/null +++ b/examples/nlp.svg @@ -0,0 +1,982 @@ + + + + + + + + 2023-11-04T23:46:50.732974 + image/svg+xml + + + Matplotlib v3.7.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/stacked_bar_chart.png b/examples/stacked_bar_chart.png deleted file mode 100644 index 3c75453ec4d8ec613547a74139da2790c57f4fe6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30964 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 Y@()Zc`f2p~IQ?sv&t^_ebDFo|U;h(oWdHyG