Spaces:
Sleeping
Sleeping
Kim Adams commited on
Commit ·
6ca1dcd
1
Parent(s): 03fcc07
updating theming process
Browse files- app.py +2 -6
- create_games/__pycache__/create_games_slack.cpython-311.pyc +0 -0
- create_games/create_games_slack.py +0 -1
- slack_processing/__pycache__/slack_data_prep.cpython-311.pyc +0 -0
- slack_processing/__pycache__/theme.cpython-311.pyc +0 -0
- slack_processing/data/alljson.json +1237 -0
- slack_processing/data/themes.json +0 -398
- slack_processing/data/topics.txt +5 -0
- slack_processing/slack_data_prep.py +183 -96
- slack_processing/theme.py +22 -0
- utilities/__pycache__/unique_queue.cpython-311.pyc +0 -0
- utilities/unique_queue.py +75 -0
app.py
CHANGED
|
@@ -1,17 +1,13 @@
|
|
| 1 |
import gradio as gr
|
| 2 |
import openai, os
|
|
|
|
| 3 |
from huggingface_hub import Repository
|
| 4 |
from io import BytesIO
|
| 5 |
from dotenv import load_dotenv
|
| 6 |
from openai.embeddings_utils import get_embedding, cosine_similarity
|
| 7 |
from slack_processing.slack_data_prep import FetchSlack, ProcessSlack, CreateEmbeddings
|
| 8 |
from create_games.create_games_slack import CreateGames
|
| 9 |
-
##from ml_to_nl_translation.translation import getTranslations, getJSONDF
|
| 10 |
-
#from lookups.translate_pdf_to_text import PreparePDF
|
| 11 |
-
#from lookups.create_searchable_content import CreateSearchableContent
|
| 12 |
from utilities import api_keys
|
| 13 |
-
import PyPDF2
|
| 14 |
-
|
| 15 |
import pkg_resources
|
| 16 |
dotenv_version = pkg_resources.get_distribution("tiktoken").version
|
| 17 |
print(f"tiktoken version: {dotenv_version}")
|
|
@@ -77,4 +73,4 @@ with gr.Blocks() as ui4:
|
|
| 77 |
b4.click(FetchGames,outputs=df4)
|
| 78 |
|
| 79 |
demo = gr.TabbedInterface([ui1,ui2,ui3,ui4], ("Fetch Slack", "Process & Tag", "Create Embeddings", "Find Games"))
|
| 80 |
-
demo.launch()
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
import openai, os
|
| 3 |
+
import PyPDF2
|
| 4 |
from huggingface_hub import Repository
|
| 5 |
from io import BytesIO
|
| 6 |
from dotenv import load_dotenv
|
| 7 |
from openai.embeddings_utils import get_embedding, cosine_similarity
|
| 8 |
from slack_processing.slack_data_prep import FetchSlack, ProcessSlack, CreateEmbeddings
|
| 9 |
from create_games.create_games_slack import CreateGames
|
|
|
|
|
|
|
|
|
|
| 10 |
from utilities import api_keys
|
|
|
|
|
|
|
| 11 |
import pkg_resources
|
| 12 |
dotenv_version = pkg_resources.get_distribution("tiktoken").version
|
| 13 |
print(f"tiktoken version: {dotenv_version}")
|
|
|
|
| 73 |
b4.click(FetchGames,outputs=df4)
|
| 74 |
|
| 75 |
demo = gr.TabbedInterface([ui1,ui2,ui3,ui4], ("Fetch Slack", "Process & Tag", "Create Embeddings", "Find Games"))
|
| 76 |
+
demo.launch()
|
create_games/__pycache__/create_games_slack.cpython-311.pyc
CHANGED
|
Binary files a/create_games/__pycache__/create_games_slack.cpython-311.pyc and b/create_games/__pycache__/create_games_slack.cpython-311.pyc differ
|
|
|
create_games/create_games_slack.py
CHANGED
|
@@ -183,7 +183,6 @@ def GenerateGameIdeas(themes_by_theme):
|
|
| 183 |
print("No game idea found.")
|
| 184 |
return None
|
| 185 |
|
| 186 |
-
|
| 187 |
def CreateGames():
|
| 188 |
global themes
|
| 189 |
ReadThemesFromFile()
|
|
|
|
| 183 |
print("No game idea found.")
|
| 184 |
return None
|
| 185 |
|
|
|
|
| 186 |
def CreateGames():
|
| 187 |
global themes
|
| 188 |
ReadThemesFromFile()
|
slack_processing/__pycache__/slack_data_prep.cpython-311.pyc
CHANGED
|
Binary files a/slack_processing/__pycache__/slack_data_prep.cpython-311.pyc and b/slack_processing/__pycache__/slack_data_prep.cpython-311.pyc differ
|
|
|
slack_processing/__pycache__/theme.cpython-311.pyc
ADDED
|
Binary file (1.08 kB). View file
|
|
|
slack_processing/data/alljson.json
ADDED
|
@@ -0,0 +1,1237 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[
|
| 2 |
+
{
|
| 3 |
+
"id":45,
|
| 4 |
+
"person": "DataNinja",
|
| 5 |
+
"datetime": "2023-07-11 9:21 AM",
|
| 6 |
+
"message": "#greenshirts #nomemoneeded IMG_6103",
|
| 7 |
+
"reactions": [
|
| 8 |
+
{
|
| 9 |
+
"emoji": ":greenteam:",
|
| 10 |
+
"count": 8
|
| 11 |
+
},
|
| 12 |
+
{
|
| 13 |
+
"emoji": ":twinsparrot:",
|
| 14 |
+
"count": 1
|
| 15 |
+
},
|
| 16 |
+
{
|
| 17 |
+
"emoji": ":blueheart:",
|
| 18 |
+
"count": 4
|
| 19 |
+
},
|
| 20 |
+
{
|
| 21 |
+
"emoji": ":green_heart:",
|
| 22 |
+
"count": 3
|
| 23 |
+
},
|
| 24 |
+
{
|
| 25 |
+
"emoji": ":shirt:",
|
| 26 |
+
"count": 3
|
| 27 |
+
}
|
| 28 |
+
],
|
| 29 |
+
"replies": 5
|
| 30 |
+
},
|
| 31 |
+
{
|
| 32 |
+
"id":1,
|
| 33 |
+
"person": "carlos.salazar",
|
| 34 |
+
"datetime": "2023-06-22 9:47 AM",
|
| 35 |
+
"message": "Ooo.",
|
| 36 |
+
"reactions": [
|
| 37 |
+
{
|
| 38 |
+
"emoji": ":korok:",
|
| 39 |
+
"count": 1
|
| 40 |
+
}
|
| 41 |
+
],
|
| 42 |
+
"replies": 0
|
| 43 |
+
},
|
| 44 |
+
{
|
| 45 |
+
"id":2,
|
| 46 |
+
"person": "Keri W",
|
| 47 |
+
"datetime": "2023-06-22 9:52 AM",
|
| 48 |
+
"message": "IMPORTANT ADDITION: You do NOT need ANY experience or knowledge of D&D to join the one-shot campaign. R2 will walk you through everything you need to know. Don't be shy and join us! (edited)",
|
| 49 |
+
"reactions": [
|
| 50 |
+
{
|
| 51 |
+
"emoji": ":build_heart:",
|
| 52 |
+
"count": 7
|
| 53 |
+
}
|
| 54 |
+
],
|
| 55 |
+
"replies": 0
|
| 56 |
+
},
|
| 57 |
+
{
|
| 58 |
+
"id":3,
|
| 59 |
+
"person": "Brad Merrell",
|
| 60 |
+
"datetime": "2023-06-22 10:14 AM",
|
| 61 |
+
"message": "After the summer, then I will be more available.",
|
| 62 |
+
"reactions": [
|
| 63 |
+
{
|
| 64 |
+
"emoji": ":build:",
|
| 65 |
+
"count": 1
|
| 66 |
+
}],
|
| 67 |
+
"replies": 1
|
| 68 |
+
},
|
| 69 |
+
{
|
| 70 |
+
"id":4,
|
| 71 |
+
"person": "Jay Patel",
|
| 72 |
+
"datetime": "2023-06-22 12:04 PM",
|
| 73 |
+
"message": "@here L&L starting in 5 mins. If you are in the office, Feel free to come to RICE. AI Tutoring: Paving the Way to Better Tomorrows in Education\nhttps://teams.microsoft.com/l/meetup-join/19%3ameeting_MTg2OWRkYzgtYTdmOS00NTk4LWE4MmQ[…]2c%22Oid%22%3a%22bca811aa-1982-4f3b-b602-bca1a89180dc%22%7d",
|
| 74 |
+
"reactions": [
|
| 75 |
+
{
|
| 76 |
+
"emoji": ":ai:",
|
| 77 |
+
"count": 1
|
| 78 |
+
}
|
| 79 |
+
],
|
| 80 |
+
"replies": 0
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"id":5,
|
| 84 |
+
"person": "Manik",
|
| 85 |
+
"datetime": "2023-06-22 2:01 PM",
|
| 86 |
+
"message": "It's @Sam ’s 2 year Slalomversary. Sam, it's been a pleasure to be on a team with you and thanks for everything you do at _build, especially around the ERGs. Congratulations!",
|
| 87 |
+
"reactions": [
|
| 88 |
+
{
|
| 89 |
+
"emoji": ":sam:",
|
| 90 |
+
"count": 9
|
| 91 |
+
},
|
| 92 |
+
{
|
| 93 |
+
"emoji": ":tada:",
|
| 94 |
+
"count": 3
|
| 95 |
+
},
|
| 96 |
+
{
|
| 97 |
+
"emoji": ":thank-you:",
|
| 98 |
+
"count": 1
|
| 99 |
+
},
|
| 100 |
+
{
|
| 101 |
+
"emoji": ":party_blob:",
|
| 102 |
+
"count": 1
|
| 103 |
+
}
|
| 104 |
+
],
|
| 105 |
+
"replies": 10
|
| 106 |
+
},
|
| 107 |
+
{
|
| 108 |
+
"id":6,
|
| 109 |
+
"person": "Naeem",
|
| 110 |
+
"datetime": "2023-06-22 2:02 PM",
|
| 111 |
+
"message": "@Sam happy Slalomversary!",
|
| 112 |
+
"reactions": [
|
| 113 |
+
{
|
| 114 |
+
"emoji": ":thank-you:",
|
| 115 |
+
"count": 1
|
| 116 |
+
}
|
| 117 |
+
],
|
| 118 |
+
"replies": 0
|
| 119 |
+
},
|
| 120 |
+
{
|
| 121 |
+
"id":7,
|
| 122 |
+
"person": "Monika Rudra",
|
| 123 |
+
"datetime": "2023-06-22 2:02 PM",
|
| 124 |
+
"message": "Happy Slalomversary @Sam",
|
| 125 |
+
"reactions": [
|
| 126 |
+
{
|
| 127 |
+
"emoji": ":thank-you:",
|
| 128 |
+
"count": 1
|
| 129 |
+
}
|
| 130 |
+
],
|
| 131 |
+
"replies": 0
|
| 132 |
+
},
|
| 133 |
+
{
|
| 134 |
+
"id":8,
|
| 135 |
+
"person": "ʎןןǝʞ",
|
| 136 |
+
"datetime": "2023-06-22 2:09 PM",
|
| 137 |
+
"message": "Happy Slalomversary, my dear friend! @Sam :hugging_face:",
|
| 138 |
+
"reactions": [
|
| 139 |
+
{
|
| 140 |
+
"emoji": ":thank-you:",
|
| 141 |
+
"count": 1
|
| 142 |
+
},
|
| 143 |
+
{
|
| 144 |
+
"emoji": ":heart:",
|
| 145 |
+
"count": 1
|
| 146 |
+
}
|
| 147 |
+
],
|
| 148 |
+
"replies": 0
|
| 149 |
+
},
|
| 150 |
+
{
|
| 151 |
+
"id":9,
|
| 152 |
+
"person": "David Bernal",
|
| 153 |
+
"datetime": "2023-06-22 2:20 PM",
|
| 154 |
+
"message": "Happy Slalomversary, @Sam! :partyblob:",
|
| 155 |
+
"reactions": [
|
| 156 |
+
{
|
| 157 |
+
"emoji": ":thank-you:",
|
| 158 |
+
"count": 1
|
| 159 |
+
}
|
| 160 |
+
],
|
| 161 |
+
"replies": 0
|
| 162 |
+
},
|
| 163 |
+
{
|
| 164 |
+
"id":10,
|
| 165 |
+
"person": "Doug Bowen",
|
| 166 |
+
"datetime": "2023-06-22 2:37 PM",
|
| 167 |
+
"message": "FYI at 3:30 today, I'll be taking the Arcade machine down for maintenance. It will actually remain down until next Wednesday morning as I work through some marquee configuration. :dealwithit:",
|
| 168 |
+
"reactions": [
|
| 169 |
+
{
|
| 170 |
+
"emoji": ":gameboy:",
|
| 171 |
+
"count": 4
|
| 172 |
+
}
|
| 173 |
+
],
|
| 174 |
+
"replies": 0
|
| 175 |
+
},
|
| 176 |
+
{
|
| 177 |
+
"id":11,
|
| 178 |
+
"person": "John Flaherty",
|
| 179 |
+
"datetime": "2023-06-22 7:36 AM",
|
| 180 |
+
"message": "Thank you to everyone who came into the office yesterday in support of our Build Center tour for Woodside Energy and AWS. Special thanks to @Christy Nolan and @Danny Weldon for their support presenting “how we work” and “what we’re working on”. We’re well positioned to win work with the buyer at Woodside stating “several consulting companies have pitched to me but nobody aligns better with my vision than Slalom does”.",
|
| 181 |
+
"reactions": [
|
| 182 |
+
{
|
| 183 |
+
"emoji": ":build_heart:",
|
| 184 |
+
"count": 30
|
| 185 |
+
},
|
| 186 |
+
{
|
| 187 |
+
"emoji": ":build:",
|
| 188 |
+
"count": 9
|
| 189 |
+
},
|
| 190 |
+
{
|
| 191 |
+
"emoji": ":minion-woohoo:",
|
| 192 |
+
"count": 2
|
| 193 |
+
},
|
| 194 |
+
{
|
| 195 |
+
"emoji": ":yes-nod:",
|
| 196 |
+
"count": 1
|
| 197 |
+
}
|
| 198 |
+
],
|
| 199 |
+
"replies": 0
|
| 200 |
+
},
|
| 201 |
+
{
|
| 202 |
+
"id":12,
|
| 203 |
+
"person": "derreck.stellpflug",
|
| 204 |
+
"datetime": "2023-06-20 2:36 PM",
|
| 205 |
+
"message": ":alert0: :blob-policeangry: :oncoming_police_car: :alert0: Saw :eyes-intensify: :pirate_flag: this the other day :exploding_head: ...someone please forward :mailbox: this to :slalom:lalom :build:uild Legal:judge:",
|
| 206 |
+
"reactions": [
|
| 207 |
+
{
|
| 208 |
+
"emoji": ":cat-scream-rage:",
|
| 209 |
+
"count": 4
|
| 210 |
+
},
|
| 211 |
+
{
|
| 212 |
+
"emoji": ":joy:",
|
| 213 |
+
"count": 3
|
| 214 |
+
},
|
| 215 |
+
{
|
| 216 |
+
"emoji": ":disgruntled-doug:",
|
| 217 |
+
"count": 1
|
| 218 |
+
}
|
| 219 |
+
],
|
| 220 |
+
"replies": 0
|
| 221 |
+
},
|
| 222 |
+
{
|
| 223 |
+
"id":13,
|
| 224 |
+
"person": "Slackbot",
|
| 225 |
+
"datetime": "2023-06-20 4:00 PM",
|
| 226 |
+
"message": "Reminder: Time sheets!",
|
| 227 |
+
"replies": 0
|
| 228 |
+
},
|
| 229 |
+
{
|
| 230 |
+
"id":14,
|
| 231 |
+
"person": "Naeem",
|
| 232 |
+
"datetime": "6:24 PM",
|
| 233 |
+
"message": "Happy Friday",
|
| 234 |
+
"reactions": [
|
| 235 |
+
{
|
| 236 |
+
"emoji": ":cocktail:",
|
| 237 |
+
"count": 6
|
| 238 |
+
},
|
| 239 |
+
{
|
| 240 |
+
"emoji": ":tequila:",
|
| 241 |
+
"count": 4
|
| 242 |
+
},
|
| 243 |
+
{
|
| 244 |
+
"emoji": ":100:",
|
| 245 |
+
"count": 3
|
| 246 |
+
}
|
| 247 |
+
],
|
| 248 |
+
"replies": 0
|
| 249 |
+
},
|
| 250 |
+
{
|
| 251 |
+
"id":15,
|
| 252 |
+
"person": "Steven Murray",
|
| 253 |
+
"datetime": "2023-06-20 8:58 PM",
|
| 254 |
+
"message": "Date night with my wife at the Sugar Land Space Cowboys game.",
|
| 255 |
+
"reactions": [
|
| 256 |
+
{
|
| 257 |
+
"emoji": ":blueheart:",
|
| 258 |
+
"count": 20
|
| 259 |
+
}
|
| 260 |
+
],
|
| 261 |
+
"replies": 0
|
| 262 |
+
},
|
| 263 |
+
{
|
| 264 |
+
"id":16,
|
| 265 |
+
"person": "Naeem",
|
| 266 |
+
"datetime": "2023-06-20 4:58 PM",
|
| 267 |
+
"message": "Happy Father's day to all you _Builder Dads out there!",
|
| 268 |
+
"reactions": [
|
| 269 |
+
{
|
| 270 |
+
"emoji": ":+1:",
|
| 271 |
+
"count": 6
|
| 272 |
+
},
|
| 273 |
+
{
|
| 274 |
+
"emoji": ":man:",
|
| 275 |
+
"count": 2
|
| 276 |
+
},
|
| 277 |
+
{
|
| 278 |
+
"emoji": ":build_heart:",
|
| 279 |
+
"count": 4
|
| 280 |
+
},
|
| 281 |
+
{
|
| 282 |
+
"emoji": ":salute:",
|
| 283 |
+
"count": 1
|
| 284 |
+
}
|
| 285 |
+
],
|
| 286 |
+
"replies": 0
|
| 287 |
+
},
|
| 288 |
+
{
|
| 289 |
+
"id":17,
|
| 290 |
+
"person": "Michelle Francisco",
|
| 291 |
+
"datetime": "9:44 AM",
|
| 292 |
+
"message": "Anyone had any cool gifts/activities for Father’s Day?",
|
| 293 |
+
"reactions": [
|
| 294 |
+
{
|
| 295 |
+
"emoji": ":+1:",
|
| 296 |
+
"count": 1
|
| 297 |
+
}
|
| 298 |
+
],
|
| 299 |
+
"replies": 0
|
| 300 |
+
},
|
| 301 |
+
{
|
| 302 |
+
"id":18,
|
| 303 |
+
"person": "Michelle Francisco",
|
| 304 |
+
"datetime": "2023-07-11 11:12 AM",
|
| 305 |
+
"message": "National Cow Appreciation Day - @julie.lowe how are the cows? :slightly_smiling_face: :cow:",
|
| 306 |
+
"reactions": [
|
| 307 |
+
{
|
| 308 |
+
"emoji": ":cow2:",
|
| 309 |
+
"count": 6
|
| 310 |
+
}
|
| 311 |
+
],
|
| 312 |
+
"replies":7
|
| 313 |
+
},
|
| 314 |
+
{
|
| 315 |
+
"id":19,
|
| 316 |
+
"person": "richard.hand",
|
| 317 |
+
"datetime": "2023-06-20 9:45 AM",
|
| 318 |
+
"message": "I applied sunscreen poorly and have stripes of sunburn....",
|
| 319 |
+
"reactions": [
|
| 320 |
+
{
|
| 321 |
+
"emoji": ":sad-dog-2:",
|
| 322 |
+
"count": 2
|
| 323 |
+
},
|
| 324 |
+
{
|
| 325 |
+
"emoji": ":mario_sun:",
|
| 326 |
+
"count": 3
|
| 327 |
+
},
|
| 328 |
+
{
|
| 329 |
+
"emoji": ":rolling_on_the_floor_laughing:",
|
| 330 |
+
"count": 5
|
| 331 |
+
}
|
| 332 |
+
],
|
| 333 |
+
"replies":0
|
| 334 |
+
},
|
| 335 |
+
{
|
| 336 |
+
"id":20,
|
| 337 |
+
"person": "Mrinalini Shekhawat",
|
| 338 |
+
"datetime": "2023-06-20 9:46 AM",
|
| 339 |
+
"message": "My 3 year old daughter went to GAP and selected a flower print shirt for my husband - Nishank (I have never seen him wear flower print, till yesterday). She also bought candy 'to share'.",
|
| 340 |
+
"reactions": [
|
| 341 |
+
{
|
| 342 |
+
"emoji": ":grinning:",
|
| 343 |
+
"count": 7
|
| 344 |
+
},
|
| 345 |
+
{
|
| 346 |
+
"emoji": ":+1:",
|
| 347 |
+
"count": 1
|
| 348 |
+
},
|
| 349 |
+
{
|
| 350 |
+
"emoji": ":heart:",
|
| 351 |
+
"count": 12
|
| 352 |
+
},
|
| 353 |
+
{
|
| 354 |
+
"emoji": ":flower:",
|
| 355 |
+
"count": 2
|
| 356 |
+
}
|
| 357 |
+
],
|
| 358 |
+
"replies":0
|
| 359 |
+
},
|
| 360 |
+
{
|
| 361 |
+
"id":21,
|
| 362 |
+
"person": "Ahmad Shareef",
|
| 363 |
+
"datetime": "2023-06-20 10:20 AM",
|
| 364 |
+
"message": "@channel Who's going in on Wednesday!? For lunch, We will be having lunch from Bellagreen. If want lunch please drop a :lunch-bag: by EOD today. This will help me determine how much to order! Thank you:build_heart: Options Below , comes with chips and fresh fruit...",
|
| 365 |
+
"reactions": [
|
| 366 |
+
{
|
| 367 |
+
"emoji": ":lunch-bag:",
|
| 368 |
+
"count": 38
|
| 369 |
+
},
|
| 370 |
+
{
|
| 371 |
+
"emoji": ":sob:",
|
| 372 |
+
"count": 1
|
| 373 |
+
}
|
| 374 |
+
],
|
| 375 |
+
"replies":0
|
| 376 |
+
},
|
| 377 |
+
{
|
| 378 |
+
"id":22,
|
| 379 |
+
"person": "Stanley Lee Bertrand",
|
| 380 |
+
"datetime": "2023-06-20 10:29 AM",
|
| 381 |
+
"message": "Hey, what do we do if B.R.A.D. kicks back and error? @Ethan Bowen @Doug Bowen",
|
| 382 |
+
"replies":0,
|
| 383 |
+
"reactions": [
|
| 384 |
+
{
|
| 385 |
+
"emoji": ":parking:",
|
| 386 |
+
"count": 1
|
| 387 |
+
}]
|
| 388 |
+
},
|
| 389 |
+
{
|
| 390 |
+
"id":23,
|
| 391 |
+
"person": "John Flaherty",
|
| 392 |
+
"datetime": "2023-06-20 11:16 AM",
|
| 393 |
+
"message": "@channel Also happening on Wednesday is the Woodside Build Center Tour beginning at 9am. I would like to have as many Builders in the office as possible. Please make every effort to be on-site. Thank you.",
|
| 394 |
+
"reactions": [
|
| 395 |
+
{
|
| 396 |
+
"emoji": ":+1:",
|
| 397 |
+
"count": 13
|
| 398 |
+
},
|
| 399 |
+
{
|
| 400 |
+
"emoji": ":hack4socialgood:",
|
| 401 |
+
"count": 7
|
| 402 |
+
}
|
| 403 |
+
]
|
| 404 |
+
},
|
| 405 |
+
{
|
| 406 |
+
"id":24,
|
| 407 |
+
"person": "Michelle Francisco",
|
| 408 |
+
"datetime": "2023-06-20 11:34 AM",
|
| 409 |
+
"message": "BuildersAssemblesmaller.png",
|
| 410 |
+
"reactions": [
|
| 411 |
+
{
|
| 412 |
+
"emoji": ":hero:",
|
| 413 |
+
"count": 3
|
| 414 |
+
}
|
| 415 |
+
],
|
| 416 |
+
"replies":0
|
| 417 |
+
},
|
| 418 |
+
{
|
| 419 |
+
"id":25,
|
| 420 |
+
"person": "Jordan Lene",
|
| 421 |
+
"datetime": "2023-06-20 12:31 PM",
|
| 422 |
+
"message": "., .,.;’/bcv=hc=bgx[pL;IKQWSDFGHNM,////",
|
| 423 |
+
"reactions": [
|
| 424 |
+
{
|
| 425 |
+
"emoji": ":cat:",
|
| 426 |
+
"count": 3
|
| 427 |
+
},
|
| 428 |
+
{
|
| 429 |
+
"emoji": ":baby:",
|
| 430 |
+
"count": 8
|
| 431 |
+
},
|
| 432 |
+
{
|
| 433 |
+
"emoji": ":cute_tears:",
|
| 434 |
+
"count": 1
|
| 435 |
+
},
|
| 436 |
+
{
|
| 437 |
+
"emoji": ":build_heart:",
|
| 438 |
+
"count": 1
|
| 439 |
+
}
|
| 440 |
+
],
|
| 441 |
+
"replies":0
|
| 442 |
+
},
|
| 443 |
+
{
|
| 444 |
+
"id":26,
|
| 445 |
+
"person": "richard.hand",
|
| 446 |
+
"datetime": "2023-06-20 1:49 PM",
|
| 447 |
+
"message": "how to tell someone sitting behind you chewing ice from a solo cup that it is really on your nerves? - asking for a friend",
|
| 448 |
+
"replies":0
|
| 449 |
+
},
|
| 450 |
+
{
|
| 451 |
+
"id":27,
|
| 452 |
+
"person": "Michelle Francisco",
|
| 453 |
+
"datetime": "2023-07-13 5:23PM",
|
| 454 |
+
"message": "@Doug Bowen what's wrong with the J.O.H.N.?",
|
| 455 |
+
"reactions": [
|
| 456 |
+
{
|
| 457 |
+
"emoji": ":disgruntled-doug:",
|
| 458 |
+
"count": 2
|
| 459 |
+
}
|
| 460 |
+
],
|
| 461 |
+
"replies": 6
|
| 462 |
+
},
|
| 463 |
+
{
|
| 464 |
+
"id":28,
|
| 465 |
+
"person": "Jason Riley",
|
| 466 |
+
"datetime": "2023-07-06 8:38AM",
|
| 467 |
+
"message": "Please wish @Christy Nolan a happy 2 year Slalomversary!",
|
| 468 |
+
"reactions": [
|
| 469 |
+
{
|
| 470 |
+
"emoji": ":celebrate-inclusive:",
|
| 471 |
+
"count": 6
|
| 472 |
+
},
|
| 473 |
+
{
|
| 474 |
+
"emoji": ":tada:",
|
| 475 |
+
"count": 1
|
| 476 |
+
},
|
| 477 |
+
{
|
| 478 |
+
"emoji": ":2-two:",
|
| 479 |
+
"count": 1
|
| 480 |
+
}
|
| 481 |
+
],
|
| 482 |
+
"replies": 13
|
| 483 |
+
},
|
| 484 |
+
{
|
| 485 |
+
"id":29,
|
| 486 |
+
"person": "Alexa De La Garza",
|
| 487 |
+
"datetime": "2023-07-06 8:50AM",
|
| 488 |
+
"message": "@here Good morning everyone! We are having our CCC today in the rice room from 9:00-10:00am!",
|
| 489 |
+
"reactions": [
|
| 490 |
+
{
|
| 491 |
+
"emoji": ":clapping-inclusive:",
|
| 492 |
+
"count": 3
|
| 493 |
+
},
|
| 494 |
+
{
|
| 495 |
+
"emoji": ":coffee:",
|
| 496 |
+
"count": 4
|
| 497 |
+
},
|
| 498 |
+
{
|
| 499 |
+
"emoji": ":bean:",
|
| 500 |
+
"count": 3
|
| 501 |
+
}
|
| 502 |
+
],
|
| 503 |
+
"replies": 0
|
| 504 |
+
},
|
| 505 |
+
{
|
| 506 |
+
"id":30,
|
| 507 |
+
"person": "Richard Hand",
|
| 508 |
+
"datetime": "2023-07-06 9:05AM",
|
| 509 |
+
"message": "Is anyone else getting signed out of their sessions from one day to the next? My Chrome tab that had a sharepoint open, logged me out, my Salesforce link, logged out... Anyone else?",
|
| 510 |
+
"reactions": [
|
| 511 |
+
{
|
| 512 |
+
"emoji": ":sad-face:",
|
| 513 |
+
"count": 1
|
| 514 |
+
}],
|
| 515 |
+
"replies": 0
|
| 516 |
+
},
|
| 517 |
+
{
|
| 518 |
+
"id":31,
|
| 519 |
+
"person": "Michelle Francisco",
|
| 520 |
+
"datetime": "2023-07-06 9:07AM",
|
| 521 |
+
"message": "I am not @Richard Hand",
|
| 522 |
+
"reactions": [
|
| 523 |
+
{
|
| 524 |
+
"emoji": ":build_heart:",
|
| 525 |
+
"count": 1
|
| 526 |
+
}],
|
| 527 |
+
"replies": 0
|
| 528 |
+
},
|
| 529 |
+
{
|
| 530 |
+
"id":32,
|
| 531 |
+
"person": "Inez Escandon",
|
| 532 |
+
"datetime": "2023-07-06 10:18PM",
|
| 533 |
+
"message": "UPDATE: They've been found! Thank you @Alexa De La Garza and @Josh Mascorro :meow_heart: If anyone sees/saw the wine bottles I won from the auction for Target Hunger can you please put them by Melanie’s desk :melting_face: I think I left them by Rice where we were having karaoke or maybe even by the elevators.",
|
| 534 |
+
"reactions": [
|
| 535 |
+
{
|
| 536 |
+
"emoji": ":wine:",
|
| 537 |
+
"count": 1
|
| 538 |
+
}],
|
| 539 |
+
"replies": 0
|
| 540 |
+
},
|
| 541 |
+
{
|
| 542 |
+
"id":33,
|
| 543 |
+
"person": "Ahmad Shareef",
|
| 544 |
+
"datetime": "2023-07-07 12:07 PM",
|
| 545 |
+
"message": "@here :alert-blue:calling all bakers!! Want to show off your skills & take on a challenge to be titled the best baker in the Houston Build Center?? Then enter The Great Build Bake Off!! :chefkiss::blob-birthdaycake::first_place_medal::blobwhee: We are doing Cakes this round:blob-birthdaycake:! Sign up HERE & bring your best slices on Wednesday, June 14th. More deets below :point_down: Please be sure to pre-cut the cake into bite-size, before the judging There will be a People’s Choice and Judges’ Choice as winners You do not need to be present during the judging time to enter. Bakeoff (2).png",
|
| 546 |
+
"reactions": [
|
| 547 |
+
{
|
| 548 |
+
"emoji": ":cake-cowboy:",
|
| 549 |
+
"count": 3
|
| 550 |
+
},
|
| 551 |
+
{
|
| 552 |
+
"emoji": ":blob-birthdaycake:",
|
| 553 |
+
"count": 2
|
| 554 |
+
}
|
| 555 |
+
],
|
| 556 |
+
"replies": 0
|
| 557 |
+
},
|
| 558 |
+
{
|
| 559 |
+
"id":34,
|
| 560 |
+
"person": "Alexa De La Garza",
|
| 561 |
+
"datetime": "2023-07-07 2:25 PM",
|
| 562 |
+
"message": "@here Hello folks! B.R.A.D is working again if anyone in the office needs parking validation :brad-badge::blue_car:",
|
| 563 |
+
"reactions": [
|
| 564 |
+
{
|
| 565 |
+
"emoji": ":brad-bot:",
|
| 566 |
+
"count": 8
|
| 567 |
+
},
|
| 568 |
+
{
|
| 569 |
+
"emoji": ":hack4socialgood:",
|
| 570 |
+
"count": 1
|
| 571 |
+
},
|
| 572 |
+
{
|
| 573 |
+
"emoji": ":brad-badge:",
|
| 574 |
+
"count": 3
|
| 575 |
+
}
|
| 576 |
+
],
|
| 577 |
+
"replies": 0
|
| 578 |
+
},
|
| 579 |
+
{
|
| 580 |
+
"id":35,
|
| 581 |
+
"person": "jmoney",
|
| 582 |
+
"datetime": "2023-07-07 5:39 PM",
|
| 583 |
+
"message": "Severe T storms just hit Northside. High winds, torrential downpour, and the traditional ceremonial power outage.",
|
| 584 |
+
"reactions": [
|
| 585 |
+
{
|
| 586 |
+
"emoji": ":open_mouth:",
|
| 587 |
+
"count": 1
|
| 588 |
+
},
|
| 589 |
+
{
|
| 590 |
+
"emoji": ":yes2:",
|
| 591 |
+
"count": 1
|
| 592 |
+
}
|
| 593 |
+
],
|
| 594 |
+
"replies": 1
|
| 595 |
+
},
|
| 596 |
+
{
|
| 597 |
+
"id":36,
|
| 598 |
+
"person": "Doug Bowen",
|
| 599 |
+
"datetime": "2023-07-07 5:50 PM",
|
| 600 |
+
"message": "Be safe!",
|
| 601 |
+
"reactions": [
|
| 602 |
+
{
|
| 603 |
+
"emoji": ":build:",
|
| 604 |
+
"count": 1
|
| 605 |
+
}],
|
| 606 |
+
"replies": 0
|
| 607 |
+
},
|
| 608 |
+
{
|
| 609 |
+
"id":37,
|
| 610 |
+
"person": "jmoney",
|
| 611 |
+
"datetime": "2023-07-07 6:59 PM",
|
| 612 |
+
"message": "I call this \"lights-out grilled chicken nachos\"",
|
| 613 |
+
"reactions": [
|
| 614 |
+
{
|
| 615 |
+
"emoji": ":blueheart:",
|
| 616 |
+
"count": 7
|
| 617 |
+
},
|
| 618 |
+
{
|
| 619 |
+
"emoji": ":excuse-me-aless:",
|
| 620 |
+
"count": 3
|
| 621 |
+
},
|
| 622 |
+
{
|
| 623 |
+
"emoji": ":+1:",
|
| 624 |
+
"count": 2
|
| 625 |
+
},
|
| 626 |
+
{
|
| 627 |
+
"emoji": ":power-outage:",
|
| 628 |
+
"count": 1
|
| 629 |
+
}
|
| 630 |
+
],
|
| 631 |
+
"replies": 0
|
| 632 |
+
},
|
| 633 |
+
{
|
| 634 |
+
"id":38,
|
| 635 |
+
"person": "Ahmad Shareef",
|
| 636 |
+
"datetime": "2023-07-10 11:18 AM",
|
| 637 |
+
"message": "@here Who's going in on Wednesday!? We will be having Tacos from Velvet Taco. If want lunch please drop a :taco: by EOD today:alert0:. This will help me determine how much to order! Thank you :build_heart: Buffalo Chicken - crisp tenders, house buffalo sauce, danish bleu cheese, ranch crema, carrots, micro celery, flour tortilla Picnic chicken - rotisserie chicken, avocado crema, warm honey-dijon potato salad, crispy chicken skin, cilantro, flour tortilla Mediterranean mushroom - grilled portobello mushrooms, french fries, cucumber, grilled heirloom tomatoes, dill, flour tortilla - Vegan Grilled salmon - napa slaw, citrus lime crema, pickled fresnos, roasted corn pico, avocado crema, micro cilantro, corn tortilla Side: Elote & chips- queso listo, Valentina, citrus lime crema, queso fresco, lime (edited)",
|
| 638 |
+
"reactions": [
|
| 639 |
+
{
|
| 640 |
+
"emoji": ":taco:",
|
| 641 |
+
"count": 42
|
| 642 |
+
},
|
| 643 |
+
{
|
| 644 |
+
"emoji": ":drooling_face:",
|
| 645 |
+
"count": 1
|
| 646 |
+
}
|
| 647 |
+
],
|
| 648 |
+
"replies": 6
|
| 649 |
+
},
|
| 650 |
+
{
|
| 651 |
+
"id":39,
|
| 652 |
+
"person": "Ahmad Shareef",
|
| 653 |
+
"datetime": "2023-07-10 11:24 AM",
|
| 654 |
+
"message": "@here :ai:Hey HOU Build the second Hackathon Subject Matter Expert Series hosted by Carrick Carpenter, Miles Erickson and Etienne Ohl is this Wednesday, June 7th at 10:30am PT. Learn how to cruise quicker and securely with Generative AI! Check out the Hackathon events page.",
|
| 655 |
+
"replies": 0,
|
| 656 |
+
"reactions": [
|
| 657 |
+
{
|
| 658 |
+
"emoji": ":build_heart:",
|
| 659 |
+
"count": 2
|
| 660 |
+
},
|
| 661 |
+
{
|
| 662 |
+
"emoji": ":+1:",
|
| 663 |
+
"count": 2
|
| 664 |
+
}
|
| 665 |
+
]
|
| 666 |
+
},
|
| 667 |
+
{
|
| 668 |
+
"id":40,
|
| 669 |
+
"person": "Robert Hailey",
|
| 670 |
+
"datetime": "2023-07-10 11:38 AM",
|
| 671 |
+
"message": "My notebook indicates there was a lunch-and-learn on robert's rules of order today, but I don't see it on the calendar. Was it cancelled/rescheduled? I don't even see the invite in my email. (edited)",
|
| 672 |
+
"reactions": [
|
| 673 |
+
{
|
| 674 |
+
"emoji": ":question:",
|
| 675 |
+
"count": 1
|
| 676 |
+
}],
|
| 677 |
+
"replies": 2
|
| 678 |
+
},
|
| 679 |
+
{
|
| 680 |
+
"id":41,
|
| 681 |
+
"person": "Linh Ta",
|
| 682 |
+
"datetime": "2023-07-10 11:49 AM",
|
| 683 |
+
"message": "Also happening tomorrow~ Wednesday June 7th at 5pm sharp is BUILD KARAOKE NIGHT!!!! :celebrate::micdrop-boom::dancefloor: @here",
|
| 684 |
+
"reactions": [
|
| 685 |
+
{
|
| 686 |
+
"emoji": ":celebrate-inclusive:",
|
| 687 |
+
"count": 5
|
| 688 |
+
},
|
| 689 |
+
{
|
| 690 |
+
"emoji": ":microphone:",
|
| 691 |
+
"count": 4
|
| 692 |
+
},
|
| 693 |
+
{
|
| 694 |
+
"emoji": ":dancefloor:",
|
| 695 |
+
"count": 1
|
| 696 |
+
}
|
| 697 |
+
],
|
| 698 |
+
"replies": 5
|
| 699 |
+
},
|
| 700 |
+
{
|
| 701 |
+
"id":42,
|
| 702 |
+
"person": "jmoney",
|
| 703 |
+
"datetime": "2023-07-10 9:59 PM",
|
| 704 |
+
"message": "I'll miss WFWW with a cough and a fever :face_with_thermometer:",
|
| 705 |
+
"reactions": [
|
| 706 |
+
{
|
| 707 |
+
"emoji": ":get-well-soon:",
|
| 708 |
+
"count": 3
|
| 709 |
+
}
|
| 710 |
+
],
|
| 711 |
+
"replies": 0
|
| 712 |
+
},
|
| 713 |
+
{
|
| 714 |
+
"id":43,
|
| 715 |
+
"person": "Steven Murray",
|
| 716 |
+
"datetime": "2023-07-10 6:16 AM",
|
| 717 |
+
"message": "BRAD is down this morning.",
|
| 718 |
+
"reactions": [
|
| 719 |
+
{
|
| 720 |
+
"emoji": ":disappointed_relieved:",
|
| 721 |
+
"count": 1
|
| 722 |
+
}
|
| 723 |
+
],
|
| 724 |
+
"replies": 6
|
| 725 |
+
},
|
| 726 |
+
{
|
| 727 |
+
"id":44,
|
| 728 |
+
"person": "Melanie Halbert",
|
| 729 |
+
"datetime": "2023-07-11 8:43 AM",
|
| 730 |
+
"message": "Hey @channel, oddly specific request: If you’re an artistic human who plays Pokémon Go, please come find me when you have a little spare time. I’ve got a fun project for you.",
|
| 731 |
+
"reactions": [
|
| 732 |
+
{
|
| 733 |
+
"emoji": ":pokeball:",
|
| 734 |
+
"count": 5
|
| 735 |
+
}
|
| 736 |
+
],
|
| 737 |
+
"replies": 3
|
| 738 |
+
},
|
| 739 |
+
{
|
| 740 |
+
"id":46,
|
| 741 |
+
"person": "Jane",
|
| 742 |
+
"datetime": "2023-07-11 9:52 AM",
|
| 743 |
+
"message": "replied to a thread: #greenshirts #nomemoneeded Well, we just had to! IMG_8782.JPG.jpg",
|
| 744 |
+
"reactions": [
|
| 745 |
+
{
|
| 746 |
+
"emoji": ":yes-flash:",
|
| 747 |
+
"count": 4
|
| 748 |
+
},
|
| 749 |
+
{
|
| 750 |
+
"emoji": ":pants:",
|
| 751 |
+
"count": 6
|
| 752 |
+
}
|
| 753 |
+
],
|
| 754 |
+
"replies": 0
|
| 755 |
+
},
|
| 756 |
+
{
|
| 757 |
+
"id":47,
|
| 758 |
+
"person": "Doug Bowen",
|
| 759 |
+
"datetime": "2023-07-11 9:54 AM",
|
| 760 |
+
"message": "All thats left is shoes!!",
|
| 761 |
+
"reactions": [
|
| 762 |
+
{
|
| 763 |
+
"emoji": ":build:",
|
| 764 |
+
"count": 1
|
| 765 |
+
}],
|
| 766 |
+
"replies": 0
|
| 767 |
+
},
|
| 768 |
+
{
|
| 769 |
+
"id":48,
|
| 770 |
+
"person": "DataNinja",
|
| 771 |
+
"datetime": "2023-07-11 10:00 AM",
|
| 772 |
+
"message": "Let’s see who is up to the challenge @Doug Bowen",
|
| 773 |
+
"reactions": [
|
| 774 |
+
{
|
| 775 |
+
"emoji": ":build:",
|
| 776 |
+
"count": 1
|
| 777 |
+
}],
|
| 778 |
+
"replies": 0
|
| 779 |
+
},
|
| 780 |
+
{
|
| 781 |
+
"id":49,
|
| 782 |
+
"person": "Doug Bowen",
|
| 783 |
+
"datetime": "2023-07-11 10:12 AM",
|
| 784 |
+
"message": "Just FYI, our arcade machine (JOHN) is open for business! Let me know if you have any requests, concerns, or suggestions. For those asking, we have a digital marquee coming in the next few weeks and we'll be vinyl wrapping the cabinet closer to August (when our UX designer returns from leave) Have fun!",
|
| 785 |
+
"reactions": [
|
| 786 |
+
{
|
| 787 |
+
"emoji": ":build_heart:",
|
| 788 |
+
"count": 17
|
| 789 |
+
},
|
| 790 |
+
{
|
| 791 |
+
"emoji": ":hack4socialgood:",
|
| 792 |
+
"count": 9
|
| 793 |
+
},
|
| 794 |
+
{
|
| 795 |
+
"emoji": ":mario3:",
|
| 796 |
+
"count": 8
|
| 797 |
+
},
|
| 798 |
+
{
|
| 799 |
+
"emoji": ":arcade:",
|
| 800 |
+
"count": 5
|
| 801 |
+
},
|
| 802 |
+
{
|
| 803 |
+
"emoji": ":pacman:",
|
| 804 |
+
"count": 5
|
| 805 |
+
},
|
| 806 |
+
{
|
| 807 |
+
"emoji": ":nice_neon:",
|
| 808 |
+
"count": 3
|
| 809 |
+
}
|
| 810 |
+
],
|
| 811 |
+
"replies": 0
|
| 812 |
+
},
|
| 813 |
+
{
|
| 814 |
+
"id":50,
|
| 815 |
+
"person": "Ahmad Shareef",
|
| 816 |
+
"datetime": "2023-07-17 8:51 AM",
|
| 817 |
+
"message": "@here Hope everyone had a restful 3-day weekend! Who's going in tomorrow!? We will be having Bowls from Genghis Grill. If want lunch please drop a :dumpling: by EOD today:alert0:. This will help me determine how much to order! Thank you :build_heart: Menu: Tofu 4 U Bowl - Tofu with dragon salt, yellow onions, broccoli, roasted bell peppers, roasted sesame garlic sauce, and white rice. Topped with toasted sesame seeds and green onions. Teriyaki Chicken - Chicken, broccoli, green onion, and pineapple in a sweet soy-ginger teriyaki sauce served with white rice. Topped with crunchy chow mein. Bangkok Bowl - Chicken, crushed red pepper, ginger, yellow & green onions, sugar snap peas, red bell peppers, carrots, and Udon noodles with a savory sauce. Topped with toasted sesame seeds and green onions. Supreme Fried Rice Bowl - Steak, chicken, and shrimp with fried rice (w/ yellow & green onions, red bell peppers, carrots, & egg).",
|
| 818 |
+
"reactions": [
|
| 819 |
+
{
|
| 820 |
+
"emoji": ":dumpling:",
|
| 821 |
+
"count": 34
|
| 822 |
+
},
|
| 823 |
+
{
|
| 824 |
+
"emoji": ":hearts:",
|
| 825 |
+
"count": 2
|
| 826 |
+
}
|
| 827 |
+
],
|
| 828 |
+
"replies": 12
|
| 829 |
+
},
|
| 830 |
+
{
|
| 831 |
+
"id":51,
|
| 832 |
+
"person": "Phillip Nguyen",
|
| 833 |
+
"datetime": "2023-07-12 8:53 AM",
|
| 834 |
+
"message": "I’ll take a Bangkok bowl!",
|
| 835 |
+
"reactions": [
|
| 836 |
+
{
|
| 837 |
+
"emoji": ":bowl:",
|
| 838 |
+
"count": 1
|
| 839 |
+
}
|
| 840 |
+
],
|
| 841 |
+
"replies": 0
|
| 842 |
+
},
|
| 843 |
+
{
|
| 844 |
+
"id":52,
|
| 845 |
+
"person": "Blake Bryce",
|
| 846 |
+
"datetime": "2023-07-12 9:02 AM",
|
| 847 |
+
"message": "Happy 6 year anniversary to the formation of Houston :_b: QE :celebrate-all: @Logan Le @Blake Bryce @King Khan",
|
| 848 |
+
"reactions": [
|
| 849 |
+
{
|
| 850 |
+
"emoji": ":clapping-inclusive:",
|
| 851 |
+
"count": 19
|
| 852 |
+
},
|
| 853 |
+
{
|
| 854 |
+
"emoji": ":_build_qe:",
|
| 855 |
+
"count": 11
|
| 856 |
+
},
|
| 857 |
+
{
|
| 858 |
+
"emoji": ":blake:",
|
| 859 |
+
"count": 5
|
| 860 |
+
},
|
| 861 |
+
{
|
| 862 |
+
"emoji": ":loganle:",
|
| 863 |
+
"count": 5
|
| 864 |
+
},
|
| 865 |
+
{
|
| 866 |
+
"emoji": ":salman:",
|
| 867 |
+
"count": 5
|
| 868 |
+
},
|
| 869 |
+
{
|
| 870 |
+
"emoji": ":build4:",
|
| 871 |
+
"count": 2
|
| 872 |
+
}
|
| 873 |
+
],
|
| 874 |
+
"replies": 0
|
| 875 |
+
},
|
| 876 |
+
{
|
| 877 |
+
"id":53,
|
| 878 |
+
"person": "Michelle Francisco",
|
| 879 |
+
"datetime": "2023-07-12 10:28 AM",
|
| 880 |
+
"message": "Hey hey hey Houston! Hope you all had a relaxing and enjoyable 3-day weekend. Partners 4 Good will be building Worthy Bags Friday June 2 from 12-1pm 12:30-1:30pm. If you are interested in helping, reply here and I’ll forward you the invite. Also, feel free to just stop by and help out. Hope to see you Friday! (edited)",
|
| 881 |
+
"reactions": [
|
| 882 |
+
{
|
| 883 |
+
"emoji": ":heart:",
|
| 884 |
+
"count": 3
|
| 885 |
+
},
|
| 886 |
+
{
|
| 887 |
+
"emoji": ":build_heart:",
|
| 888 |
+
"count": 1
|
| 889 |
+
}
|
| 890 |
+
],
|
| 891 |
+
"replies": 2
|
| 892 |
+
},
|
| 893 |
+
{
|
| 894 |
+
"id":54,
|
| 895 |
+
"person": "Ahmad Shareef",
|
| 896 |
+
"datetime": "2023-07-12 11:16 AM",
|
| 897 |
+
"message": "@here a quick note, the first session of the Hackathon Subject Matter Expert Series with Bethany Mudd and Chris Samuels is tomorrow, May 31st at 10:30am PT. Learn how to reimagine the art of the possible with Generative AI:ai:. You can join by using the add to calendar function from the Hackathon events page.",
|
| 898 |
+
"replies": 0,
|
| 899 |
+
"reactions": [
|
| 900 |
+
{
|
| 901 |
+
"emoji": ":build_heart:",
|
| 902 |
+
"count": 5
|
| 903 |
+
}]
|
| 904 |
+
},
|
| 905 |
+
{
|
| 906 |
+
"id":55,
|
| 907 |
+
"person": "Ahmad Shareef",
|
| 908 |
+
"datetime": "2023-07-12 11:54 AM",
|
| 909 |
+
"message": "@here Hey everyone! If you are currently at the Slalom office and drive a white Mercedes SUV (license plate OKPAKO), please move it immediately as it is parked in a reserved spot on Level 3 and will be towed if not moved by 1pm. giphy (4).gif",
|
| 910 |
+
"replies": 0,
|
| 911 |
+
"reactions": [
|
| 912 |
+
{
|
| 913 |
+
"emoji": ":no_mouth:",
|
| 914 |
+
"count": 1
|
| 915 |
+
}
|
| 916 |
+
]
|
| 917 |
+
},
|
| 918 |
+
{
|
| 919 |
+
"id":56,
|
| 920 |
+
"person": "derreck.stellpflug",
|
| 921 |
+
"datetime": "2023-07-12 12:07 PM",
|
| 922 |
+
"message": ":alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0: :derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0: :alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0: I'M BACK :terminator: :derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0: :alert0::derreck_5_aws::alert0: :derreck_5_aws::ampersand: Can happily :happy-fox: :speaking_head_in_silhouette: Reeeport :bangbang: :alert0: :derreck_5_aws::alert0::derreck_5_aws::alert0: :alert0::derreck_5_aws: That the wrong :sadblob: has FINALLY been righted :face_exhaling: :derreck_5_aws::alert0::derreck_5_aws::alert0: :alert0::derreck_5_aws: I'VE RECEIVED :mailbox: MY SPECIALICZAR MEDALION :promptitude: :derreck_5_aws::alert0: :alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0: :derreck_5_aws::alert0::derreck_5_aws::alert0::derreck_5_aws::alert0: IMG_3492.heic",
|
| 923 |
+
"reactions": [
|
| 924 |
+
{
|
| 925 |
+
"emoji": ":hack4socialgood:",
|
| 926 |
+
"count": 9
|
| 927 |
+
},
|
| 928 |
+
{
|
| 929 |
+
"emoji": ":star2:",
|
| 930 |
+
"count": 8
|
| 931 |
+
},
|
| 932 |
+
{
|
| 933 |
+
"emoji": ":whoa-keanu:",
|
| 934 |
+
"count": 5
|
| 935 |
+
},
|
| 936 |
+
{
|
| 937 |
+
"emoji": ":firey-fire:",
|
| 938 |
+
"count": 9
|
| 939 |
+
},
|
| 940 |
+
{
|
| 941 |
+
"emoji": ":celebrate:",
|
| 942 |
+
"count": 5
|
| 943 |
+
},
|
| 944 |
+
{
|
| 945 |
+
"emoji": ":aws:",
|
| 946 |
+
"count": 6
|
| 947 |
+
},
|
| 948 |
+
{
|
| 949 |
+
"emoji": ":rainbow:",
|
| 950 |
+
"count": 2
|
| 951 |
+
},
|
| 952 |
+
{
|
| 953 |
+
"emoji": ":joy:",
|
| 954 |
+
"count": 3
|
| 955 |
+
},
|
| 956 |
+
{
|
| 957 |
+
"emoji": ":tada:",
|
| 958 |
+
"count": 2
|
| 959 |
+
},
|
| 960 |
+
{
|
| 961 |
+
"emoji": ":raised_hands:",
|
| 962 |
+
"count": 2
|
| 963 |
+
},
|
| 964 |
+
{
|
| 965 |
+
"emoji": ":100:",
|
| 966 |
+
"count": 1
|
| 967 |
+
},
|
| 968 |
+
{
|
| 969 |
+
"emoji": ":derreck:",
|
| 970 |
+
"count": 6
|
| 971 |
+
},
|
| 972 |
+
{
|
| 973 |
+
"emoji": ":alert-blue:",
|
| 974 |
+
"count": 2
|
| 975 |
+
},
|
| 976 |
+
{
|
| 977 |
+
"emoji": ":sparkles:",
|
| 978 |
+
"count": 2
|
| 979 |
+
},
|
| 980 |
+
{
|
| 981 |
+
"emoji": ":heart:",
|
| 982 |
+
"count": 2
|
| 983 |
+
},
|
| 984 |
+
{
|
| 985 |
+
"emoji": ":build:",
|
| 986 |
+
"count": 2
|
| 987 |
+
},
|
| 988 |
+
{
|
| 989 |
+
"emoji": ":dumbfounded-doug:",
|
| 990 |
+
"count": 3
|
| 991 |
+
}
|
| 992 |
+
],
|
| 993 |
+
"replies": 0
|
| 994 |
+
},
|
| 995 |
+
{
|
| 996 |
+
"id":57,
|
| 997 |
+
"person": "Ethan Bowen",
|
| 998 |
+
"datetime": "2023-07-12 2:22 PM",
|
| 999 |
+
"message": "Hello fellow builders, :brad-badge: BRAD :brad-badge: will be down for the rest of the month as he undergoes an external rework and final physical build. Please ask the Ops team to validate your ticket in the mean time. Thanks everyone!",
|
| 1000 |
+
"replies": 1,
|
| 1001 |
+
"reactions": [
|
| 1002 |
+
{
|
| 1003 |
+
"emoji": ":build_heart:",
|
| 1004 |
+
"count": 1
|
| 1005 |
+
}
|
| 1006 |
+
]
|
| 1007 |
+
},
|
| 1008 |
+
{
|
| 1009 |
+
"id":58,
|
| 1010 |
+
"person": "Linh Ta",
|
| 1011 |
+
"datetime": "2023-07-12 3:35 PM",
|
| 1012 |
+
"message": "Hi there - a few of us are meeting at RA Sushi for an impromptu happy hour! :cheers::kawaii-sushi: Join us - it's BYOD (Buy Your Own Drink)! :blob-wink:",
|
| 1013 |
+
"replies": 9,
|
| 1014 |
+
"reactions": [
|
| 1015 |
+
{
|
| 1016 |
+
"emoji": ":blobwhee:",
|
| 1017 |
+
"count": 1
|
| 1018 |
+
},
|
| 1019 |
+
{
|
| 1020 |
+
"emoji": "+3",
|
| 1021 |
+
"count": 1
|
| 1022 |
+
}
|
| 1023 |
+
]
|
| 1024 |
+
},
|
| 1025 |
+
{
|
| 1026 |
+
"id":59,
|
| 1027 |
+
"person": "Jane",
|
| 1028 |
+
"datetime": "2023-07-13 9:52 AM",
|
| 1029 |
+
"message": "Tell me this isn’t relatable :joy: https://youtu.be/BKorP55Aqvg",
|
| 1030 |
+
"replies": 6,
|
| 1031 |
+
"reactions": [
|
| 1032 |
+
{
|
| 1033 |
+
"emoji": ":laughing:",
|
| 1034 |
+
"count": 3
|
| 1035 |
+
},
|
| 1036 |
+
{
|
| 1037 |
+
"emoji": ":yes2:",
|
| 1038 |
+
"count": 1
|
| 1039 |
+
}
|
| 1040 |
+
]
|
| 1041 |
+
},
|
| 1042 |
+
{
|
| 1043 |
+
"id":60,
|
| 1044 |
+
"person": "Stefano",
|
| 1045 |
+
"datetime": "2023-07-13 9:53 AM",
|
| 1046 |
+
"message": "replied to a thread: Tell me this isn’t relatable :joy:… A classic, alongside this one: https://www.youtube.com/watch?v=y8OnoxKotPQ",
|
| 1047 |
+
"replies": 0,
|
| 1048 |
+
"reactions": [
|
| 1049 |
+
{
|
| 1050 |
+
"emoji": ":mindblown:",
|
| 1051 |
+
"count": 2
|
| 1052 |
+
}
|
| 1053 |
+
]
|
| 1054 |
+
},
|
| 1055 |
+
{
|
| 1056 |
+
"id":61,
|
| 1057 |
+
"person": "John Flaherty",
|
| 1058 |
+
"datetime": "2023-07-13 10:24 AM",
|
| 1059 |
+
"message": "Happy 713 Day! image.png image.png",
|
| 1060 |
+
"replies": 0,
|
| 1061 |
+
"reactions": [
|
| 1062 |
+
{
|
| 1063 |
+
"emoji": ":seven:",
|
| 1064 |
+
"count": 15
|
| 1065 |
+
},
|
| 1066 |
+
{
|
| 1067 |
+
"emoji": ":one:",
|
| 1068 |
+
"count": 15
|
| 1069 |
+
},
|
| 1070 |
+
{
|
| 1071 |
+
"emoji": ":three:",
|
| 1072 |
+
"count": 15
|
| 1073 |
+
},
|
| 1074 |
+
{
|
| 1075 |
+
"emoji": ":+1:",
|
| 1076 |
+
"count": 1
|
| 1077 |
+
}
|
| 1078 |
+
]
|
| 1079 |
+
},
|
| 1080 |
+
{
|
| 1081 |
+
"id":62,
|
| 1082 |
+
"person": "Chase",
|
| 1083 |
+
"datetime": "2023-07-13 10:26 AM",
|
| 1084 |
+
"message": "HTOWN TIL WE DROWN",
|
| 1085 |
+
"replies": 1,
|
| 1086 |
+
"reactions": [
|
| 1087 |
+
{
|
| 1088 |
+
"emoji": ":rolling_on_the_floor_laughing:",
|
| 1089 |
+
"count": 9
|
| 1090 |
+
},
|
| 1091 |
+
{
|
| 1092 |
+
"emoji": ":100:",
|
| 1093 |
+
"count": 4
|
| 1094 |
+
},
|
| 1095 |
+
{
|
| 1096 |
+
"emoji": ":gold-star:",
|
| 1097 |
+
"count": 2
|
| 1098 |
+
},
|
| 1099 |
+
{
|
| 1100 |
+
"emoji": ":grimacing:",
|
| 1101 |
+
"count": 1
|
| 1102 |
+
}
|
| 1103 |
+
]
|
| 1104 |
+
},
|
| 1105 |
+
{
|
| 1106 |
+
"id":63,
|
| 1107 |
+
"person": "Chase",
|
| 1108 |
+
"datetime": "2023-07-13 10:36 AM",
|
| 1109 |
+
"message": "trill (896 kB) https://media4.giphy.com/media/x0vDHDAkAxS3S/giphy.gif?cid=6104955e484j64k7mgl4ober5tdsyqegtkuaok7gl1i14eta&ep=v1_gifs_translate&rid=giphy.gif&ct=g",
|
| 1110 |
+
"replies": 0,
|
| 1111 |
+
"reactions": [
|
| 1112 |
+
{
|
| 1113 |
+
"emoji": ":this:",
|
| 1114 |
+
"count": 3
|
| 1115 |
+
}
|
| 1116 |
+
]
|
| 1117 |
+
},
|
| 1118 |
+
{
|
| 1119 |
+
"id":64,
|
| 1120 |
+
"person": "Michelle Francisco",
|
| 1121 |
+
"datetime": "10:38 AM",
|
| 1122 |
+
"message": "Happy birthday @Ray Lopez! H-Town and Prime days are Ray’s Day. balloons.jpeg balloons.jpeg",
|
| 1123 |
+
"replies": 23,
|
| 1124 |
+
"reactions": [
|
| 1125 |
+
{
|
| 1126 |
+
"emoji": "balloon",
|
| 1127 |
+
"count": 1
|
| 1128 |
+
}
|
| 1129 |
+
]
|
| 1130 |
+
},
|
| 1131 |
+
{
|
| 1132 |
+
"id":65,
|
| 1133 |
+
"person": "Keri W",
|
| 1134 |
+
"datetime": "2023-07-13 3:14 PM",
|
| 1135 |
+
"message": "Hey Houston fam!:flamingo-dance: Love community theater? :performing_arts: Enjoy supporting local arts? Check out Theatre Southwest's Festival of Originals (FOO)! :tada: Theatre Southwest is a hidden gem :gem: just a hop, skip, and jump from the Build Center. In a single show, catch 5 short original works by different playwrights, each with a different director and cast. FOO runs weekends from July 28 to August 12 :spiral_calendar_pad: More info and tickets are available at the TSW website. Don't miss out!",
|
| 1136 |
+
"replies": 3,
|
| 1137 |
+
"reactions": [
|
| 1138 |
+
{
|
| 1139 |
+
"emoji": ":build_heart:",
|
| 1140 |
+
"count": 5
|
| 1141 |
+
},
|
| 1142 |
+
{
|
| 1143 |
+
"emoji": ":performing_arts:",
|
| 1144 |
+
"count": 3
|
| 1145 |
+
}
|
| 1146 |
+
]
|
| 1147 |
+
},
|
| 1148 |
+
{
|
| 1149 |
+
"id":66,
|
| 1150 |
+
"person": "Michelle Francisco",
|
| 1151 |
+
"datetime": "2023-07-13 4:04 PM",
|
| 1152 |
+
"message": "Next Friday - Bring Your Kids to Work Day Have your kiddos ever wondered what you do all day at work or wanted to see the office? Get ready for a fun time that will surely leave them wide-eyed with wonder and brimming with excitement! It’s time to mark your calendars for our. Kindly fill out the RSVP link here by July 14th. Here are some additional things to know: Kid Age Range 6 -16 Parents must be involved during this time frame (this is not a babysitting event) Have some fun!",
|
| 1153 |
+
"replies": 0,
|
| 1154 |
+
"reactions": [
|
| 1155 |
+
{
|
| 1156 |
+
"emoji": ":build_heart:",
|
| 1157 |
+
"count": 5
|
| 1158 |
+
}]
|
| 1159 |
+
},
|
| 1160 |
+
{
|
| 1161 |
+
"id":67,
|
| 1162 |
+
"person": "Doug Bowen",
|
| 1163 |
+
"datetime": "2023-07-11 10:12 AM",
|
| 1164 |
+
"message": "I love subway. I'm going to order 10 footlongs for the team. Please drop a :subway: if you want to join in. I'll be ordering at 11:30. Thanks",
|
| 1165 |
+
"reactions": [
|
| 1166 |
+
{
|
| 1167 |
+
"emoji": ":subway:",
|
| 1168 |
+
"count": 3
|
| 1169 |
+
}
|
| 1170 |
+
],
|
| 1171 |
+
"replies": 0
|
| 1172 |
+
},
|
| 1173 |
+
{
|
| 1174 |
+
"id":68,
|
| 1175 |
+
"person": "Srijaya Suresh",
|
| 1176 |
+
"datetime": "2023-07-11 10:12 AM",
|
| 1177 |
+
"message": "Is it time for Blake to take the Milk Challenge?!?",
|
| 1178 |
+
"reactions": [
|
| 1179 |
+
{
|
| 1180 |
+
"emoji": ":milk:",
|
| 1181 |
+
"count": 3
|
| 1182 |
+
}
|
| 1183 |
+
],
|
| 1184 |
+
"replies": 0
|
| 1185 |
+
},
|
| 1186 |
+
{
|
| 1187 |
+
"id":69,
|
| 1188 |
+
"person": "Srijaya Suresh",
|
| 1189 |
+
"datetime": "2023-07-14 10:12 AM",
|
| 1190 |
+
"message": "Hey Blake, Got milk?!?",
|
| 1191 |
+
"reactions": [
|
| 1192 |
+
{
|
| 1193 |
+
"emoji": ":milk:",
|
| 1194 |
+
"count": 3
|
| 1195 |
+
}
|
| 1196 |
+
],
|
| 1197 |
+
"replies": 0
|
| 1198 |
+
}, {
|
| 1199 |
+
"id":70,
|
| 1200 |
+
"person": "Michelle Francisco",
|
| 1201 |
+
"datetime": "2023-07-14 10:12 AM",
|
| 1202 |
+
"message": "Did someone say MILK? @BlakeBryce?!?",
|
| 1203 |
+
"reactions": [
|
| 1204 |
+
{
|
| 1205 |
+
"emoji": ":milk:",
|
| 1206 |
+
"count": 3
|
| 1207 |
+
}
|
| 1208 |
+
],
|
| 1209 |
+
"replies": 0
|
| 1210 |
+
},
|
| 1211 |
+
{
|
| 1212 |
+
"id":71,
|
| 1213 |
+
"person": "Blake Bryce",
|
| 1214 |
+
"datetime": "2023-07-14 10:12 AM",
|
| 1215 |
+
"message": "Never drank milk.",
|
| 1216 |
+
"reactions": [
|
| 1217 |
+
{
|
| 1218 |
+
"emoji": ":milk:",
|
| 1219 |
+
"count": 2
|
| 1220 |
+
}
|
| 1221 |
+
],
|
| 1222 |
+
"replies": 0
|
| 1223 |
+
},
|
| 1224 |
+
{
|
| 1225 |
+
"id":72,
|
| 1226 |
+
"person": "Kim Adams",
|
| 1227 |
+
"datetime": "2023-07-14 10:12 AM",
|
| 1228 |
+
"message": "Blake should drink milk.",
|
| 1229 |
+
"reactions": [
|
| 1230 |
+
{
|
| 1231 |
+
"emoji": ":milk:",
|
| 1232 |
+
"count": 2
|
| 1233 |
+
}
|
| 1234 |
+
],
|
| 1235 |
+
"replies": 0
|
| 1236 |
+
}
|
| 1237 |
+
]
|
slack_processing/data/themes.json
DELETED
|
@@ -1,398 +0,0 @@
|
|
| 1 |
-
[
|
| 2 |
-
{
|
| 3 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 4 |
-
"theme": "D&D Campaign",
|
| 5 |
-
"modifier": 0.0,
|
| 6 |
-
"message": "IMPORTANT ADDITION You do NOT need ANY experience or knowledge of D&D to join the one-shot campaign. R2 will walk you through everything you need to know. Don't be shy and join us! (edited)",
|
| 7 |
-
"person": "Keri W",
|
| 8 |
-
"postId": 2,
|
| 9 |
-
"themeSimilarity": 1.0
|
| 10 |
-
},
|
| 11 |
-
{
|
| 12 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 13 |
-
"theme": "Availability",
|
| 14 |
-
"modifier": 1.0,
|
| 15 |
-
"message": "After the summer then I will be more available.",
|
| 16 |
-
"person": "Brad Merrell",
|
| 17 |
-
"postId": 3,
|
| 18 |
-
"themeSimilarity": 1.0
|
| 19 |
-
},
|
| 20 |
-
{
|
| 21 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 22 |
-
"theme": "Meeting",
|
| 23 |
-
"modifier": 0.0,
|
| 24 |
-
"message": "@here L&L starting in 5 mins. If you are in the office Feel free to come to RICE. AI Tutoring Paving the Way to Better Tomorrows in Education\nhttps//teams.microsoft.com/l/meetup-join/19%3ameeting_MTg2OWRkYzgtYTdmOS00NTk4LWE4MmQ[\u2026]2c%22Oid%22%3a%22bca811aa-1982-4f3b-b602-bca1a89180dc%22%7d",
|
| 25 |
-
"person": "Jay Patel",
|
| 26 |
-
"postId": 4,
|
| 27 |
-
"themeSimilarity": 1.0
|
| 28 |
-
},
|
| 29 |
-
{
|
| 30 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 31 |
-
"theme": "Celebration",
|
| 32 |
-
"modifier": 10.0,
|
| 33 |
-
"message": "It's @Sam \u2019s 2 year Slalomversary. Sam it's been a pleasure to be on a team with you and thanks for everything you do at _build especially around the ERGs. Congratulations!",
|
| 34 |
-
"person": "Manik",
|
| 35 |
-
"postId": 5,
|
| 36 |
-
"themeSimilarity": 1.0
|
| 37 |
-
},
|
| 38 |
-
{
|
| 39 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 40 |
-
"theme": "Celebration",
|
| 41 |
-
"modifier": 0.0,
|
| 42 |
-
"message": "Happy Slalomversary my dear friend! @Sam hugging_face",
|
| 43 |
-
"person": "\u028e\u05df\u05df\u01dd\u029e",
|
| 44 |
-
"postId": 8,
|
| 45 |
-
"themeSimilarity": 1.0
|
| 46 |
-
},
|
| 47 |
-
{
|
| 48 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 49 |
-
"theme": "Maintenance",
|
| 50 |
-
"modifier": 0.0,
|
| 51 |
-
"message": "FYI at 330 today I'll be taking the Arcade machine down for maintenance. It will actually remain down until next Wednesday morning as I work through some marquee configuration. dealwithit",
|
| 52 |
-
"person": "Doug Bowen",
|
| 53 |
-
"postId": 10,
|
| 54 |
-
"themeSimilarity": 1.0
|
| 55 |
-
},
|
| 56 |
-
{
|
| 57 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 58 |
-
"theme": "Appreciation",
|
| 59 |
-
"modifier": 0.0,
|
| 60 |
-
"message": "Thank you to everyone who came into the office yesterday in support of our Build Center tour for Woodside Energy and AWS. Special thanks to @Christy Nolan and @Danny Weldon for their support presenting \u201chow we work\u201d and \u201cwhat we\u2019re working on\u201d. We\u2019re well positioned to win work with the buyer at Woodside stating \u201cseveral consulting companies have pitched to me but nobody aligns better with my vision than Slalom does\u201d.",
|
| 61 |
-
"person": "John Flaherty",
|
| 62 |
-
"postId": 11,
|
| 63 |
-
"themeSimilarity": 1.0
|
| 64 |
-
},
|
| 65 |
-
{
|
| 66 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 67 |
-
"theme": "Time Sheets",
|
| 68 |
-
"modifier": 0.0,
|
| 69 |
-
"message": "Reminder Time sheets!",
|
| 70 |
-
"person": "Slackbot",
|
| 71 |
-
"postId": 13,
|
| 72 |
-
"themeSimilarity": 1.0
|
| 73 |
-
},
|
| 74 |
-
{
|
| 75 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 76 |
-
"theme": "Date Night",
|
| 77 |
-
"modifier": 0.0,
|
| 78 |
-
"message": "Date night with my wife at the Sugar Land Space Cowboys game.",
|
| 79 |
-
"person": "Steven Murray",
|
| 80 |
-
"postId": 15,
|
| 81 |
-
"themeSimilarity": 1.0
|
| 82 |
-
},
|
| 83 |
-
{
|
| 84 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 85 |
-
"theme": "Father'S Day",
|
| 86 |
-
"modifier": 0.0,
|
| 87 |
-
"message": "Happy Father's day to all you _Builder Dads out there!",
|
| 88 |
-
"person": "Naeem",
|
| 89 |
-
"postId": 16,
|
| 90 |
-
"themeSimilarity": 1.0
|
| 91 |
-
},
|
| 92 |
-
{
|
| 93 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 94 |
-
"theme": "Father'S Day",
|
| 95 |
-
"modifier": 0.0,
|
| 96 |
-
"message": "Anyone had any cool gifts/activities for Father\u2019s Day?",
|
| 97 |
-
"person": "Michelle Francisco",
|
| 98 |
-
"postId": 17,
|
| 99 |
-
"themeSimilarity": 1.0
|
| 100 |
-
},
|
| 101 |
-
{
|
| 102 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 103 |
-
"theme": "Cow Appreciation",
|
| 104 |
-
"modifier": 7.0,
|
| 105 |
-
"message": "National Cow Appreciation Day - @julie.lowe how are the cows? slightly_smiling_face cow",
|
| 106 |
-
"person": "Michelle Francisco",
|
| 107 |
-
"postId": 18,
|
| 108 |
-
"themeSimilarity": 1.0
|
| 109 |
-
},
|
| 110 |
-
{
|
| 111 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 112 |
-
"theme": "Sunburn",
|
| 113 |
-
"modifier": 0.0,
|
| 114 |
-
"message": "I applied sunscreen poorly and have stripes of sunburn....",
|
| 115 |
-
"person": "richard.hand",
|
| 116 |
-
"postId": 19,
|
| 117 |
-
"themeSimilarity": 1.0
|
| 118 |
-
},
|
| 119 |
-
{
|
| 120 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 121 |
-
"theme": "Gift",
|
| 122 |
-
"modifier": 0.0,
|
| 123 |
-
"message": "My 3 year old daughter went to GAP and selected a flower print shirt for my husband - Nishank (I have never seen him wear flower print till yesterday). She also bought candy 'to share'.",
|
| 124 |
-
"person": "Mrinalini Shekhawat",
|
| 125 |
-
"postId": 20,
|
| 126 |
-
"themeSimilarity": 1.0
|
| 127 |
-
},
|
| 128 |
-
{
|
| 129 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 130 |
-
"theme": "Lunch Order",
|
| 131 |
-
"modifier": 0.0,
|
| 132 |
-
"message": "@channel Who's going in on Wednesday!? For lunch We will be having lunch from Bellagreen. If want lunch please drop a lunch-bag by EOD today. This will help me determine how much to order! Thank youbuild_heart Options Below comes with chips and fresh fruit...",
|
| 133 |
-
"person": "Ahmad Shareef",
|
| 134 |
-
"postId": 21,
|
| 135 |
-
"themeSimilarity": 1.0
|
| 136 |
-
},
|
| 137 |
-
{
|
| 138 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 139 |
-
"theme": "Build Center",
|
| 140 |
-
"modifier": NaN,
|
| 141 |
-
"message": "@channel Also happening on Wednesday is the Woodside Build Center Tour beginning at 9am. I would like to have as many Builders in the office as possible. Please make every effort to be on-site. Thank you.",
|
| 142 |
-
"person": "John Flaherty",
|
| 143 |
-
"postId": 23,
|
| 144 |
-
"themeSimilarity": 1.0
|
| 145 |
-
},
|
| 146 |
-
{
|
| 147 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 148 |
-
"theme": "Etiquette",
|
| 149 |
-
"modifier": 0.0,
|
| 150 |
-
"message": "how to tell someone sitting behind you chewing ice from a solo cup that it is really on your nerves? - asking for a friend",
|
| 151 |
-
"person": "richard.hand",
|
| 152 |
-
"postId": 26,
|
| 153 |
-
"themeSimilarity": 1.0
|
| 154 |
-
},
|
| 155 |
-
{
|
| 156 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 157 |
-
"theme": "Meeting",
|
| 158 |
-
"modifier": 0.0,
|
| 159 |
-
"message": "@here Good morning everyone! We are having our CCC today in the rice room from 900-1000am!",
|
| 160 |
-
"person": "Alexa De La Garza",
|
| 161 |
-
"postId": 29,
|
| 162 |
-
"themeSimilarity": 1.0
|
| 163 |
-
},
|
| 164 |
-
{
|
| 165 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 166 |
-
"theme": "Technical Issue",
|
| 167 |
-
"modifier": 0.0,
|
| 168 |
-
"message": "Is anyone else getting signed out of their sessions from one day to the next? My Chrome tab that had a sharepoint open logged me out my Salesforce link logged out... Anyone else?",
|
| 169 |
-
"person": "Richard Hand",
|
| 170 |
-
"postId": 30,
|
| 171 |
-
"themeSimilarity": 1.0
|
| 172 |
-
},
|
| 173 |
-
{
|
| 174 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 175 |
-
"theme": "Found",
|
| 176 |
-
"modifier": 0.0,
|
| 177 |
-
"message": "UPDATE They've been found! Thank you @Alexa De La Garza and @Josh Mascorro meow_heart If anyone sees/saw the wine bottles I won from the auction for Target Hunger can you please put them by Melanie\u2019s desk melting_face I think I left them by Rice where we were having karaoke or maybe even by the elevators.",
|
| 178 |
-
"person": "Inez Escandon",
|
| 179 |
-
"postId": 32,
|
| 180 |
-
"themeSimilarity": 1.0
|
| 181 |
-
},
|
| 182 |
-
{
|
| 183 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 184 |
-
"theme": "Bake Off",
|
| 185 |
-
"modifier": 0.0,
|
| 186 |
-
"message": "@here alert-bluecalling all bakers!! Want to show off your skills & take on a challenge to be titled the best baker in the Houston Build Center?? Then enter The Great Build Bake Off!! chefkissblob-birthdaycakefirst_place_medalblobwhee We are doing Cakes this roundblob-birthdaycake! Sign up HERE & bring your best slices on Wednesday June 14th. More deets below point_down Please be sure to pre-cut the cake into bite-size before the judging There will be a People\u2019s Choice and Judges\u2019 Choice as winners You do not need to be present during the judging time to enter. Bakeoff (2).png",
|
| 187 |
-
"person": "Ahmad Shareef",
|
| 188 |
-
"postId": 33,
|
| 189 |
-
"themeSimilarity": 1.0
|
| 190 |
-
},
|
| 191 |
-
{
|
| 192 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 193 |
-
"theme": "Parking Validation",
|
| 194 |
-
"modifier": 0.0,
|
| 195 |
-
"message": "@here Hello folks! B.R.A.D is working again if anyone in the office needs parking validation brad-badgeblue_car",
|
| 196 |
-
"person": "Alexa De La Garza",
|
| 197 |
-
"postId": 34,
|
| 198 |
-
"themeSimilarity": 1.0
|
| 199 |
-
},
|
| 200 |
-
{
|
| 201 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 202 |
-
"theme": "Severe Storms",
|
| 203 |
-
"modifier": 1.0,
|
| 204 |
-
"message": "Severe T storms just hit Northside. High winds torrential downpour and the traditional ceremonial power outage.",
|
| 205 |
-
"person": "jmoney",
|
| 206 |
-
"postId": 35,
|
| 207 |
-
"themeSimilarity": 1.0
|
| 208 |
-
},
|
| 209 |
-
{
|
| 210 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 211 |
-
"theme": "Safety",
|
| 212 |
-
"modifier": 0.0,
|
| 213 |
-
"message": "Be safe!",
|
| 214 |
-
"person": "Doug Bowen",
|
| 215 |
-
"postId": 36,
|
| 216 |
-
"themeSimilarity": 1.0
|
| 217 |
-
},
|
| 218 |
-
{
|
| 219 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 220 |
-
"theme": "Lunch Order",
|
| 221 |
-
"modifier": 6.0,
|
| 222 |
-
"message": "@here Who's going in on Wednesday!? We will be having Tacos from Velvet Taco. If want lunch please drop a taco by EOD todayalert0. This will help me determine how much to order! Thank you build_heart Buffalo Chicken - crisp tenders house buffalo sauce danish bleu cheese ranch crema carrots micro celery flour tortilla Picnic chicken - rotisserie chicken avocado crema warm honey-dijon potato salad crispy chicken skin cilantro flour tortilla Mediterranean mushroom - grilled portobello mushrooms french fries cucumber grilled heirloom tomatoes dill flour tortilla - Vegan Grilled salmon - napa slaw citrus lime crema pickled fresnos roasted corn pico avocado crema micro cilantro corn tortilla Side Elote & chips- queso listo Valentina citrus lime crema queso fresco lime (edited)",
|
| 223 |
-
"person": "Ahmad Shareef",
|
| 224 |
-
"postId": 38,
|
| 225 |
-
"themeSimilarity": 1.0
|
| 226 |
-
},
|
| 227 |
-
{
|
| 228 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 229 |
-
"theme": "Hackathon",
|
| 230 |
-
"modifier": 0.0,
|
| 231 |
-
"message": "@here aiHey HOU Build the second Hackathon Subject Matter Expert Series hosted by Carrick Carpenter Miles Erickson and Etienne Ohl is this Wednesday June 7th at 1030am PT. Learn how to cruise quicker and securely with Generative AI! Check out the Hackathon events page.",
|
| 232 |
-
"person": "Ahmad Shareef",
|
| 233 |
-
"postId": 39,
|
| 234 |
-
"themeSimilarity": 1.0
|
| 235 |
-
},
|
| 236 |
-
{
|
| 237 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 238 |
-
"theme": "Cancelled",
|
| 239 |
-
"modifier": 2.0,
|
| 240 |
-
"message": "My notebook indicates there was a lunch-and-learn on robert's rules of order today but I don't see it on the calendar. Was it cancelled/rescheduled? I don't even see the invite in my email. (edited)",
|
| 241 |
-
"person": "Robert Hailey",
|
| 242 |
-
"postId": 40,
|
| 243 |
-
"themeSimilarity": 1.0
|
| 244 |
-
},
|
| 245 |
-
{
|
| 246 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 247 |
-
"theme": "Karaoke Night",
|
| 248 |
-
"modifier": 5.0,
|
| 249 |
-
"message": "Also happening tomorrow~ Wednesday June 7th at 5pm sharp is BUILD KARAOKE NIGHT!!!! celebratemicdrop-boomdancefloor @here",
|
| 250 |
-
"person": "Linh Ta",
|
| 251 |
-
"postId": 41,
|
| 252 |
-
"themeSimilarity": 1.0
|
| 253 |
-
},
|
| 254 |
-
{
|
| 255 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 256 |
-
"theme": "Art Project",
|
| 257 |
-
"modifier": 3.0,
|
| 258 |
-
"message": "Hey @channel oddly specific request If you\u2019re an artistic human who plays Pok\u00e9mon Go please come find me when you have a little spare time. I\u2019ve got a fun project for you.",
|
| 259 |
-
"person": "Melanie Halbert",
|
| 260 |
-
"postId": 44,
|
| 261 |
-
"themeSimilarity": 1.0
|
| 262 |
-
},
|
| 263 |
-
{
|
| 264 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 265 |
-
"theme": "Shoes",
|
| 266 |
-
"modifier": 0.0,
|
| 267 |
-
"message": "All thats left is shoes!!",
|
| 268 |
-
"person": "Doug Bowen",
|
| 269 |
-
"postId": 47,
|
| 270 |
-
"themeSimilarity": 1.0
|
| 271 |
-
},
|
| 272 |
-
{
|
| 273 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 274 |
-
"theme": "Arcade Machine",
|
| 275 |
-
"modifier": 0.0,
|
| 276 |
-
"message": "Just FYI our arcade machine (JOHN) is open for business! Let me know if you have any requests concerns or suggestions. For those asking we have a digital marquee coming in the next few weeks and we'll be vinyl wrapping the cabinet closer to August (when our UX designer returns from leave) Have fun!",
|
| 277 |
-
"person": "Doug Bowen",
|
| 278 |
-
"postId": 49,
|
| 279 |
-
"themeSimilarity": 1.0
|
| 280 |
-
},
|
| 281 |
-
{
|
| 282 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 283 |
-
"theme": "Lunch Order",
|
| 284 |
-
"modifier": 12.0,
|
| 285 |
-
"message": "@here Hope everyone had a restful 3-day weekend! Who's going in tomorrow!? We will be having Bowls from Genghis Grill. If want lunch please drop a dumpling by EOD todayalert0. This will help me determine how much to order! Thank you build_heart Menu Tofu 4 U Bowl - Tofu with dragon salt yellow onions broccoli roasted bell peppers roasted sesame garlic sauce and white rice. Topped with toasted sesame seeds and green onions. Teriyaki Chicken - Chicken broccoli green onion and pineapple in a sweet soy-ginger teriyaki sauce served with white rice. Topped with crunchy chow mein. Bangkok Bowl - Chicken crushed red pepper ginger yellow & green onions sugar snap peas red bell peppers carrots and Udon noodles with a savory sauce. Topped with toasted sesame seeds and green onions. Supreme Fried Rice Bowl - Steak chicken and shrimp with fried rice (w/ yellow & green onions red bell peppers carrots & egg).",
|
| 286 |
-
"person": "Ahmad Shareef",
|
| 287 |
-
"postId": 50,
|
| 288 |
-
"themeSimilarity": 1.0
|
| 289 |
-
},
|
| 290 |
-
{
|
| 291 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 292 |
-
"theme": "Food",
|
| 293 |
-
"modifier": 0.0,
|
| 294 |
-
"message": "I\u2019ll take a Bangkok bowl!",
|
| 295 |
-
"person": "Phillip Nguyen",
|
| 296 |
-
"postId": 51,
|
| 297 |
-
"themeSimilarity": 1.0
|
| 298 |
-
},
|
| 299 |
-
{
|
| 300 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 301 |
-
"theme": "Anniversary",
|
| 302 |
-
"modifier": 0.0,
|
| 303 |
-
"message": "Happy 6 year anniversary to the formation of Houston _b QE celebrate-all @Logan Le @Blake Bryce @King Khan",
|
| 304 |
-
"person": "Blake Bryce",
|
| 305 |
-
"postId": 52,
|
| 306 |
-
"themeSimilarity": 1.0
|
| 307 |
-
},
|
| 308 |
-
{
|
| 309 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 310 |
-
"theme": "Volunteer Opportunity",
|
| 311 |
-
"modifier": 2.0,
|
| 312 |
-
"message": "Hey hey hey Houston! Hope you all had a relaxing and enjoyable 3-day weekend. Partners 4 Good will be building Worthy Bags Friday June 2 from 12-1pm 1230-130pm. If you are interested in helping reply here and I\u2019ll forward you the invite. Also feel free to just stop by and help out. Hope to see you Friday! (edited)",
|
| 313 |
-
"person": "Michelle Francisco",
|
| 314 |
-
"postId": 53,
|
| 315 |
-
"themeSimilarity": 1.0
|
| 316 |
-
},
|
| 317 |
-
{
|
| 318 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 319 |
-
"theme": "Hackathon",
|
| 320 |
-
"modifier": 0.0,
|
| 321 |
-
"message": "@here a quick note the first session of the Hackathon Subject Matter Expert Series with Bethany Mudd and Chris Samuels is tomorrow May 31st at 1030am PT. Learn how to reimagine the art of the possible with Generative AIai. You can join by using the add to calendar function from the Hackathon events page.",
|
| 322 |
-
"person": "Ahmad Shareef",
|
| 323 |
-
"postId": 54,
|
| 324 |
-
"themeSimilarity": 1.0
|
| 325 |
-
},
|
| 326 |
-
{
|
| 327 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 328 |
-
"theme": "Parking Issue",
|
| 329 |
-
"modifier": 0.0,
|
| 330 |
-
"message": "@here Hey everyone! If you are currently at the Slalom office and drive a white Mercedes SUV (license plate OKPAKO) please move it immediately as it is parked in a reserved spot on Level 3 and will be towed if not moved by 1pm. giphy (4).gif",
|
| 331 |
-
"person": "Ahmad Shareef",
|
| 332 |
-
"postId": 55,
|
| 333 |
-
"themeSimilarity": 1.0
|
| 334 |
-
},
|
| 335 |
-
{
|
| 336 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 337 |
-
"theme": "Maintenance",
|
| 338 |
-
"modifier": 1.0,
|
| 339 |
-
"message": "Hello fellow builders brad-badge BRAD brad-badge will be down for the rest of the month as he undergoes an external rework and final physical build. Please ask the Ops team to validate your ticket in the mean time. Thanks everyone!",
|
| 340 |
-
"person": "Ethan Bowen",
|
| 341 |
-
"postId": 57,
|
| 342 |
-
"themeSimilarity": 1.0
|
| 343 |
-
},
|
| 344 |
-
{
|
| 345 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 346 |
-
"theme": "Impromptu Happy",
|
| 347 |
-
"modifier": 9.0,
|
| 348 |
-
"message": "Hi there - a few of us are meeting at RA Sushi for an impromptu happy hour! cheerskawaii-sushi Join us - it's BYOD (Buy Your Own Drink)! blob-wink",
|
| 349 |
-
"person": "Linh Ta",
|
| 350 |
-
"postId": 58,
|
| 351 |
-
"themeSimilarity": 1.0
|
| 352 |
-
},
|
| 353 |
-
{
|
| 354 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 355 |
-
"theme": "713 Day",
|
| 356 |
-
"modifier": 0.0,
|
| 357 |
-
"message": "Happy 713 Day! image.png image.png",
|
| 358 |
-
"person": "John Flaherty",
|
| 359 |
-
"postId": 61,
|
| 360 |
-
"themeSimilarity": 1.0
|
| 361 |
-
},
|
| 362 |
-
{
|
| 363 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 364 |
-
"theme": "Birthday",
|
| 365 |
-
"modifier": 23.0,
|
| 366 |
-
"message": "Happy birthday @Ray Lopez! H-Town and Prime days are Ray\u2019s Day. balloons.jpeg balloons.jpeg",
|
| 367 |
-
"person": "Michelle Francisco",
|
| 368 |
-
"postId": 64,
|
| 369 |
-
"themeSimilarity": 1.0
|
| 370 |
-
},
|
| 371 |
-
{
|
| 372 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 373 |
-
"theme": "Theatre Southwest'S",
|
| 374 |
-
"modifier": 3.0,
|
| 375 |
-
"message": "Hey Houston fam!flamingo-dance Love community theater? performing_arts Enjoy supporting local arts? Check out Theatre Southwest's Festival of Originals (FOO)! tada Theatre Southwest is a hidden gem gem just a hop skip and jump from the Build Center. In a single show catch 5 short original works by different playwrights each with a different director and cast. FOO runs weekends from July 28 to August 12 spiral_calendar_pad More info and tickets are available at the TSW website. Don't miss out!",
|
| 376 |
-
"person": "Keri W",
|
| 377 |
-
"postId": 65,
|
| 378 |
-
"themeSimilarity": 1.0
|
| 379 |
-
},
|
| 380 |
-
{
|
| 381 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 382 |
-
"theme": "Bring Your",
|
| 383 |
-
"modifier": 0.0,
|
| 384 |
-
"message": "Next Friday - Bring Your Kids to Work Day Have your kiddos ever wondered what you do all day at work or wanted to see the office? Get ready for a fun time that will surely leave them wide-eyed with wonder and brimming with excitement! It\u2019s time to mark your calendars for our. Kindly fill out the RSVP link here by July 14th. Here are some additional things to know Kid Age Range 6 -16 Parents must be involved during this time frame (this is not a babysitting event) Have some fun!",
|
| 385 |
-
"person": "Michelle Francisco",
|
| 386 |
-
"postId": 66,
|
| 387 |
-
"themeSimilarity": 1.0
|
| 388 |
-
},
|
| 389 |
-
{
|
| 390 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 391 |
-
"theme": "Subway Order",
|
| 392 |
-
"modifier": 0.0,
|
| 393 |
-
"message": "I love subway. I'm going to order 10 footlongs for the team. Please drop a subway if you want to join in. I'll be ordering at 1130. Thanks",
|
| 394 |
-
"person": "Doug Bowen",
|
| 395 |
-
"postId": 67,
|
| 396 |
-
"themeSimilarity": 1.0
|
| 397 |
-
}
|
| 398 |
-
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
slack_processing/data/topics.txt
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
slalomversary, anniversary
|
| 2 |
+
parking, parking validation
|
| 3 |
+
lunch and learn, l&l, lunch-and-learn, lunch & learn, l and l
|
| 4 |
+
tour, build center tour, bc tour
|
| 5 |
+
d&d, dungeons and dragons
|
slack_processing/slack_data_prep.py
CHANGED
|
@@ -2,64 +2,83 @@ import pandas as pd
|
|
| 2 |
import numpy as np
|
| 3 |
import openai, os, tiktoken, json
|
| 4 |
from datetime import datetime as dt
|
| 5 |
-
import
|
| 6 |
from openai.embeddings_utils import cosine_similarity, get_embedding
|
| 7 |
from sklearn.metrics import classification_report, PrecisionRecallDisplay
|
|
|
|
|
|
|
| 8 |
from collections import Counter
|
| 9 |
from nltk.corpus import wordnet
|
| 10 |
from nltk.tokenize import word_tokenize
|
| 11 |
-
from utilities import
|
|
|
|
|
|
|
| 12 |
|
| 13 |
-
openai.api_key =
|
| 14 |
|
| 15 |
# Set embedding model parameters
|
| 16 |
pd.set_option('display.max_rows', None)
|
| 17 |
pd.set_option('display.max_columns', None)
|
| 18 |
|
| 19 |
SAMPLE_SIZE = 500
|
| 20 |
-
MAX_TOKENS =
|
| 21 |
-
TOPIC_TOKENS = 100
|
| 22 |
EMBEDDING_MODEL = "text-embedding-ada-002"
|
| 23 |
EMBEDDING_ENCODING = "cl100k_base"
|
| 24 |
|
| 25 |
-
|
| 26 |
OUTPUT_THEME_PATH = "slack_processing/data/themes.json"
|
| 27 |
OUTPUT_THEME_EMBEDDINGS_PATH = "slack_processing/data/slack_with_theme_embeddings.json"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
|
| 29 |
df=pd.DataFrame()
|
| 30 |
themes = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
|
| 32 |
-
# Set up the initial reference topics
|
| 33 |
-
reference_topics = set([
|
| 34 |
-
"Slalomversary",
|
| 35 |
-
"Birthday",
|
| 36 |
-
"Achievement",
|
| 37 |
-
"Teamwork",
|
| 38 |
-
"Innovation"
|
| 39 |
-
])
|
| 40 |
-
|
| 41 |
-
class Theme:
|
| 42 |
-
def __init__(self, datetime, theme, modifier, person, postId, similarity, message):
|
| 43 |
-
self.datetime = datetime
|
| 44 |
-
self.theme = theme
|
| 45 |
-
self.modifier = modifier
|
| 46 |
-
self.message=message
|
| 47 |
-
self.person=person
|
| 48 |
-
self.postId=postId
|
| 49 |
-
#self.topReaction=topReaction
|
| 50 |
-
self.themeSimilarity=similarity
|
| 51 |
-
|
| 52 |
-
def to_dict(self):
|
| 53 |
-
return {
|
| 54 |
-
'datetime':self.datetime,
|
| 55 |
-
'theme': self.theme,
|
| 56 |
-
'modifier': self.modifier,
|
| 57 |
-
'message': self.message,
|
| 58 |
-
'person': self.person,
|
| 59 |
-
'postId': self.postId,
|
| 60 |
-
#'topReaction': self.topReaction,
|
| 61 |
-
'themeSimilarity': self.themeSimilarity
|
| 62 |
-
}
|
| 63 |
|
| 64 |
def ProcessReactions(reactions,id):
|
| 65 |
highestcount=0
|
|
@@ -72,24 +91,29 @@ def ProcessReactions(reactions,id):
|
|
| 72 |
if reaction['count'] > highestcount:
|
| 73 |
highestcount = reaction['count']
|
| 74 |
highestcount_reaction = stripped_reaction
|
| 75 |
-
print("returning highestcount_reaction:", highestcount_reaction)
|
| 76 |
return highestcount_reaction
|
| 77 |
|
| 78 |
def CleanMessage(message):
|
| 79 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 80 |
translator = str.maketrans('', '', custom_punctuation)
|
| 81 |
-
|
|
|
|
| 82 |
|
| 83 |
-
def
|
| 84 |
words = topic.split()
|
| 85 |
-
truncated_topic = " ".join(words[:
|
| 86 |
return truncated_topic.title()
|
| 87 |
|
| 88 |
def WriteThemes(themes):
|
| 89 |
themes_dict = [theme for theme in themes]
|
| 90 |
with open(OUTPUT_THEME_PATH, "w") as json_file:
|
| 91 |
json.dump(themes_dict, json_file, indent=4)
|
| 92 |
-
print(f"Themes saved to {OUTPUT_THEME_PATH}")
|
| 93 |
|
| 94 |
def ProcessDateTime(date_time):
|
| 95 |
date_time = dt(2023, 7, 11, 9, 21)
|
|
@@ -97,45 +121,73 @@ def ProcessDateTime(date_time):
|
|
| 97 |
json_data = f'{formatted_time}'
|
| 98 |
return json_data
|
| 99 |
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
| 103 |
-
completion = openai.ChatCompletion.create(
|
| 104 |
-
model="gpt-3.5-turbo",
|
| 105 |
messages=[
|
| 106 |
-
{"role": "system", "content":
|
| 107 |
-
{"role": "user", "content":
|
| 108 |
],
|
| 109 |
-
max_tokens=
|
| 110 |
-
n=
|
| 111 |
-
temperature=
|
| 112 |
-
stop=None
|
|
|
|
| 113 |
)
|
| 114 |
-
generated_topics = list(set(TruncateToTwoWords(topic) for choice in completion.choices for topic in choice.message.content.strip().split("\n")))
|
| 115 |
-
#if reaction is not None:
|
| 116 |
-
# generated_topics.append(reaction.title())
|
| 117 |
-
print("Generated topics:", generated_topics)
|
| 118 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
# Compute semantic similarity between generated topics and existing reference topics
|
| 120 |
similarity_scores = []
|
| 121 |
generated_topics_indices = []
|
| 122 |
counter=0
|
| 123 |
exact_match=False
|
| 124 |
most_similar_topic = "Unknown"
|
| 125 |
-
|
| 126 |
-
|
|
|
|
|
|
|
| 127 |
if generated_topic != "Unknown":
|
| 128 |
generated_topics_indices.append(counter)
|
| 129 |
generated_tokens = word_tokenize(generated_topic)
|
| 130 |
generated_tokens_str = " ".join(generated_tokens)
|
| 131 |
topic_similarities = []
|
| 132 |
-
for reference_topic in
|
| 133 |
-
print(" Reference topic:", reference_topic)
|
| 134 |
reference_tokens = word_tokenize(reference_topic)
|
| 135 |
reference_tokens_str = " ".join(reference_tokens)
|
| 136 |
similarity_score, exact_match = compute_similarity(generated_tokens_str, reference_tokens_str)
|
| 137 |
if exact_match:
|
| 138 |
-
print(' *Exact match found, reference topic:', reference_topic)
|
| 139 |
most_similar_topic = reference_topic
|
| 140 |
most_similar_score = 1.0
|
| 141 |
break
|
|
@@ -143,9 +195,9 @@ def ProcessMessage(datetime, message, replies, person, id):
|
|
| 143 |
if exact_match:
|
| 144 |
break
|
| 145 |
similarity_scores.append(topic_similarities)
|
|
|
|
|
|
|
| 146 |
counter+=1
|
| 147 |
-
|
| 148 |
-
print("Similarity scores:", similarity_scores)
|
| 149 |
if len(similarity_scores) > 0 and not exact_match:
|
| 150 |
most_similar_score=0
|
| 151 |
# Aggregate the similarity scores for each generated topic
|
|
@@ -154,21 +206,71 @@ def ProcessMessage(datetime, message, replies, person, id):
|
|
| 154 |
# Find the index of the topic with the highest aggregated score
|
| 155 |
most_similar_index = np.argmax(aggregated_scores)
|
| 156 |
most_similar_topic_index = generated_topics_indices[most_similar_index]
|
| 157 |
-
most_similar_topic =
|
| 158 |
most_similar_score=similarity_scores[most_similar_index]
|
| 159 |
print("Most similar topic:", most_similar_topic, "with score:", most_similar_score)
|
| 160 |
-
|
| 161 |
-
if most_similar_topic != "Unknown":
|
| 162 |
-
if
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 168 |
themes.append(theme_obj.to_dict())
|
| 169 |
-
|
|
|
|
|
|
|
| 170 |
return themes
|
| 171 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 172 |
def compute_similarity(tokens1, tokens2):
|
| 173 |
if set(word_tokenize(tokens1.lower())) == set(word_tokenize(tokens2.lower())):
|
| 174 |
return 1.0, True
|
|
@@ -192,22 +294,21 @@ def compute_similarity(tokens1, tokens2):
|
|
| 192 |
if valid_scores:
|
| 193 |
max_similarity = max(valid_scores)
|
| 194 |
total_similarity += max_similarity
|
| 195 |
-
num_comparisons += 1
|
| 196 |
if num_comparisons > 0:
|
| 197 |
return total_similarity / num_comparisons, False
|
| 198 |
else:
|
| 199 |
return 0, False
|
| 200 |
|
| 201 |
def FetchSlack():
|
| 202 |
-
return pd.read_json(
|
|
|
|
| 203 |
|
| 204 |
def ProcessSlack():
|
| 205 |
-
global df
|
| 206 |
-
print("output path:" +OUTPUT_THEME_PATH)
|
| 207 |
if not os.path.exists(OUTPUT_THEME_PATH):
|
| 208 |
-
print("ProcessSlack - path not exist in process slack")
|
| 209 |
# Read JSON data into DataFrame
|
| 210 |
-
df = pd.read_json(
|
| 211 |
# Keep selected columns and drop rows with missing values
|
| 212 |
df = df[["person", "datetime", "message","replies", "id"]]
|
| 213 |
# Filter down to top reaction, then create theme.
|
|
@@ -215,38 +316,24 @@ def ProcessSlack():
|
|
| 215 |
df["datetime"] = df.apply(lambda row: ProcessDateTime(row["datetime"]), axis=1)
|
| 216 |
df["theme"] = df.apply(lambda row: ProcessMessage(row["datetime"], row["message"], row["replies"], row["person"], row["id"]), axis=1)
|
| 217 |
WriteThemes(themes)
|
| 218 |
-
print("Reference topic list:")
|
| 219 |
-
for reference_topic in reference_topics:
|
| 220 |
-
print(reference_topic)
|
| 221 |
-
print("df at end of process slack")
|
| 222 |
-
print(df)
|
| 223 |
-
print("----------")
|
| 224 |
else:
|
| 225 |
-
print("ProcessSlack - path exists in process slack")
|
| 226 |
df = pd.read_json(OUTPUT_THEME_PATH)
|
| 227 |
return df[["person", "theme", "message"]]
|
| 228 |
|
| 229 |
def CreateEmbeddings():
|
| 230 |
global df
|
| 231 |
-
print("df: OUTPUT_THEME_EMBEDDINGS_PATH -"+OUTPUT_THEME_EMBEDDINGS_PATH)
|
| 232 |
-
print(df)
|
| 233 |
if not os.path.exists(OUTPUT_THEME_EMBEDDINGS_PATH):
|
| 234 |
-
print("CreateEmbeddings path does NOT exist")
|
| 235 |
ProcessSlack()
|
| 236 |
#restrict sample to 500 most recent posts and remove samples that are too long
|
| 237 |
top_n = SAMPLE_SIZE
|
| 238 |
df = df.sort_values("datetime").tail(top_n * 2)
|
| 239 |
df.drop("datetime", axis=1, inplace=True)
|
| 240 |
-
|
| 241 |
encoding = tiktoken.get_encoding(EMBEDDING_ENCODING)
|
| 242 |
# omit posts that are too long to embed
|
| 243 |
df["n_tokens"] = df.theme.apply(lambda x: len(encoding.encode(str(x))))
|
| 244 |
df = df[df.n_tokens <= MAX_TOKENS].tail(top_n)
|
| 245 |
-
|
| 246 |
-
df["embedding"] = df.theme.apply(lambda x: [str(val) for val in get_embedding(str(x), engine=EMBEDDING_MODEL)])
|
| 247 |
-
|
| 248 |
df.to_json(OUTPUT_THEME_EMBEDDINGS_PATH, orient="records", lines=False)
|
| 249 |
else:
|
| 250 |
-
print("CreateEmbeddings path does exist")
|
| 251 |
df = pd.read_json(OUTPUT_THEME_EMBEDDINGS_PATH)
|
| 252 |
return df[["person", "theme", "message", "embedding"]]
|
|
|
|
| 2 |
import numpy as np
|
| 3 |
import openai, os, tiktoken, json
|
| 4 |
from datetime import datetime as dt
|
| 5 |
+
import re
|
| 6 |
from openai.embeddings_utils import cosine_similarity, get_embedding
|
| 7 |
from sklearn.metrics import classification_report, PrecisionRecallDisplay
|
| 8 |
+
from sklearn.feature_extraction.text import TfidfVectorizer
|
| 9 |
+
from sklearn.metrics.pairwise import cosine_similarity as coso
|
| 10 |
from collections import Counter
|
| 11 |
from nltk.corpus import wordnet
|
| 12 |
from nltk.tokenize import word_tokenize
|
| 13 |
+
from utilities.api_keys import APIKeys
|
| 14 |
+
from utilities.unique_queue import UniqueQueue
|
| 15 |
+
from slack_processing.theme import Theme
|
| 16 |
|
| 17 |
+
openai.api_key = APIKeys().get_key('OPENAI_API_KEY')
|
| 18 |
|
| 19 |
# Set embedding model parameters
|
| 20 |
pd.set_option('display.max_rows', None)
|
| 21 |
pd.set_option('display.max_columns', None)
|
| 22 |
|
| 23 |
SAMPLE_SIZE = 500
|
| 24 |
+
MAX_TOKENS = 100
|
|
|
|
| 25 |
EMBEDDING_MODEL = "text-embedding-ada-002"
|
| 26 |
EMBEDDING_ENCODING = "cl100k_base"
|
| 27 |
|
| 28 |
+
INPUT_PATH = "slack_processing/data/slack.json"
|
| 29 |
OUTPUT_THEME_PATH = "slack_processing/data/themes.json"
|
| 30 |
OUTPUT_THEME_EMBEDDINGS_PATH = "slack_processing/data/slack_with_theme_embeddings.json"
|
| 31 |
+
TOPIC_TEXT_PATH="slack_processing/data/topics.txt"
|
| 32 |
+
TOPIC_TEXT_OUTPUT_PATH="slack_processing/data/topics_with_synonyms.txt"
|
| 33 |
+
|
| 34 |
+
TOPIC_TOKENS=50
|
| 35 |
+
TOPIC_MODEL ="gpt-3.5-turbo"
|
| 36 |
+
SYSTEM_MESSAGE="You are categorizing slack messages into topics that will be used to create dynamic games."
|
| 37 |
+
|
| 38 |
+
NUM_RESULTS=5
|
| 39 |
+
TEMP=.15
|
| 40 |
+
TOP_P=.15
|
| 41 |
+
|
| 42 |
+
NUM_RESULTS1=5
|
| 43 |
+
TEMP1=.35
|
| 44 |
+
TOP_P1=.35
|
| 45 |
+
|
| 46 |
+
TOPIC_TOKENS2=50
|
| 47 |
+
NUM_RESULTS2=5
|
| 48 |
+
TEMP2=.65
|
| 49 |
+
TOP_P2=.65
|
| 50 |
+
|
| 51 |
+
SIMILARITY_THRESHOLD = 0.6
|
| 52 |
|
| 53 |
df=pd.DataFrame()
|
| 54 |
themes = []
|
| 55 |
+
topics_with_synonyms = []
|
| 56 |
+
game_topics = UniqueQueue()
|
| 57 |
+
track_unknowns=[]
|
| 58 |
+
|
| 59 |
+
with open(TOPIC_TEXT_PATH, 'r') as file:
|
| 60 |
+
for line in file:
|
| 61 |
+
main_topic_and_synonyms = line.strip().lower().split(',')
|
| 62 |
+
main_topic = main_topic_and_synonyms[0].strip()
|
| 63 |
+
synonyms = [synonym.strip() for synonym in main_topic_and_synonyms[1:]]
|
| 64 |
+
topics_with_synonyms.append((main_topic, synonyms))
|
| 65 |
+
|
| 66 |
+
for main_topic, synonyms in topics_with_synonyms:
|
| 67 |
+
game_topics.enqueue(main_topic, synonyms)
|
| 68 |
+
|
| 69 |
+
#print("***topics****")
|
| 70 |
+
for topic in game_topics._queue.queue:
|
| 71 |
+
print(topic) # Output: "slalomversary"
|
| 72 |
+
|
| 73 |
+
#print ("---topics with synonyms helper list---")
|
| 74 |
+
'''for canonical, synonyms in game_topics.review():
|
| 75 |
+
print("Canonical term:", canonical)
|
| 76 |
+
print("Canonical with synonyms:", canonical + ", " + ", ".join(synonyms))
|
| 77 |
+
print() # Optional: Add a blank line '''
|
| 78 |
+
|
| 79 |
+
#print("+++ synonyms for canonical")
|
| 80 |
+
#print(game_topics.synonyms_for_canonical("Lunch and Learn")) # Output: ['L&L', 'lunch-and-learn', 'Lunch & Learn']
|
| 81 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
|
| 83 |
def ProcessReactions(reactions,id):
|
| 84 |
highestcount=0
|
|
|
|
| 91 |
if reaction['count'] > highestcount:
|
| 92 |
highestcount = reaction['count']
|
| 93 |
highestcount_reaction = stripped_reaction
|
| 94 |
+
#print("returning highestcount_reaction:", highestcount_reaction)
|
| 95 |
return highestcount_reaction
|
| 96 |
|
| 97 |
def CleanMessage(message):
|
| 98 |
+
# Remove emojis represented as :something:
|
| 99 |
+
cleaned_message = re.sub(r':(\w+):', r'\1', message)
|
| 100 |
+
# Remove URLs
|
| 101 |
+
cleaned_message = re.sub(r'http\S+|www.\S+', '', cleaned_message)
|
| 102 |
+
# Remove specific punctuation
|
| 103 |
+
custom_punctuation = ':,.!?'
|
| 104 |
translator = str.maketrans('', '', custom_punctuation)
|
| 105 |
+
cleaned_message = cleaned_message.translate(translator)
|
| 106 |
+
return cleaned_message
|
| 107 |
|
| 108 |
+
def TruncateWords(topic,count):
|
| 109 |
words = topic.split()
|
| 110 |
+
truncated_topic = " ".join(words[:count])
|
| 111 |
return truncated_topic.title()
|
| 112 |
|
| 113 |
def WriteThemes(themes):
|
| 114 |
themes_dict = [theme for theme in themes]
|
| 115 |
with open(OUTPUT_THEME_PATH, "w") as json_file:
|
| 116 |
json.dump(themes_dict, json_file, indent=4)
|
|
|
|
| 117 |
|
| 118 |
def ProcessDateTime(date_time):
|
| 119 |
date_time = dt(2023, 7, 11, 9, 21)
|
|
|
|
| 121 |
json_data = f'{formatted_time}'
|
| 122 |
return json_data
|
| 123 |
|
| 124 |
+
def CompletionEngine(sys_message, user_message, num_tokens, num_results, temperature, topic_model, top_p):
|
| 125 |
+
return openai.ChatCompletion.create(
|
| 126 |
+
model=topic_model,
|
|
|
|
|
|
|
| 127 |
messages=[
|
| 128 |
+
{"role": "system", "content": sys_message},
|
| 129 |
+
{"role": "user", "content": user_message},
|
| 130 |
],
|
| 131 |
+
max_tokens=num_tokens,
|
| 132 |
+
n=num_results,
|
| 133 |
+
temperature=temperature,
|
| 134 |
+
stop=None,
|
| 135 |
+
top_p=top_p
|
| 136 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 137 |
|
| 138 |
+
def ConcatenateMatchAndCanonicals(message):
|
| 139 |
+
global game_topics
|
| 140 |
+
game_topics_str = ', '.join(game_topics.all_words())
|
| 141 |
+
print("*** game_topics_str: ", game_topics_str)
|
| 142 |
+
prompt_message = f"Find a summary for this message: '{message}' in this set of topics: {{{game_topics_str}}}, If you're not able to find a match, reply 'Unknown'"
|
| 143 |
+
print("*** prompt_message for first round is: ", prompt_message)
|
| 144 |
+
return prompt_message
|
| 145 |
+
|
| 146 |
+
def ConcatenateMessageAndCanonicals(message):
|
| 147 |
+
prompt_message = f"Summarize this message: '{message}' in 1-2 words. We're looking for a representative category to cluster messages. These topics will be used to create dynamic games. Identify subject, activity, or game-worthy topic, If you're not able to summarize, reply 'Unknown'"
|
| 148 |
+
print("*** prompt_message for second round is: ", prompt_message)
|
| 149 |
+
return prompt_message
|
| 150 |
+
|
| 151 |
+
def ConcatenateMessageAndTopics(message):
|
| 152 |
+
prompt_message = f"Be creative. We need 1-2 word summarization for this message: '{message}'. If you aren't able to summarize, pick the direct object of the message. As an absolute last resort, reply 'Unknown'"
|
| 153 |
+
print("*** prompt_message for third round is: ", prompt_message)
|
| 154 |
+
return prompt_message
|
| 155 |
+
|
| 156 |
+
# Update the process_message function
|
| 157 |
+
def ProcessMessage(datetime, message, replies, person, id):
|
| 158 |
+
global game_topics
|
| 159 |
+
#round 1, look for exact match
|
| 160 |
+
completion=CompletionEngine(SYSTEM_MESSAGE,ConcatenateMatchAndCanonicals(CleanMessage(message)),TOPIC_TOKENS, NUM_RESULTS, TEMP, TOPIC_MODEL,TOP_P)
|
| 161 |
+
options = list(set(TruncateWords(topic.strip(),3) for choice in completion.choices for concatenated_topics in choice.message.content.strip().split("\n") for topic in concatenated_topics.split(',')))
|
| 162 |
+
if all(choice == "Unknown" for choice in options):
|
| 163 |
+
#round 2, look for 1-2 summary, like topics
|
| 164 |
+
completion=CompletionEngine(SYSTEM_MESSAGE,ConcatenateMessageAndCanonicals(CleanMessage(message)),TOPIC_TOKENS, NUM_RESULTS1, TEMP1, TOPIC_MODEL,TOP_P1)
|
| 165 |
+
options = list(set(TruncateWords(topic.strip(),3) for choice in completion.choices for concatenated_topics in choice.message.content.strip().split("\n") for topic in concatenated_topics.split(',')))
|
| 166 |
+
if all(choice == "Unknown" for choice in options):
|
| 167 |
+
#round 3, look for 1-2 summary, wild card
|
| 168 |
+
completion=CompletionEngine(SYSTEM_MESSAGE,ConcatenateMessageAndTopics(CleanMessage(message)),TOPIC_TOKENS2, NUM_RESULTS2, TEMP2, TOPIC_MODEL,TOP_P2)
|
| 169 |
+
options = list(set(TruncateWords(topic.strip(),3) for choice in completion.choices for concatenated_topics in choice.message.content.strip().split("\n") for topic in concatenated_topics.split(',')))
|
| 170 |
+
print("---options: ", options)
|
| 171 |
# Compute semantic similarity between generated topics and existing reference topics
|
| 172 |
similarity_scores = []
|
| 173 |
generated_topics_indices = []
|
| 174 |
counter=0
|
| 175 |
exact_match=False
|
| 176 |
most_similar_topic = "Unknown"
|
| 177 |
+
|
| 178 |
+
topic_length = len(options)
|
| 179 |
+
unidentified_topic_count=0
|
| 180 |
+
for generated_topic in options:
|
| 181 |
if generated_topic != "Unknown":
|
| 182 |
generated_topics_indices.append(counter)
|
| 183 |
generated_tokens = word_tokenize(generated_topic)
|
| 184 |
generated_tokens_str = " ".join(generated_tokens)
|
| 185 |
topic_similarities = []
|
| 186 |
+
for reference_topic in game_topics.all_canonicals():
|
|
|
|
| 187 |
reference_tokens = word_tokenize(reference_topic)
|
| 188 |
reference_tokens_str = " ".join(reference_tokens)
|
| 189 |
similarity_score, exact_match = compute_similarity(generated_tokens_str, reference_tokens_str)
|
| 190 |
if exact_match:
|
|
|
|
| 191 |
most_similar_topic = reference_topic
|
| 192 |
most_similar_score = 1.0
|
| 193 |
break
|
|
|
|
| 195 |
if exact_match:
|
| 196 |
break
|
| 197 |
similarity_scores.append(topic_similarities)
|
| 198 |
+
else:
|
| 199 |
+
unidentified_topic_count+=1
|
| 200 |
counter+=1
|
|
|
|
|
|
|
| 201 |
if len(similarity_scores) > 0 and not exact_match:
|
| 202 |
most_similar_score=0
|
| 203 |
# Aggregate the similarity scores for each generated topic
|
|
|
|
| 206 |
# Find the index of the topic with the highest aggregated score
|
| 207 |
most_similar_index = np.argmax(aggregated_scores)
|
| 208 |
most_similar_topic_index = generated_topics_indices[most_similar_index]
|
| 209 |
+
most_similar_topic = options[most_similar_topic_index].lower()
|
| 210 |
most_similar_score=similarity_scores[most_similar_index]
|
| 211 |
print("Most similar topic:", most_similar_topic, "with score:", most_similar_score)
|
| 212 |
+
|
| 213 |
+
if most_similar_topic != "Unknown":
|
| 214 |
+
#check if it's in all topics
|
| 215 |
+
if most_similar_topic in game_topics.all_words():
|
| 216 |
+
#if it's in all words, and a synonym, set topic to canonical, otherwise set to canonical
|
| 217 |
+
if most_similar_topic in game_topics.all_synonyms():
|
| 218 |
+
most_similar_topic = game_topics.canonical_for_synonym(most_similar_topic)
|
| 219 |
+
most_similar_score=1.0
|
| 220 |
+
else:
|
| 221 |
+
most_similar_topic = game_topics.get_canonical(most_similar_topic)
|
| 222 |
+
else:
|
| 223 |
+
#not in all words, look for similar topics, see if it's like something in list
|
| 224 |
+
highest_similarity = 0
|
| 225 |
+
best_match = None
|
| 226 |
+
for known_word in game_topics.all_words():
|
| 227 |
+
#compute similarity against all topics
|
| 228 |
+
similarity_score = compare_topic_to_game_topic(most_similar_topic, known_word)
|
| 229 |
+
print("\tsimilarity_score: "+ str(similarity_score)+ " for known_word: "+ known_word)
|
| 230 |
+
if similarity_score > highest_similarity:
|
| 231 |
+
highest_similarity = similarity_score
|
| 232 |
+
best_match = known_word.lower()
|
| 233 |
+
print("\t>>>best_match found :", best_match, " with highest_similarity:", str(highest_similarity))
|
| 234 |
+
|
| 235 |
+
print("if we found similar topic, use it")
|
| 236 |
+
if highest_similarity > SIMILARITY_THRESHOLD:
|
| 237 |
+
if(best_match in game_topics.all_synonyms()):
|
| 238 |
+
most_similar_topic = game_topics.canonical_for_synonym(best_match)
|
| 239 |
+
else:
|
| 240 |
+
most_similar_topic = game_topics.get_canonical(best_match)
|
| 241 |
+
#update most similar socre
|
| 242 |
+
most_similar_score=highest_similarity
|
| 243 |
+
else:
|
| 244 |
+
#add the new topic
|
| 245 |
+
game_topics.enqueue(most_similar_topic)
|
| 246 |
+
theme_obj = Theme(datetime=datetime, theme=most_similar_topic, modifier=0, person=person, postId=id, message=message, similarity=str(most_similar_score))
|
| 247 |
themes.append(theme_obj.to_dict())
|
| 248 |
+
|
| 249 |
+
print(f"{id} From message:'{message}' to theme: {most_similar_topic}")
|
| 250 |
+
#print(f"ThemeObj - id: {id}, theme:{theme_obj.theme}, modifier:{theme_obj.modifier}, person:{theme_obj.person}, topReaction:{theme_obj.topReaction}, message:{theme_obj.message}, similarity:{theme_obj.themeSimilarity}")
|
| 251 |
return themes
|
| 252 |
|
| 253 |
+
def compare_topic_to_game_topic(topic, game_topic):
|
| 254 |
+
# Exact Match
|
| 255 |
+
if topic == game_topic:
|
| 256 |
+
return 1.0
|
| 257 |
+
|
| 258 |
+
# Token Overlap
|
| 259 |
+
tokens_topic = set(word_tokenize(topic.lower()))
|
| 260 |
+
tokens_game_topic = set(word_tokenize(game_topic.lower()))
|
| 261 |
+
overlap_score = len(tokens_topic & tokens_game_topic) / len(tokens_topic | tokens_game_topic)
|
| 262 |
+
|
| 263 |
+
# Semantic Similarity using OpenAI's cosine_similarity
|
| 264 |
+
vectorizer = TfidfVectorizer()
|
| 265 |
+
tfidf_matrix = vectorizer.fit_transform([topic, game_topic])
|
| 266 |
+
semantic_similarity = coso(tfidf_matrix[0], tfidf_matrix[1])[0, 0] # Get the scalar value
|
| 267 |
+
|
| 268 |
+
# Combine Scores
|
| 269 |
+
final_score = 0.2 * overlap_score + 0.8 * semantic_similarity
|
| 270 |
+
print("Tokens topic:", tokens_topic, "tokens game topic:", tokens_game_topic, " overlap score:", overlap_score," Semantic similarity:", str(semantic_similarity), " final score: " + str(final_score))
|
| 271 |
+
return final_score
|
| 272 |
+
|
| 273 |
+
|
| 274 |
def compute_similarity(tokens1, tokens2):
|
| 275 |
if set(word_tokenize(tokens1.lower())) == set(word_tokenize(tokens2.lower())):
|
| 276 |
return 1.0, True
|
|
|
|
| 294 |
if valid_scores:
|
| 295 |
max_similarity = max(valid_scores)
|
| 296 |
total_similarity += max_similarity
|
| 297 |
+
num_comparisons += 1
|
| 298 |
if num_comparisons > 0:
|
| 299 |
return total_similarity / num_comparisons, False
|
| 300 |
else:
|
| 301 |
return 0, False
|
| 302 |
|
| 303 |
def FetchSlack():
|
| 304 |
+
return pd.read_json(INPUT_PATH, orient='records')
|
| 305 |
+
|
| 306 |
|
| 307 |
def ProcessSlack():
|
| 308 |
+
global df
|
|
|
|
| 309 |
if not os.path.exists(OUTPUT_THEME_PATH):
|
|
|
|
| 310 |
# Read JSON data into DataFrame
|
| 311 |
+
df = pd.read_json(INPUT_PATH)
|
| 312 |
# Keep selected columns and drop rows with missing values
|
| 313 |
df = df[["person", "datetime", "message","replies", "id"]]
|
| 314 |
# Filter down to top reaction, then create theme.
|
|
|
|
| 316 |
df["datetime"] = df.apply(lambda row: ProcessDateTime(row["datetime"]), axis=1)
|
| 317 |
df["theme"] = df.apply(lambda row: ProcessMessage(row["datetime"], row["message"], row["replies"], row["person"], row["id"]), axis=1)
|
| 318 |
WriteThemes(themes)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 319 |
else:
|
|
|
|
| 320 |
df = pd.read_json(OUTPUT_THEME_PATH)
|
| 321 |
return df[["person", "theme", "message"]]
|
| 322 |
|
| 323 |
def CreateEmbeddings():
|
| 324 |
global df
|
|
|
|
|
|
|
| 325 |
if not os.path.exists(OUTPUT_THEME_EMBEDDINGS_PATH):
|
|
|
|
| 326 |
ProcessSlack()
|
| 327 |
#restrict sample to 500 most recent posts and remove samples that are too long
|
| 328 |
top_n = SAMPLE_SIZE
|
| 329 |
df = df.sort_values("datetime").tail(top_n * 2)
|
| 330 |
df.drop("datetime", axis=1, inplace=True)
|
|
|
|
| 331 |
encoding = tiktoken.get_encoding(EMBEDDING_ENCODING)
|
| 332 |
# omit posts that are too long to embed
|
| 333 |
df["n_tokens"] = df.theme.apply(lambda x: len(encoding.encode(str(x))))
|
| 334 |
df = df[df.n_tokens <= MAX_TOKENS].tail(top_n)
|
| 335 |
+
df["embedding"] = df.theme.apply(lambda x: [str(val) for val in get_embedding(str(x), engine=EMBEDDING_MODEL)])
|
|
|
|
|
|
|
| 336 |
df.to_json(OUTPUT_THEME_EMBEDDINGS_PATH, orient="records", lines=False)
|
| 337 |
else:
|
|
|
|
| 338 |
df = pd.read_json(OUTPUT_THEME_EMBEDDINGS_PATH)
|
| 339 |
return df[["person", "theme", "message", "embedding"]]
|
slack_processing/theme.py
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
class Theme:
|
| 2 |
+
def __init__(self, datetime, theme, modifier, person, postId, similarity, message):
|
| 3 |
+
self.datetime = datetime
|
| 4 |
+
self.theme = theme
|
| 5 |
+
self.modifier = modifier
|
| 6 |
+
self.message=message
|
| 7 |
+
self.person=person
|
| 8 |
+
self.postId=postId
|
| 9 |
+
#self.topReaction=topReaction
|
| 10 |
+
self.themeSimilarity=similarity
|
| 11 |
+
|
| 12 |
+
def to_dict(self):
|
| 13 |
+
return {
|
| 14 |
+
'datetime':self.datetime,
|
| 15 |
+
'theme': self.theme,
|
| 16 |
+
'modifier': self.modifier,
|
| 17 |
+
'message': self.message,
|
| 18 |
+
'person': self.person,
|
| 19 |
+
'postId': self.postId,
|
| 20 |
+
#'topReaction': self.topReaction,
|
| 21 |
+
'themeSimilarity': self.themeSimilarity
|
| 22 |
+
}
|
utilities/__pycache__/unique_queue.cpython-311.pyc
ADDED
|
Binary file (6.54 kB). View file
|
|
|
utilities/unique_queue.py
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from queue import Queue
|
| 2 |
+
|
| 3 |
+
class UniqueQueue:
|
| 4 |
+
def __init__(self, topics_with_synonyms=None):
|
| 5 |
+
self._queue = Queue()
|
| 6 |
+
self._seen = set()
|
| 7 |
+
self._canonical_mapping = {}
|
| 8 |
+
if topics_with_synonyms:
|
| 9 |
+
for main_topic, synonyms in topics_with_synonyms:
|
| 10 |
+
self.enqueue(main_topic, synonyms)
|
| 11 |
+
|
| 12 |
+
def _get_canonical(self, item):
|
| 13 |
+
return self._canonical_mapping.get(item.lower(), item.lower())
|
| 14 |
+
|
| 15 |
+
def enqueue(self, item, synonyms=[]):
|
| 16 |
+
print("Original item:", item)
|
| 17 |
+
canonical_item = self._get_canonical(item.lower())
|
| 18 |
+
print("Canonical item:", canonical_item)
|
| 19 |
+
if canonical_item not in self._seen:
|
| 20 |
+
self._queue.put((canonical_item, synonyms))
|
| 21 |
+
self._seen.add(canonical_item)
|
| 22 |
+
self._canonical_mapping[item.lower()] = canonical_item
|
| 23 |
+
for synonym in synonyms:
|
| 24 |
+
self._seen.add(synonym.lower()) # Added this line
|
| 25 |
+
self._canonical_mapping[synonym.lower()] = canonical_item
|
| 26 |
+
|
| 27 |
+
def get_canonical(self, word_or_phrase):
|
| 28 |
+
# Check if the word_or_phrase is a synonym
|
| 29 |
+
for canonical in self.all_canonicals():
|
| 30 |
+
if word_or_phrase in self.synonyms_for_canonical(canonical):
|
| 31 |
+
return self.canonical_for_synonym(word_or_phrase)
|
| 32 |
+
|
| 33 |
+
# Check if the word_or_phrase is a canonical term
|
| 34 |
+
if word_or_phrase in self.all_canonicals():
|
| 35 |
+
return word_or_phrase
|
| 36 |
+
|
| 37 |
+
# If not found, return None or raise an exception
|
| 38 |
+
return None
|
| 39 |
+
|
| 40 |
+
def canonical_with_synonyms(self, canonical, synonyms):
|
| 41 |
+
return canonical + ", " + ", ".join(synonyms)
|
| 42 |
+
|
| 43 |
+
def synonyms_for_canonical(self, canonical):
|
| 44 |
+
canonical_term = self._get_canonical(canonical.lower())
|
| 45 |
+
return [key for key, value in self._canonical_mapping.items() if value == canonical_term and key != canonical_term]
|
| 46 |
+
|
| 47 |
+
def dequeue(self):
|
| 48 |
+
return self._queue.get()
|
| 49 |
+
|
| 50 |
+
def canonical_for_synonym(self, synonym):
|
| 51 |
+
return self._canonical_mapping.get(synonym.lower())
|
| 52 |
+
|
| 53 |
+
def all_words(self):
|
| 54 |
+
unique_words = set(self._canonical_mapping.keys())
|
| 55 |
+
for canonical_term in self._canonical_mapping.values():
|
| 56 |
+
unique_words.add(canonical_term)
|
| 57 |
+
return list(unique_words)
|
| 58 |
+
|
| 59 |
+
def all_canonicals(self):
|
| 60 |
+
return list(set(self._canonical_mapping.values()))
|
| 61 |
+
|
| 62 |
+
def all_synonyms(self):
|
| 63 |
+
return [key for key, value in self._canonical_mapping.items() if key != value]
|
| 64 |
+
|
| 65 |
+
def is_empty(self):
|
| 66 |
+
return self._queue.empty()
|
| 67 |
+
|
| 68 |
+
def review(self):
|
| 69 |
+
return list(self._queue.queue)
|
| 70 |
+
|
| 71 |
+
def write_topics_to_file(unique_queue, file_path):
|
| 72 |
+
with open(file_path, 'w') as file:
|
| 73 |
+
for canonical, synonyms in unique_queue.review():
|
| 74 |
+
line = canonical + ', ' + ', '.join(synonyms)
|
| 75 |
+
file.write(line + '\n')
|