Spaces:
Sleeping
Sleeping
Kim Adams commited on
Commit ·
a7e7b92
1
Parent(s): ddd0a9b
retooling the game mapper
Browse files- app.py +0 -1
- create_games/__pycache__/create_games_slack.cpython-311.pyc +0 -0
- create_games/create_games_slack.py +57 -164
- create_games/data/game_ideas.json +3 -4
- home_view/__pycache__/ui_home.cpython-311.pyc +0 -0
- home_view/ui_home.py +22 -8
- slack_processing/__pycache__/slack_data_prep.cpython-311.pyc +0 -0
- slack_processing/data/generated_game_topics.txt +72 -0
- slack_processing/data/slack_with_theme_embeddings.json +0 -0
- slack_processing/data/themes.json +97 -79
- slack_processing/data/topics_with_synonyms.txt +1 -0
- slack_processing/data/unknown_themes.json +0 -18
- slack_processing/slack_data_prep.py +89 -83
app.py
CHANGED
|
@@ -7,6 +7,5 @@ openai.api_key = api_keys.APIKeys().get_key('OPENAI_API_KEY')
|
|
| 7 |
eleven_api_key = api_keys.APIKeys().get_key('ELEVEN_LABS_API_KEY')
|
| 8 |
voice_id = api_keys.APIKeys().get_key('VOICE_ID')
|
| 9 |
|
| 10 |
-
|
| 11 |
combo=home.combo
|
| 12 |
combo.launch()
|
|
|
|
| 7 |
eleven_api_key = api_keys.APIKeys().get_key('ELEVEN_LABS_API_KEY')
|
| 8 |
voice_id = api_keys.APIKeys().get_key('VOICE_ID')
|
| 9 |
|
|
|
|
| 10 |
combo=home.combo
|
| 11 |
combo.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
|
@@ -1,13 +1,6 @@
|
|
| 1 |
import pandas as pd
|
| 2 |
-
import
|
| 3 |
-
import openai, os, tiktoken, json
|
| 4 |
-
import importlib.util
|
| 5 |
-
from openai.embeddings_utils import cosine_similarity, get_embedding
|
| 6 |
-
from sklearn.metrics import classification_report, PrecisionRecallDisplay
|
| 7 |
from collections import Counter
|
| 8 |
-
from nltk.corpus import wordnet
|
| 9 |
-
from nltk.tokenize import word_tokenize
|
| 10 |
-
import random
|
| 11 |
|
| 12 |
INPUT_DATAPATH = "slack_processing/data/themes.json"
|
| 13 |
OUTPUT_GAME_IDEAS_DATAPATH="create_games/data/game_ideas.json"
|
|
@@ -20,215 +13,115 @@ def ReadThemesFromFile():
|
|
| 20 |
global themes
|
| 21 |
with open(INPUT_DATAPATH, "r") as json_file:
|
| 22 |
themes = json.load(json_file)
|
| 23 |
-
print("done reading")
|
| 24 |
|
| 25 |
def PopulateThemesByPerson():
|
| 26 |
global themes, themes_by_person
|
|
|
|
| 27 |
themes_by_person = {}
|
| 28 |
for theme in themes:
|
| 29 |
person = theme['person']
|
| 30 |
postId = theme['postId']
|
| 31 |
theme_info = (theme['theme'], postId)
|
| 32 |
themes_by_person.setdefault(person, set()).add(theme_info)
|
| 33 |
-
|
| 34 |
-
def PrintThemesByPerson():
|
| 35 |
-
print("PrintThemesByPerson")
|
| 36 |
-
global themes_by_person
|
| 37 |
-
for person, person_themes in themes_by_person.items():
|
| 38 |
-
print(f"Themes associated with {person}:")
|
| 39 |
-
print("Person themes:", person_themes)
|
| 40 |
-
for theme in person_themes:
|
| 41 |
-
print(f"Theme: {theme}")
|
| 42 |
-
|
| 43 |
-
def CreateThemeToPersonMapping():
|
| 44 |
-
global people_by_theme, themes_by_person
|
| 45 |
-
themes_by_person = {}
|
| 46 |
-
print("Createthemetopersonmapping")
|
| 47 |
-
# Iterate through the dictionary to create themes with unique people
|
| 48 |
-
for person, person_themes in people_by_theme.items():
|
| 49 |
-
for theme_info in person_themes:
|
| 50 |
-
theme, _ = theme_info
|
| 51 |
-
if theme not in themes_by_person:
|
| 52 |
-
themes_by_person[theme] = set()
|
| 53 |
-
themes_by_person[theme].add(person)
|
| 54 |
-
|
| 55 |
-
def CreateRandomGroup(group_size):
|
| 56 |
-
global themes
|
| 57 |
-
# Extract all unique people from the theme list
|
| 58 |
-
people = list(set(theme['person'] for theme in themes))
|
| 59 |
-
# Check if the group size is larger than the available people
|
| 60 |
-
if group_size > len(people):
|
| 61 |
-
group_size=len(people)
|
| 62 |
-
# Randomly select a group of people
|
| 63 |
-
random_group = random.sample(people, group_size)
|
| 64 |
-
return random_group
|
| 65 |
|
| 66 |
def PopulatePeopleByThemes():
|
| 67 |
global themes, people_by_theme
|
|
|
|
| 68 |
people_by_theme = {}
|
| 69 |
for theme in themes:
|
| 70 |
person = theme['person']
|
| 71 |
theme_name = theme['theme']
|
| 72 |
people_by_theme.setdefault(theme_name, set()).add(person)
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
global people_by_theme
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
def FindOverlappingTopics(people):
|
| 97 |
-
global themes_by_person
|
| 98 |
-
if not people:
|
| 99 |
-
print("No people provided.")
|
| 100 |
-
return None
|
| 101 |
-
|
| 102 |
-
# Get the themes for the first person in the people set
|
| 103 |
-
first_person_themes = themes_by_person.get(next(iter(people)), set())
|
| 104 |
-
|
| 105 |
-
# Initialize common_topics with the themes of the first person
|
| 106 |
-
common_topics = set(first_person_themes)
|
| 107 |
-
|
| 108 |
-
# Iterate through the remaining people, updating common_topics with the intersection of their themes
|
| 109 |
-
for person in people:
|
| 110 |
-
person_themes = themes_by_person.get(person, set())
|
| 111 |
-
common_topics.intersection_update(person_themes)
|
| 112 |
-
|
| 113 |
-
if not common_topics:
|
| 114 |
-
print("There are no overlapping themes among the given group.")
|
| 115 |
return None
|
| 116 |
-
|
| 117 |
-
return common_topics
|
| 118 |
-
|
| 119 |
-
def GetEnjoymentIndex(choice):
|
| 120 |
-
# Extract the enjoyment index from the choice
|
| 121 |
-
print("choice", choice)
|
| 122 |
-
try:
|
| 123 |
-
choice_data = choice.get("metadata", {}).get("completion", {})
|
| 124 |
-
enjoyment_index = choice_data.get("EnjoymentIndex")
|
| 125 |
-
return float(enjoyment_index) if enjoyment_index else 0.0
|
| 126 |
-
except (ValueError, TypeError):
|
| 127 |
-
print("Failed to extract enjoyment index.")
|
| 128 |
-
return 0.0
|
| 129 |
|
| 130 |
-
def GenerateGameIdeas(
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
# Filter themes with more than two people sharing it
|
| 134 |
-
eligible_themes = {theme: people for theme, people in themes_by_theme.items() if len(people) > 1}
|
| 135 |
-
print('\n****eligible themes')
|
| 136 |
-
for theme,people in eligible_themes.items():
|
| 137 |
-
print(f"Theme: {theme}")
|
| 138 |
-
print("People:", people)
|
| 139 |
-
|
| 140 |
-
# Check if there are eligible themes
|
| 141 |
-
if not eligible_themes:
|
| 142 |
-
print("No theme found with more than two people sharing it.")
|
| 143 |
-
return None
|
| 144 |
-
|
| 145 |
-
# Select a random eligible theme
|
| 146 |
-
chosen_theme = random.choice(list(eligible_themes.keys()))
|
| 147 |
-
print ("chosen_theme",chosen_theme)
|
| 148 |
-
# Prepare the prompt for GenAI
|
| 149 |
-
prompt = f"""Provide your top idea for a text-based game a group of based on their theme '{chosen_theme}'. For each idea, games should be fully playable via text using chat interface. Provide a rationale of why you chose that game, an enjoyment index. Keep your answers short. Answer in JSON, like this: {{"Name":"Name of game","Description":"Game description & rules","EnjoymentIndex":"Your guess as a probability from 0.0 to 1.0","Rationale":"Reasoning for game selection"}}""" # Make the GenAI request
|
| 150 |
response = openai.Completion.create(
|
| 151 |
engine="text-davinci-003",
|
| 152 |
prompt=prompt,
|
| 153 |
max_tokens=800,
|
| 154 |
n=1,
|
| 155 |
-
temperature=0.
|
| 156 |
-
top_p=.8
|
| 157 |
-
)
|
| 158 |
# Process the response and extract the game ideas
|
| 159 |
game_ideas = []
|
| 160 |
-
for choice in response["choices"]:
|
| 161 |
-
print("choice")
|
| 162 |
-
print (choice)
|
| 163 |
choiceText = choice["text"]
|
| 164 |
game_data = choiceText.strip('\n')
|
| 165 |
-
print("--after strip
|
| 166 |
try:
|
| 167 |
game_data_dict = json.loads(game_data)
|
| 168 |
game_ideas.append(game_data_dict)
|
| 169 |
print("----game_data", game_data_dict)
|
| 170 |
except json.JSONDecodeError:
|
| 171 |
-
print("Error decoding JSON.
|
| 172 |
continue
|
| 173 |
|
| 174 |
-
|
| 175 |
-
sorted_game_ideas = sorted(game_ideas, key=lambda x: x.get("EnjoymentIndex", 0.0), reverse=True)
|
| 176 |
-
|
| 177 |
-
if sorted_game_ideas:
|
| 178 |
with open(OUTPUT_GAME_IDEAS_DATAPATH, 'w') as file:
|
| 179 |
-
json.dump(
|
| 180 |
-
return
|
| 181 |
else:
|
| 182 |
print("No game idea found.")
|
| 183 |
return None
|
| 184 |
|
| 185 |
-
|
| 186 |
def GetPlayers():
|
| 187 |
-
players = []
|
| 188 |
-
index = 0
|
| 189 |
-
for theme in themes:
|
| 190 |
person = theme['person']
|
| 191 |
-
if person not in [t[0] for t in players]:
|
| 192 |
-
players.append((person, index))
|
| 193 |
-
index += 1
|
| 194 |
-
print("players")
|
| 195 |
-
print(players)
|
| 196 |
return players
|
| 197 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 198 |
def LoadThemes():
|
| 199 |
-
global themes
|
| 200 |
ReadThemesFromFile()
|
| 201 |
PopulatePeopleByThemes()
|
| 202 |
-
CreatePersonToThemeMapping()
|
| 203 |
-
PrintPeopleByThemes()
|
| 204 |
-
|
| 205 |
PopulateThemesByPerson()
|
| 206 |
-
CreateThemeToPersonMapping()
|
| 207 |
-
PrintThemesByPerson()
|
| 208 |
|
| 209 |
def CreateGameForGroup(group, retry=False):
|
| 210 |
-
global
|
| 211 |
-
print("\n\ngroup, ", group)
|
| 212 |
if not retry:
|
| 213 |
-
|
| 214 |
else:
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
print("****")
|
| 218 |
-
print("people by theme: ", people_by_theme)
|
| 219 |
-
print("****")
|
| 220 |
-
print("themes by person: ", themes_by_person)
|
| 221 |
-
game_ideas = GenerateGameIdeas(themes_by_person)
|
| 222 |
-
print("game ideas: ")
|
| 223 |
-
print(game_ideas)
|
| 224 |
if game_ideas is None:
|
| 225 |
-
|
| 226 |
-
|
| 227 |
-
|
| 228 |
else:
|
| 229 |
-
print("***Generated Game Idea:")
|
| 230 |
-
print(game_ideas)
|
| 231 |
gameDF=pd.DataFrame(game_ideas)
|
| 232 |
-
print("gameDF")
|
| 233 |
-
print(gameDF)
|
| 234 |
return gameDF
|
|
|
|
|
|
| 1 |
import pandas as pd
|
| 2 |
+
import openai, json
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
from collections import Counter
|
|
|
|
|
|
|
|
|
|
| 4 |
|
| 5 |
INPUT_DATAPATH = "slack_processing/data/themes.json"
|
| 6 |
OUTPUT_GAME_IDEAS_DATAPATH="create_games/data/game_ideas.json"
|
|
|
|
| 13 |
global themes
|
| 14 |
with open(INPUT_DATAPATH, "r") as json_file:
|
| 15 |
themes = json.load(json_file)
|
|
|
|
| 16 |
|
| 17 |
def PopulateThemesByPerson():
|
| 18 |
global themes, themes_by_person
|
| 19 |
+
print("PopulateThemesByPerson")
|
| 20 |
themes_by_person = {}
|
| 21 |
for theme in themes:
|
| 22 |
person = theme['person']
|
| 23 |
postId = theme['postId']
|
| 24 |
theme_info = (theme['theme'], postId)
|
| 25 |
themes_by_person.setdefault(person, set()).add(theme_info)
|
| 26 |
+
print("end, themes_by_person, ", themes_by_person)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
|
| 28 |
def PopulatePeopleByThemes():
|
| 29 |
global themes, people_by_theme
|
| 30 |
+
print("PopulatePeopleByThemes")
|
| 31 |
people_by_theme = {}
|
| 32 |
for theme in themes:
|
| 33 |
person = theme['person']
|
| 34 |
theme_name = theme['theme']
|
| 35 |
people_by_theme.setdefault(theme_name, set()).add(person)
|
| 36 |
+
print("end, people_by_theme, ", people_by_theme)
|
| 37 |
+
|
| 38 |
+
def FindCommonTheme(people_set):
|
| 39 |
+
global themes_by_person, people_by_theme
|
| 40 |
+
theme_counter = Counter()
|
| 41 |
+
for person in people_set:
|
| 42 |
+
if person in themes_by_person:
|
| 43 |
+
for theme, _ in themes_by_person[person]:
|
| 44 |
+
theme_counter[theme] += 1
|
| 45 |
+
|
| 46 |
+
# Case 1: Theme shared by all people
|
| 47 |
+
for theme, count in theme_counter.items():
|
| 48 |
+
if count == len(people_set):
|
| 49 |
+
return theme
|
| 50 |
+
# Case 2: Theme shared by most people
|
| 51 |
+
if theme_counter:
|
| 52 |
+
most_common_theme, _ = theme_counter.most_common(1)[0]
|
| 53 |
+
return most_common_theme
|
| 54 |
+
if people_by_theme:
|
| 55 |
+
most_popular_theme, _ = Counter({theme: len(people) for theme, people in people_by_theme.items()}).most_common(1)[0]
|
| 56 |
+
return most_popular_theme
|
| 57 |
+
else:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
|
| 60 |
+
def GenerateGameIdeas(common_topic, group):
|
| 61 |
+
prompt = f"""Provide rules for a drawing game that this group of players '{group}' may play centered on this theme '{common_topic}'. Keep your answers short. Answer in JSON, in this format: {{"Name":"Name of game","Description":"Game rules","Rationale":"Reasoning for game selection"}}"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 62 |
response = openai.Completion.create(
|
| 63 |
engine="text-davinci-003",
|
| 64 |
prompt=prompt,
|
| 65 |
max_tokens=800,
|
| 66 |
n=1,
|
| 67 |
+
temperature=0.1)
|
|
|
|
|
|
|
| 68 |
# Process the response and extract the game ideas
|
| 69 |
game_ideas = []
|
| 70 |
+
for choice in response["choices"]:
|
|
|
|
|
|
|
| 71 |
choiceText = choice["text"]
|
| 72 |
game_data = choiceText.strip('\n')
|
| 73 |
+
print("--after strip game_data", game_data)
|
| 74 |
try:
|
| 75 |
game_data_dict = json.loads(game_data)
|
| 76 |
game_ideas.append(game_data_dict)
|
| 77 |
print("----game_data", game_data_dict)
|
| 78 |
except json.JSONDecodeError:
|
| 79 |
+
print("Error decoding JSON.")
|
| 80 |
continue
|
| 81 |
|
| 82 |
+
if game_ideas:
|
|
|
|
|
|
|
|
|
|
| 83 |
with open(OUTPUT_GAME_IDEAS_DATAPATH, 'w') as file:
|
| 84 |
+
json.dump(game_ideas, file, indent=4)
|
| 85 |
+
return game_ideas
|
| 86 |
else:
|
| 87 |
print("No game idea found.")
|
| 88 |
return None
|
| 89 |
|
|
|
|
| 90 |
def GetPlayers():
|
| 91 |
+
players = []
|
| 92 |
+
index = 0
|
| 93 |
+
for theme in themes:
|
| 94 |
person = theme['person']
|
| 95 |
+
if person not in [t[0] for t in players]:
|
| 96 |
+
players.append((person, index))
|
| 97 |
+
index += 1
|
|
|
|
|
|
|
| 98 |
return players
|
| 99 |
|
| 100 |
+
def GetPeopleByThemesDF():
|
| 101 |
+
global people_by_theme
|
| 102 |
+
flattened_data = [(theme, person) for theme, persons in people_by_theme.items() for person in persons]
|
| 103 |
+
# Create a DataFrame
|
| 104 |
+
df = pd.DataFrame(flattened_data, columns=['Theme', 'Person'])
|
| 105 |
+
return df
|
| 106 |
+
|
| 107 |
def LoadThemes():
|
| 108 |
+
global themes,people_by_theme, themes_by_person, players
|
| 109 |
ReadThemesFromFile()
|
| 110 |
PopulatePeopleByThemes()
|
|
|
|
|
|
|
|
|
|
| 111 |
PopulateThemesByPerson()
|
|
|
|
|
|
|
| 112 |
|
| 113 |
def CreateGameForGroup(group, retry=False):
|
| 114 |
+
global themes
|
|
|
|
| 115 |
if not retry:
|
| 116 |
+
common_topic = FindCommonTheme(group)
|
| 117 |
else:
|
| 118 |
+
common_topic = themes
|
| 119 |
+
game_ideas = GenerateGameIdeas(common_topic, group)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
if game_ideas is None:
|
| 121 |
+
if not retry:
|
| 122 |
+
retry=True
|
| 123 |
+
return CreateGameForGroup(players, retry)
|
| 124 |
else:
|
|
|
|
|
|
|
| 125 |
gameDF=pd.DataFrame(game_ideas)
|
|
|
|
|
|
|
| 126 |
return gameDF
|
| 127 |
+
return None
|
create_games/data/game_ideas.json
CHANGED
|
@@ -1,8 +1,7 @@
|
|
| 1 |
[
|
| 2 |
{
|
| 3 |
-
"Name": "
|
| 4 |
-
"Description": "
|
| 5 |
-
"
|
| 6 |
-
"Rationale": "This game encourages players to think creatively and strategically about their availability, while also having a fun guessing element."
|
| 7 |
}
|
| 8 |
]
|
|
|
|
| 1 |
[
|
| 2 |
{
|
| 3 |
+
"Name": "Food Drawing Duel",
|
| 4 |
+
"Description": "Each player takes turns drawing a food item on a piece of paper. The other player must guess what the food item is. The first player to guess correctly wins the round. The player with the most correct guesses at the end of the game wins.",
|
| 5 |
+
"Rationale": "This game is simple and easy to play, and encourages creativity and communication between the two players."
|
|
|
|
| 6 |
}
|
| 7 |
]
|
home_view/__pycache__/ui_home.cpython-311.pyc
CHANGED
|
Binary files a/home_view/__pycache__/ui_home.cpython-311.pyc and b/home_view/__pycache__/ui_home.cpython-311.pyc differ
|
|
|
home_view/ui_home.py
CHANGED
|
@@ -3,23 +3,35 @@ import pandas as pd
|
|
| 3 |
from home_view.app_theme import SoftBlue
|
| 4 |
from sketch import sketch as sk
|
| 5 |
from slack_processing.slack_data_prep import FetchSlack, ProcessSlack, CreateEmbeddings
|
| 6 |
-
from create_games.create_games_slack import LoadThemes,GetPlayers,CreateGameForGroup
|
| 7 |
|
| 8 |
startDF=pd.DataFrame()
|
| 9 |
slackDF=pd.DataFrame()
|
| 10 |
embeddingsDF=pd.DataFrame()
|
|
|
|
| 11 |
gamesDF=pd.DataFrame()
|
|
|
|
| 12 |
playersValues=[]
|
| 13 |
selected= []
|
| 14 |
players=[]
|
| 15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
def Init():
|
| 17 |
-
|
|
|
|
| 18 |
startDF=FetchSlack()
|
| 19 |
slackDF=ProcessSlack()
|
| 20 |
embeddingsDF=CreateEmbeddings()
|
| 21 |
gamesDF=LoadThemes()
|
| 22 |
playersValues=GetPlayers()
|
|
|
|
| 23 |
playersCB.choices = playersValues
|
| 24 |
|
| 25 |
def SetSelected(playersCB):
|
|
@@ -54,7 +66,8 @@ def CreateGame():
|
|
| 54 |
df1 =gr.Dataframe(type="pandas", value=startDF)
|
| 55 |
df2 =gr.Dataframe(type="pandas", value=slackDF)
|
| 56 |
df3 =gr.Dataframe(type="pandas", value=embeddingsDF)
|
| 57 |
-
df4 =gr.Dataframe(type="pandas", value=
|
|
|
|
| 58 |
|
| 59 |
with gr.Blocks() as ui:
|
| 60 |
with gr.Row():
|
|
@@ -69,17 +82,18 @@ with gr.Blocks() as ui:
|
|
| 69 |
playBtn = gr.Button(value="Let's Play", variant="primary")
|
| 70 |
with gr.Row(visible=False) as holder:
|
| 71 |
sketch=gr.Image(image_mode="L", source="canvas", width=600, height =600, invert_colors=True, interactive=True,
|
| 72 |
-
|
| 73 |
-
allow_draw=True, allow_magnify=True, allow_color_picker=True)
|
| 74 |
label=gr.Label()
|
| 75 |
sketch.change(Predict, inputs=[sketch], outputs=[label])
|
| 76 |
|
| 77 |
with gr.Blocks() as dfs:
|
| 78 |
-
|
| 79 |
-
gr.TabbedInterface([df1,df2,df3,df4], ("Start", "Slack","Embeddings","Games"))
|
| 80 |
-
|
| 81 |
playersCB.change(SetSelected, inputs=[playersCB], outputs=[])
|
| 82 |
createBtn.click(CreateGame, inputs=[], outputs=[df4,desc,gameTitle])
|
| 83 |
playBtn.click(PlayGame, inputs=[], outputs=[holder])
|
|
|
|
| 84 |
combo=gr.TabbedInterface([ui,dfs], ("BuildPlay", "DataFrames"),theme=SoftBlue())
|
|
|
|
| 85 |
Init()
|
|
|
|
| 3 |
from home_view.app_theme import SoftBlue
|
| 4 |
from sketch import sketch as sk
|
| 5 |
from slack_processing.slack_data_prep import FetchSlack, ProcessSlack, CreateEmbeddings
|
| 6 |
+
from create_games.create_games_slack import LoadThemes,GetPlayers,CreateGameForGroup,GetPeopleByThemesDF
|
| 7 |
|
| 8 |
startDF=pd.DataFrame()
|
| 9 |
slackDF=pd.DataFrame()
|
| 10 |
embeddingsDF=pd.DataFrame()
|
| 11 |
+
playersDF=pd.DataFrame()
|
| 12 |
gamesDF=pd.DataFrame()
|
| 13 |
+
|
| 14 |
playersValues=[]
|
| 15 |
selected= []
|
| 16 |
players=[]
|
| 17 |
|
| 18 |
+
def FetchData():
|
| 19 |
+
startDF=FetchSlack()
|
| 20 |
+
slackDF=ProcessSlack()
|
| 21 |
+
embeddingsDF=CreateEmbeddings()
|
| 22 |
+
gamesDF=LoadThemes()
|
| 23 |
+
playersDF=GetPeopleByThemesDF()
|
| 24 |
+
return startDF, slackDF, embeddingsDF, playersDF, gamesDF
|
| 25 |
+
|
| 26 |
def Init():
|
| 27 |
+
print("in init)")
|
| 28 |
+
global startDF, slackDF, embeddingsDF, gamesDF,players,playersDF,playersValues
|
| 29 |
startDF=FetchSlack()
|
| 30 |
slackDF=ProcessSlack()
|
| 31 |
embeddingsDF=CreateEmbeddings()
|
| 32 |
gamesDF=LoadThemes()
|
| 33 |
playersValues=GetPlayers()
|
| 34 |
+
playersDF = GetPeopleByThemesDF()
|
| 35 |
playersCB.choices = playersValues
|
| 36 |
|
| 37 |
def SetSelected(playersCB):
|
|
|
|
| 66 |
df1 =gr.Dataframe(type="pandas", value=startDF)
|
| 67 |
df2 =gr.Dataframe(type="pandas", value=slackDF)
|
| 68 |
df3 =gr.Dataframe(type="pandas", value=embeddingsDF)
|
| 69 |
+
df4 =gr.Dataframe(type="pandas", value= playersDF)
|
| 70 |
+
df5 =gr.Dataframe(type="pandas", value=gamesDF)
|
| 71 |
|
| 72 |
with gr.Blocks() as ui:
|
| 73 |
with gr.Row():
|
|
|
|
| 82 |
playBtn = gr.Button(value="Let's Play", variant="primary")
|
| 83 |
with gr.Row(visible=False) as holder:
|
| 84 |
sketch=gr.Image(image_mode="L", source="canvas", width=600, height =600, invert_colors=True, interactive=True,
|
| 85 |
+
brush_radius=.5,type="numpy",label="Sketch", show_label=True, show_download_button=False)
|
|
|
|
| 86 |
label=gr.Label()
|
| 87 |
sketch.change(Predict, inputs=[sketch], outputs=[label])
|
| 88 |
|
| 89 |
with gr.Blocks() as dfs:
|
| 90 |
+
fetchBtn=gr.Button(value="Fetch Data", variant="primary")
|
| 91 |
+
gr.TabbedInterface([df1,df2,df3,df4,df5], ("Start", "Slack","Embeddings","Topics by Player", "Games"))
|
| 92 |
+
fetchBtn.click(FetchData, inputs=[], outputs=[df1,df2,df3,df4,df5])
|
| 93 |
playersCB.change(SetSelected, inputs=[playersCB], outputs=[])
|
| 94 |
createBtn.click(CreateGame, inputs=[], outputs=[df4,desc,gameTitle])
|
| 95 |
playBtn.click(PlayGame, inputs=[], outputs=[holder])
|
| 96 |
+
|
| 97 |
combo=gr.TabbedInterface([ui,dfs], ("BuildPlay", "DataFrames"),theme=SoftBlue())
|
| 98 |
+
|
| 99 |
Init()
|
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/data/generated_game_topics.txt
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 2 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 3 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 4 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 5 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 6 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 7 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 8 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 9 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 10 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 11 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 12 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 13 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 14 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 15 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 16 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 17 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 18 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 19 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 20 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 21 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 22 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 23 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 24 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 25 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 26 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 27 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 28 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 29 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 30 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 31 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 32 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 33 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 34 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 35 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 36 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 37 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 38 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 39 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 40 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 41 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 42 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 43 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 44 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 45 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 46 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 47 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 48 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 49 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 50 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 51 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 52 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 53 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 54 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 55 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 56 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 57 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 58 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 59 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 60 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 61 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 62 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 63 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 64 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 65 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 66 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 67 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 68 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 69 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 70 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 71 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
| 72 |
+
<utilities.unique_queue.UniqueQueue object at 0x2ac86c8d0>
|
slack_processing/data/slack_with_theme_embeddings.json
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
slack_processing/data/themes.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
| 1 |
[
|
| 2 |
{
|
| 3 |
"datetime": "2023-07-11 9:21 AM",
|
| 4 |
-
"theme": "
|
| 5 |
"modifier": 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":
|
| 10 |
},
|
| 11 |
{
|
| 12 |
"datetime": "2023-07-11 9:21 AM",
|
|
@@ -19,57 +19,57 @@
|
|
| 19 |
},
|
| 20 |
{
|
| 21 |
"datetime": "2023-07-11 9:21 AM",
|
| 22 |
-
"theme": "
|
| 23 |
"modifier": 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":
|
| 28 |
},
|
| 29 |
{
|
| 30 |
"datetime": "2023-07-11 9:21 AM",
|
| 31 |
-
"theme": "
|
| 32 |
"modifier": 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":
|
| 37 |
},
|
| 38 |
{
|
| 39 |
"datetime": "2023-07-11 9:21 AM",
|
| 40 |
-
"theme": "
|
| 41 |
"modifier": 0,
|
| 42 |
"message": "@Sam happy Slalomversary!",
|
| 43 |
"person": "Naeem",
|
| 44 |
"postId": 6,
|
| 45 |
-
"themeSimilarity":
|
| 46 |
},
|
| 47 |
{
|
| 48 |
"datetime": "2023-07-11 9:21 AM",
|
| 49 |
-
"theme": "
|
| 50 |
"modifier": 0,
|
| 51 |
"message": "Happy Slalomversary @Sam",
|
| 52 |
"person": "Monika Rudra",
|
| 53 |
"postId": 7,
|
| 54 |
-
"themeSimilarity":
|
| 55 |
},
|
| 56 |
{
|
| 57 |
"datetime": "2023-07-11 9:21 AM",
|
| 58 |
-
"theme": "
|
| 59 |
"modifier": 0,
|
| 60 |
"message": "Happy Slalomversary, my dear friend! @Sam :hugging_face:",
|
| 61 |
"person": "\u028e\u05df\u05df\u01dd\u029e",
|
| 62 |
"postId": 8,
|
| 63 |
-
"themeSimilarity":
|
| 64 |
},
|
| 65 |
{
|
| 66 |
"datetime": "2023-07-11 9:21 AM",
|
| 67 |
-
"theme": "
|
| 68 |
"modifier": 0,
|
| 69 |
"message": "Happy Slalomversary, @Sam! :partyblob:",
|
| 70 |
"person": "David Bernal",
|
| 71 |
"postId": 9,
|
| 72 |
-
"themeSimilarity":
|
| 73 |
},
|
| 74 |
{
|
| 75 |
"datetime": "2023-07-11 9:21 AM",
|
|
@@ -82,12 +82,12 @@
|
|
| 82 |
},
|
| 83 |
{
|
| 84 |
"datetime": "2023-07-11 9:21 AM",
|
| 85 |
-
"theme": "
|
| 86 |
"modifier": 0,
|
| 87 |
"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.",
|
| 88 |
"person": "John Flaherty",
|
| 89 |
"postId": 11,
|
| 90 |
-
"themeSimilarity":
|
| 91 |
},
|
| 92 |
{
|
| 93 |
"datetime": "2023-07-11 9:21 AM",
|
|
@@ -100,7 +100,7 @@
|
|
| 100 |
},
|
| 101 |
{
|
| 102 |
"datetime": "2023-07-11 9:21 AM",
|
| 103 |
-
"theme": "
|
| 104 |
"modifier": 0,
|
| 105 |
"message": "Happy Friday",
|
| 106 |
"person": "Naeem",
|
|
@@ -109,16 +109,16 @@
|
|
| 109 |
},
|
| 110 |
{
|
| 111 |
"datetime": "2023-07-11 9:21 AM",
|
| 112 |
-
"theme": "
|
| 113 |
"modifier": 0,
|
| 114 |
"message": "Date night with my wife at the Sugar Land Space Cowboys game.",
|
| 115 |
"person": "Steven Murray",
|
| 116 |
"postId": 15,
|
| 117 |
-
"themeSimilarity":
|
| 118 |
},
|
| 119 |
{
|
| 120 |
"datetime": "2023-07-11 9:21 AM",
|
| 121 |
-
"theme": "
|
| 122 |
"modifier": 0,
|
| 123 |
"message": "Happy Father's day to all you _Builder Dads out there!",
|
| 124 |
"person": "Naeem",
|
|
@@ -127,16 +127,16 @@
|
|
| 127 |
},
|
| 128 |
{
|
| 129 |
"datetime": "2023-07-11 9:21 AM",
|
| 130 |
-
"theme": "
|
| 131 |
"modifier": 0,
|
| 132 |
"message": "Anyone had any cool gifts/activities for Father\u2019s Day?",
|
| 133 |
"person": "Michelle Francisco",
|
| 134 |
"postId": 17,
|
| 135 |
-
"themeSimilarity":
|
| 136 |
},
|
| 137 |
{
|
| 138 |
"datetime": "2023-07-11 9:21 AM",
|
| 139 |
-
"theme": "
|
| 140 |
"modifier": 0,
|
| 141 |
"message": "National Cow Appreciation Day - @julie.lowe how are the cows? :slightly_smiling_face: :cow:",
|
| 142 |
"person": "Michelle Francisco",
|
|
@@ -154,12 +154,12 @@
|
|
| 154 |
},
|
| 155 |
{
|
| 156 |
"datetime": "2023-07-11 9:21 AM",
|
| 157 |
-
"theme": "
|
| 158 |
"modifier": 0,
|
| 159 |
"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'.",
|
| 160 |
"person": "Mrinalini Shekhawat",
|
| 161 |
"postId": 20,
|
| 162 |
-
"themeSimilarity":
|
| 163 |
},
|
| 164 |
{
|
| 165 |
"datetime": "2023-07-11 9:21 AM",
|
|
@@ -168,7 +168,7 @@
|
|
| 168 |
"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...",
|
| 169 |
"person": "Ahmad Shareef",
|
| 170 |
"postId": 21,
|
| 171 |
-
"themeSimilarity":
|
| 172 |
},
|
| 173 |
{
|
| 174 |
"datetime": "2023-07-11 9:21 AM",
|
|
@@ -181,12 +181,12 @@
|
|
| 181 |
},
|
| 182 |
{
|
| 183 |
"datetime": "2023-07-11 9:21 AM",
|
| 184 |
-
"theme": "
|
| 185 |
"modifier": 0,
|
| 186 |
"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.",
|
| 187 |
"person": "John Flaherty",
|
| 188 |
"postId": 23,
|
| 189 |
-
"themeSimilarity":
|
| 190 |
},
|
| 191 |
{
|
| 192 |
"datetime": "2023-07-11 9:21 AM",
|
|
@@ -217,25 +217,25 @@
|
|
| 217 |
},
|
| 218 |
{
|
| 219 |
"datetime": "2023-07-11 9:21 AM",
|
| 220 |
-
"theme": "
|
| 221 |
"modifier": 0,
|
| 222 |
"message": "Please wish @Christy Nolan a happy 2 year Slalomversary!",
|
| 223 |
"person": "Jason Riley",
|
| 224 |
"postId": 28,
|
| 225 |
-
"themeSimilarity":
|
| 226 |
},
|
| 227 |
{
|
| 228 |
"datetime": "2023-07-11 9:21 AM",
|
| 229 |
-
"theme": "
|
| 230 |
"modifier": 0,
|
| 231 |
"message": "@here Good morning everyone! We are having our CCC today in the rice room from 9:00-10:00am!",
|
| 232 |
"person": "Alexa De La Garza",
|
| 233 |
"postId": 29,
|
| 234 |
-
"themeSimilarity":
|
| 235 |
},
|
| 236 |
{
|
| 237 |
"datetime": "2023-07-11 9:21 AM",
|
| 238 |
-
"theme": "session
|
| 239 |
"modifier": 0,
|
| 240 |
"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?",
|
| 241 |
"person": "Richard Hand",
|
|
@@ -253,7 +253,7 @@
|
|
| 253 |
},
|
| 254 |
{
|
| 255 |
"datetime": "2023-07-11 9:21 AM",
|
| 256 |
-
"theme": "
|
| 257 |
"modifier": 0,
|
| 258 |
"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.",
|
| 259 |
"person": "Inez Escandon",
|
|
@@ -262,21 +262,21 @@
|
|
| 262 |
},
|
| 263 |
{
|
| 264 |
"datetime": "2023-07-11 9:21 AM",
|
| 265 |
-
"theme": "
|
| 266 |
"modifier": 0,
|
| 267 |
"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\u2019s Choice and Judges\u2019 Choice as winners You do not need to be present during the judging time to enter. Bakeoff (2).png",
|
| 268 |
"person": "Ahmad Shareef",
|
| 269 |
"postId": 33,
|
| 270 |
-
"themeSimilarity":
|
| 271 |
},
|
| 272 |
{
|
| 273 |
"datetime": "2023-07-11 9:21 AM",
|
| 274 |
-
"theme": "
|
| 275 |
"modifier": 0,
|
| 276 |
"message": "@here Hello folks! B.R.A.D is working again if anyone in the office needs parking validation :brad-badge::blue_car:",
|
| 277 |
"person": "Alexa De La Garza",
|
| 278 |
"postId": 34,
|
| 279 |
-
"themeSimilarity":
|
| 280 |
},
|
| 281 |
{
|
| 282 |
"datetime": "2023-07-11 9:21 AM",
|
|
@@ -307,43 +307,61 @@
|
|
| 307 |
},
|
| 308 |
{
|
| 309 |
"datetime": "2023-07-11 9:21 AM",
|
| 310 |
-
"theme": "
|
| 311 |
"modifier": 0,
|
| 312 |
"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)",
|
| 313 |
"person": "Ahmad Shareef",
|
| 314 |
"postId": 38,
|
| 315 |
-
"themeSimilarity":
|
| 316 |
},
|
| 317 |
{
|
| 318 |
"datetime": "2023-07-11 9:21 AM",
|
| 319 |
-
"theme": "
|
| 320 |
"modifier": 0,
|
| 321 |
"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.",
|
| 322 |
"person": "Ahmad Shareef",
|
| 323 |
"postId": 39,
|
| 324 |
-
"themeSimilarity":
|
| 325 |
},
|
| 326 |
{
|
| 327 |
"datetime": "2023-07-11 9:21 AM",
|
| 328 |
-
"theme": "lunch
|
| 329 |
"modifier": 0,
|
| 330 |
"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)",
|
| 331 |
"person": "Robert Hailey",
|
| 332 |
"postId": 40,
|
| 333 |
-
"themeSimilarity":
|
| 334 |
},
|
| 335 |
{
|
| 336 |
"datetime": "2023-07-11 9:21 AM",
|
| 337 |
-
"theme": "
|
| 338 |
"modifier": 0,
|
| 339 |
"message": "Also happening tomorrow~ Wednesday June 7th at 5pm sharp is BUILD KARAOKE NIGHT!!!! :celebrate::micdrop-boom::dancefloor: @here",
|
| 340 |
"person": "Linh Ta",
|
| 341 |
"postId": 41,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 342 |
"themeSimilarity": "1.0"
|
| 343 |
},
|
| 344 |
{
|
| 345 |
"datetime": "2023-07-11 9:21 AM",
|
| 346 |
-
"theme": "
|
| 347 |
"modifier": 0,
|
| 348 |
"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.",
|
| 349 |
"person": "Melanie Halbert",
|
|
@@ -370,79 +388,79 @@
|
|
| 370 |
},
|
| 371 |
{
|
| 372 |
"datetime": "2023-07-11 9:21 AM",
|
| 373 |
-
"theme": "
|
| 374 |
"modifier": 0,
|
| 375 |
"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!",
|
| 376 |
"person": "Doug Bowen",
|
| 377 |
"postId": 49,
|
| 378 |
-
"themeSimilarity":
|
| 379 |
},
|
| 380 |
{
|
| 381 |
"datetime": "2023-07-11 9:21 AM",
|
| 382 |
-
"theme": "
|
| 383 |
"modifier": 0,
|
| 384 |
"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).",
|
| 385 |
"person": "Ahmad Shareef",
|
| 386 |
"postId": 50,
|
| 387 |
-
"themeSimilarity":
|
| 388 |
},
|
| 389 |
{
|
| 390 |
"datetime": "2023-07-11 9:21 AM",
|
| 391 |
-
"theme": "
|
| 392 |
"modifier": 0,
|
| 393 |
"message": "I\u2019ll take a Bangkok bowl!",
|
| 394 |
"person": "Phillip Nguyen",
|
| 395 |
"postId": 51,
|
| 396 |
-
"themeSimilarity":
|
| 397 |
},
|
| 398 |
{
|
| 399 |
"datetime": "2023-07-11 9:21 AM",
|
| 400 |
-
"theme": "anniversary
|
| 401 |
"modifier": 0,
|
| 402 |
"message": "Happy 6 year anniversary to the formation of Houston :_b: QE :celebrate-all: @Logan Le @Blake Bryce @King Khan",
|
| 403 |
"person": "Blake Bryce",
|
| 404 |
"postId": 52,
|
| 405 |
-
"themeSimilarity":
|
| 406 |
},
|
| 407 |
{
|
| 408 |
"datetime": "2023-07-11 9:21 AM",
|
| 409 |
-
"theme": "
|
| 410 |
"modifier": 0,
|
| 411 |
"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\u2019ll forward you the invite. Also, feel free to just stop by and help out. Hope to see you Friday! (edited)",
|
| 412 |
"person": "Michelle Francisco",
|
| 413 |
"postId": 53,
|
| 414 |
-
"themeSimilarity":
|
| 415 |
},
|
| 416 |
{
|
| 417 |
"datetime": "2023-07-11 9:21 AM",
|
| 418 |
-
"theme": "
|
| 419 |
"modifier": 0,
|
| 420 |
"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.",
|
| 421 |
"person": "Ahmad Shareef",
|
| 422 |
"postId": 54,
|
| 423 |
-
"themeSimilarity":
|
| 424 |
},
|
| 425 |
{
|
| 426 |
"datetime": "2023-07-11 9:21 AM",
|
| 427 |
-
"theme": "
|
| 428 |
"modifier": 0,
|
| 429 |
"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",
|
| 430 |
"person": "Ahmad Shareef",
|
| 431 |
"postId": 55,
|
| 432 |
-
"themeSimilarity":
|
| 433 |
},
|
| 434 |
{
|
| 435 |
"datetime": "2023-07-11 9:21 AM",
|
| 436 |
-
"theme": "
|
| 437 |
"modifier": 0,
|
| 438 |
"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!",
|
| 439 |
"person": "Ethan Bowen",
|
| 440 |
"postId": 57,
|
| 441 |
-
"themeSimilarity":
|
| 442 |
},
|
| 443 |
{
|
| 444 |
"datetime": "2023-07-11 9:21 AM",
|
| 445 |
-
"theme": "
|
| 446 |
"modifier": 0,
|
| 447 |
"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:",
|
| 448 |
"person": "Linh Ta",
|
|
@@ -465,56 +483,56 @@
|
|
| 465 |
"message": "replied to a thread: Tell me this isn\u2019t relatable :joy:\u2026 A classic, alongside this one: https://www.youtube.com/watch?v=y8OnoxKotPQ",
|
| 466 |
"person": "Stefano",
|
| 467 |
"postId": 60,
|
| 468 |
-
"themeSimilarity":
|
| 469 |
},
|
| 470 |
{
|
| 471 |
"datetime": "2023-07-11 9:21 AM",
|
| 472 |
-
"theme": "
|
| 473 |
"modifier": 0,
|
| 474 |
"message": "Happy 713 Day! image.png image.png",
|
| 475 |
"person": "John Flaherty",
|
| 476 |
"postId": 61,
|
| 477 |
-
"themeSimilarity":
|
| 478 |
},
|
| 479 |
{
|
| 480 |
"datetime": "2023-07-11 9:21 AM",
|
| 481 |
-
"theme": "
|
| 482 |
"modifier": 0,
|
| 483 |
"message": "Happy birthday @Ray Lopez! H-Town and Prime days are Ray\u2019s Day. balloons.jpeg balloons.jpeg",
|
| 484 |
"person": "Michelle Francisco",
|
| 485 |
"postId": 64,
|
| 486 |
-
"themeSimilarity":
|
| 487 |
},
|
| 488 |
{
|
| 489 |
"datetime": "2023-07-11 9:21 AM",
|
| 490 |
-
"theme": "
|
| 491 |
"modifier": 0,
|
| 492 |
"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!",
|
| 493 |
"person": "Keri W",
|
| 494 |
"postId": 65,
|
| 495 |
-
"themeSimilarity":
|
| 496 |
},
|
| 497 |
{
|
| 498 |
"datetime": "2023-07-11 9:21 AM",
|
| 499 |
-
"theme": "
|
| 500 |
"modifier": 0,
|
| 501 |
"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!",
|
| 502 |
"person": "Michelle Francisco",
|
| 503 |
"postId": 66,
|
| 504 |
-
"themeSimilarity":
|
| 505 |
},
|
| 506 |
{
|
| 507 |
"datetime": "2023-07-11 9:21 AM",
|
| 508 |
-
"theme": "
|
| 509 |
"modifier": 0,
|
| 510 |
"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",
|
| 511 |
"person": "Doug Bowen",
|
| 512 |
"postId": 67,
|
| 513 |
-
"themeSimilarity":
|
| 514 |
},
|
| 515 |
{
|
| 516 |
"datetime": "2023-07-11 9:21 AM",
|
| 517 |
-
"theme": "
|
| 518 |
"modifier": 0,
|
| 519 |
"message": "Is it time for Blake to take the Milk Challenge?!?",
|
| 520 |
"person": "Srijaya Suresh",
|
|
@@ -523,7 +541,7 @@
|
|
| 523 |
},
|
| 524 |
{
|
| 525 |
"datetime": "2023-07-11 9:21 AM",
|
| 526 |
-
"theme": "
|
| 527 |
"modifier": 0,
|
| 528 |
"message": "Did someone say MILK? @BlakeBryce?!?",
|
| 529 |
"person": "Michelle Francisco",
|
|
@@ -532,7 +550,7 @@
|
|
| 532 |
},
|
| 533 |
{
|
| 534 |
"datetime": "2023-07-11 9:21 AM",
|
| 535 |
-
"theme": "
|
| 536 |
"modifier": 0,
|
| 537 |
"message": "Never drank milk.",
|
| 538 |
"person": "Blake Bryce",
|
|
@@ -541,11 +559,11 @@
|
|
| 541 |
},
|
| 542 |
{
|
| 543 |
"datetime": "2023-07-11 9:21 AM",
|
| 544 |
-
"theme": "
|
| 545 |
"modifier": 0,
|
| 546 |
"message": "Blake should drink milk.",
|
| 547 |
"person": "Kim Adams",
|
| 548 |
"postId": 72,
|
| 549 |
-
"themeSimilarity":
|
| 550 |
}
|
| 551 |
]
|
|
|
|
| 1 |
[
|
| 2 |
{
|
| 3 |
"datetime": "2023-07-11 9:21 AM",
|
| 4 |
+
"theme": "dungeons and dragons",
|
| 5 |
"modifier": 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
|
| 10 |
},
|
| 11 |
{
|
| 12 |
"datetime": "2023-07-11 9:21 AM",
|
|
|
|
| 19 |
},
|
| 20 |
{
|
| 21 |
"datetime": "2023-07-11 9:21 AM",
|
| 22 |
+
"theme": "l&l",
|
| 23 |
"modifier": 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
|
| 28 |
},
|
| 29 |
{
|
| 30 |
"datetime": "2023-07-11 9:21 AM",
|
| 31 |
+
"theme": "anniversary",
|
| 32 |
"modifier": 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
|
| 37 |
},
|
| 38 |
{
|
| 39 |
"datetime": "2023-07-11 9:21 AM",
|
| 40 |
+
"theme": "anniversary",
|
| 41 |
"modifier": 0,
|
| 42 |
"message": "@Sam happy Slalomversary!",
|
| 43 |
"person": "Naeem",
|
| 44 |
"postId": 6,
|
| 45 |
+
"themeSimilarity": 1
|
| 46 |
},
|
| 47 |
{
|
| 48 |
"datetime": "2023-07-11 9:21 AM",
|
| 49 |
+
"theme": "anniversary",
|
| 50 |
"modifier": 0,
|
| 51 |
"message": "Happy Slalomversary @Sam",
|
| 52 |
"person": "Monika Rudra",
|
| 53 |
"postId": 7,
|
| 54 |
+
"themeSimilarity": 1
|
| 55 |
},
|
| 56 |
{
|
| 57 |
"datetime": "2023-07-11 9:21 AM",
|
| 58 |
+
"theme": "anniversary",
|
| 59 |
"modifier": 0,
|
| 60 |
"message": "Happy Slalomversary, my dear friend! @Sam :hugging_face:",
|
| 61 |
"person": "\u028e\u05df\u05df\u01dd\u029e",
|
| 62 |
"postId": 8,
|
| 63 |
+
"themeSimilarity": 1
|
| 64 |
},
|
| 65 |
{
|
| 66 |
"datetime": "2023-07-11 9:21 AM",
|
| 67 |
+
"theme": "anniversary",
|
| 68 |
"modifier": 0,
|
| 69 |
"message": "Happy Slalomversary, @Sam! :partyblob:",
|
| 70 |
"person": "David Bernal",
|
| 71 |
"postId": 9,
|
| 72 |
+
"themeSimilarity": 1
|
| 73 |
},
|
| 74 |
{
|
| 75 |
"datetime": "2023-07-11 9:21 AM",
|
|
|
|
| 82 |
},
|
| 83 |
{
|
| 84 |
"datetime": "2023-07-11 9:21 AM",
|
| 85 |
+
"theme": "lunch and learn",
|
| 86 |
"modifier": 0,
|
| 87 |
"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.",
|
| 88 |
"person": "John Flaherty",
|
| 89 |
"postId": 11,
|
| 90 |
+
"themeSimilarity": 1
|
| 91 |
},
|
| 92 |
{
|
| 93 |
"datetime": "2023-07-11 9:21 AM",
|
|
|
|
| 100 |
},
|
| 101 |
{
|
| 102 |
"datetime": "2023-07-11 9:21 AM",
|
| 103 |
+
"theme": "celebration",
|
| 104 |
"modifier": 0,
|
| 105 |
"message": "Happy Friday",
|
| 106 |
"person": "Naeem",
|
|
|
|
| 109 |
},
|
| 110 |
{
|
| 111 |
"datetime": "2023-07-11 9:21 AM",
|
| 112 |
+
"theme": "anniversary",
|
| 113 |
"modifier": 0,
|
| 114 |
"message": "Date night with my wife at the Sugar Land Space Cowboys game.",
|
| 115 |
"person": "Steven Murray",
|
| 116 |
"postId": 15,
|
| 117 |
+
"themeSimilarity": 1
|
| 118 |
},
|
| 119 |
{
|
| 120 |
"datetime": "2023-07-11 9:21 AM",
|
| 121 |
+
"theme": "father's day",
|
| 122 |
"modifier": 0,
|
| 123 |
"message": "Happy Father's day to all you _Builder Dads out there!",
|
| 124 |
"person": "Naeem",
|
|
|
|
| 127 |
},
|
| 128 |
{
|
| 129 |
"datetime": "2023-07-11 9:21 AM",
|
| 130 |
+
"theme": "father's day",
|
| 131 |
"modifier": 0,
|
| 132 |
"message": "Anyone had any cool gifts/activities for Father\u2019s Day?",
|
| 133 |
"person": "Michelle Francisco",
|
| 134 |
"postId": 17,
|
| 135 |
+
"themeSimilarity": 1
|
| 136 |
},
|
| 137 |
{
|
| 138 |
"datetime": "2023-07-11 9:21 AM",
|
| 139 |
+
"theme": "cow appreciation day",
|
| 140 |
"modifier": 0,
|
| 141 |
"message": "National Cow Appreciation Day - @julie.lowe how are the cows? :slightly_smiling_face: :cow:",
|
| 142 |
"person": "Michelle Francisco",
|
|
|
|
| 154 |
},
|
| 155 |
{
|
| 156 |
"datetime": "2023-07-11 9:21 AM",
|
| 157 |
+
"theme": "father's day",
|
| 158 |
"modifier": 0,
|
| 159 |
"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'.",
|
| 160 |
"person": "Mrinalini Shekhawat",
|
| 161 |
"postId": 20,
|
| 162 |
+
"themeSimilarity": 1
|
| 163 |
},
|
| 164 |
{
|
| 165 |
"datetime": "2023-07-11 9:21 AM",
|
|
|
|
| 168 |
"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...",
|
| 169 |
"person": "Ahmad Shareef",
|
| 170 |
"postId": 21,
|
| 171 |
+
"themeSimilarity": 1
|
| 172 |
},
|
| 173 |
{
|
| 174 |
"datetime": "2023-07-11 9:21 AM",
|
|
|
|
| 181 |
},
|
| 182 |
{
|
| 183 |
"datetime": "2023-07-11 9:21 AM",
|
| 184 |
+
"theme": "build center tour",
|
| 185 |
"modifier": 0,
|
| 186 |
"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.",
|
| 187 |
"person": "John Flaherty",
|
| 188 |
"postId": 23,
|
| 189 |
+
"themeSimilarity": 1
|
| 190 |
},
|
| 191 |
{
|
| 192 |
"datetime": "2023-07-11 9:21 AM",
|
|
|
|
| 217 |
},
|
| 218 |
{
|
| 219 |
"datetime": "2023-07-11 9:21 AM",
|
| 220 |
+
"theme": "anniversary",
|
| 221 |
"modifier": 0,
|
| 222 |
"message": "Please wish @Christy Nolan a happy 2 year Slalomversary!",
|
| 223 |
"person": "Jason Riley",
|
| 224 |
"postId": 28,
|
| 225 |
+
"themeSimilarity": 1
|
| 226 |
},
|
| 227 |
{
|
| 228 |
"datetime": "2023-07-11 9:21 AM",
|
| 229 |
+
"theme": "lunch and learn",
|
| 230 |
"modifier": 0,
|
| 231 |
"message": "@here Good morning everyone! We are having our CCC today in the rice room from 9:00-10:00am!",
|
| 232 |
"person": "Alexa De La Garza",
|
| 233 |
"postId": 29,
|
| 234 |
+
"themeSimilarity": 1
|
| 235 |
},
|
| 236 |
{
|
| 237 |
"datetime": "2023-07-11 9:21 AM",
|
| 238 |
+
"theme": "session logout",
|
| 239 |
"modifier": 0,
|
| 240 |
"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?",
|
| 241 |
"person": "Richard Hand",
|
|
|
|
| 253 |
},
|
| 254 |
{
|
| 255 |
"datetime": "2023-07-11 9:21 AM",
|
| 256 |
+
"theme": "lost items",
|
| 257 |
"modifier": 0,
|
| 258 |
"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.",
|
| 259 |
"person": "Inez Escandon",
|
|
|
|
| 262 |
},
|
| 263 |
{
|
| 264 |
"datetime": "2023-07-11 9:21 AM",
|
| 265 |
+
"theme": "the topic that",
|
| 266 |
"modifier": 0,
|
| 267 |
"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\u2019s Choice and Judges\u2019 Choice as winners You do not need to be present during the judging time to enter. Bakeoff (2).png",
|
| 268 |
"person": "Ahmad Shareef",
|
| 269 |
"postId": 33,
|
| 270 |
+
"themeSimilarity": 1
|
| 271 |
},
|
| 272 |
{
|
| 273 |
"datetime": "2023-07-11 9:21 AM",
|
| 274 |
+
"theme": "parking validation",
|
| 275 |
"modifier": 0,
|
| 276 |
"message": "@here Hello folks! B.R.A.D is working again if anyone in the office needs parking validation :brad-badge::blue_car:",
|
| 277 |
"person": "Alexa De La Garza",
|
| 278 |
"postId": 34,
|
| 279 |
+
"themeSimilarity": 1
|
| 280 |
},
|
| 281 |
{
|
| 282 |
"datetime": "2023-07-11 9:21 AM",
|
|
|
|
| 307 |
},
|
| 308 |
{
|
| 309 |
"datetime": "2023-07-11 9:21 AM",
|
| 310 |
+
"theme": "food",
|
| 311 |
"modifier": 0,
|
| 312 |
"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)",
|
| 313 |
"person": "Ahmad Shareef",
|
| 314 |
"postId": 38,
|
| 315 |
+
"themeSimilarity": 1
|
| 316 |
},
|
| 317 |
{
|
| 318 |
"datetime": "2023-07-11 9:21 AM",
|
| 319 |
+
"theme": "lunch and learn",
|
| 320 |
"modifier": 0,
|
| 321 |
"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.",
|
| 322 |
"person": "Ahmad Shareef",
|
| 323 |
"postId": 39,
|
| 324 |
+
"themeSimilarity": 1
|
| 325 |
},
|
| 326 |
{
|
| 327 |
"datetime": "2023-07-11 9:21 AM",
|
| 328 |
+
"theme": "lunch-and-learn",
|
| 329 |
"modifier": 0,
|
| 330 |
"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)",
|
| 331 |
"person": "Robert Hailey",
|
| 332 |
"postId": 40,
|
| 333 |
+
"themeSimilarity": 1
|
| 334 |
},
|
| 335 |
{
|
| 336 |
"datetime": "2023-07-11 9:21 AM",
|
| 337 |
+
"theme": "celebration",
|
| 338 |
"modifier": 0,
|
| 339 |
"message": "Also happening tomorrow~ Wednesday June 7th at 5pm sharp is BUILD KARAOKE NIGHT!!!! :celebrate::micdrop-boom::dancefloor: @here",
|
| 340 |
"person": "Linh Ta",
|
| 341 |
"postId": 41,
|
| 342 |
+
"themeSimilarity": 1
|
| 343 |
+
},
|
| 344 |
+
{
|
| 345 |
+
"datetime": "2023-07-11 9:21 AM",
|
| 346 |
+
"theme": "wfww",
|
| 347 |
+
"modifier": 0,
|
| 348 |
+
"message": "I'll miss WFWW with a cough and a fever :face_with_thermometer:",
|
| 349 |
+
"person": "jmoney",
|
| 350 |
+
"postId": 42,
|
| 351 |
+
"themeSimilarity": "1.0"
|
| 352 |
+
},
|
| 353 |
+
{
|
| 354 |
+
"datetime": "2023-07-11 9:21 AM",
|
| 355 |
+
"theme": "technical issue",
|
| 356 |
+
"modifier": 0,
|
| 357 |
+
"message": "BRAD is down this morning.",
|
| 358 |
+
"person": "Steven Murray",
|
| 359 |
+
"postId": 43,
|
| 360 |
"themeSimilarity": "1.0"
|
| 361 |
},
|
| 362 |
{
|
| 363 |
"datetime": "2023-07-11 9:21 AM",
|
| 364 |
+
"theme": "pok\u00e9mon go",
|
| 365 |
"modifier": 0,
|
| 366 |
"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.",
|
| 367 |
"person": "Melanie Halbert",
|
|
|
|
| 388 |
},
|
| 389 |
{
|
| 390 |
"datetime": "2023-07-11 9:21 AM",
|
| 391 |
+
"theme": "john",
|
| 392 |
"modifier": 0,
|
| 393 |
"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!",
|
| 394 |
"person": "Doug Bowen",
|
| 395 |
"postId": 49,
|
| 396 |
+
"themeSimilarity": 1
|
| 397 |
},
|
| 398 |
{
|
| 399 |
"datetime": "2023-07-11 9:21 AM",
|
| 400 |
+
"theme": "food",
|
| 401 |
"modifier": 0,
|
| 402 |
"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).",
|
| 403 |
"person": "Ahmad Shareef",
|
| 404 |
"postId": 50,
|
| 405 |
+
"themeSimilarity": 1
|
| 406 |
},
|
| 407 |
{
|
| 408 |
"datetime": "2023-07-11 9:21 AM",
|
| 409 |
+
"theme": "food",
|
| 410 |
"modifier": 0,
|
| 411 |
"message": "I\u2019ll take a Bangkok bowl!",
|
| 412 |
"person": "Phillip Nguyen",
|
| 413 |
"postId": 51,
|
| 414 |
+
"themeSimilarity": 1
|
| 415 |
},
|
| 416 |
{
|
| 417 |
"datetime": "2023-07-11 9:21 AM",
|
| 418 |
+
"theme": "anniversary",
|
| 419 |
"modifier": 0,
|
| 420 |
"message": "Happy 6 year anniversary to the formation of Houston :_b: QE :celebrate-all: @Logan Le @Blake Bryce @King Khan",
|
| 421 |
"person": "Blake Bryce",
|
| 422 |
"postId": 52,
|
| 423 |
+
"themeSimilarity": 1
|
| 424 |
},
|
| 425 |
{
|
| 426 |
"datetime": "2023-07-11 9:21 AM",
|
| 427 |
+
"theme": "builders",
|
| 428 |
"modifier": 0,
|
| 429 |
"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\u2019ll forward you the invite. Also, feel free to just stop by and help out. Hope to see you Friday! (edited)",
|
| 430 |
"person": "Michelle Francisco",
|
| 431 |
"postId": 53,
|
| 432 |
+
"themeSimilarity": 1
|
| 433 |
},
|
| 434 |
{
|
| 435 |
"datetime": "2023-07-11 9:21 AM",
|
| 436 |
+
"theme": "lunch and learn",
|
| 437 |
"modifier": 0,
|
| 438 |
"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.",
|
| 439 |
"person": "Ahmad Shareef",
|
| 440 |
"postId": 54,
|
| 441 |
+
"themeSimilarity": 1
|
| 442 |
},
|
| 443 |
{
|
| 444 |
"datetime": "2023-07-11 9:21 AM",
|
| 445 |
+
"theme": "parking",
|
| 446 |
"modifier": 0,
|
| 447 |
"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",
|
| 448 |
"person": "Ahmad Shareef",
|
| 449 |
"postId": 55,
|
| 450 |
+
"themeSimilarity": 1
|
| 451 |
},
|
| 452 |
{
|
| 453 |
"datetime": "2023-07-11 9:21 AM",
|
| 454 |
+
"theme": "builders",
|
| 455 |
"modifier": 0,
|
| 456 |
"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!",
|
| 457 |
"person": "Ethan Bowen",
|
| 458 |
"postId": 57,
|
| 459 |
+
"themeSimilarity": 1
|
| 460 |
},
|
| 461 |
{
|
| 462 |
"datetime": "2023-07-11 9:21 AM",
|
| 463 |
+
"theme": "happy hour",
|
| 464 |
"modifier": 0,
|
| 465 |
"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:",
|
| 466 |
"person": "Linh Ta",
|
|
|
|
| 483 |
"message": "replied to a thread: Tell me this isn\u2019t relatable :joy:\u2026 A classic, alongside this one: https://www.youtube.com/watch?v=y8OnoxKotPQ",
|
| 484 |
"person": "Stefano",
|
| 485 |
"postId": 60,
|
| 486 |
+
"themeSimilarity": 1
|
| 487 |
},
|
| 488 |
{
|
| 489 |
"datetime": "2023-07-11 9:21 AM",
|
| 490 |
+
"theme": "anniversary",
|
| 491 |
"modifier": 0,
|
| 492 |
"message": "Happy 713 Day! image.png image.png",
|
| 493 |
"person": "John Flaherty",
|
| 494 |
"postId": 61,
|
| 495 |
+
"themeSimilarity": 1
|
| 496 |
},
|
| 497 |
{
|
| 498 |
"datetime": "2023-07-11 9:21 AM",
|
| 499 |
+
"theme": "celebration",
|
| 500 |
"modifier": 0,
|
| 501 |
"message": "Happy birthday @Ray Lopez! H-Town and Prime days are Ray\u2019s Day. balloons.jpeg balloons.jpeg",
|
| 502 |
"person": "Michelle Francisco",
|
| 503 |
"postId": 64,
|
| 504 |
+
"themeSimilarity": 1
|
| 505 |
},
|
| 506 |
{
|
| 507 |
"datetime": "2023-07-11 9:21 AM",
|
| 508 |
+
"theme": "l&l",
|
| 509 |
"modifier": 0,
|
| 510 |
"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!",
|
| 511 |
"person": "Keri W",
|
| 512 |
"postId": 65,
|
| 513 |
+
"themeSimilarity": 1
|
| 514 |
},
|
| 515 |
{
|
| 516 |
"datetime": "2023-07-11 9:21 AM",
|
| 517 |
+
"theme": "bring your kids",
|
| 518 |
"modifier": 0,
|
| 519 |
"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!",
|
| 520 |
"person": "Michelle Francisco",
|
| 521 |
"postId": 66,
|
| 522 |
+
"themeSimilarity": 1
|
| 523 |
},
|
| 524 |
{
|
| 525 |
"datetime": "2023-07-11 9:21 AM",
|
| 526 |
+
"theme": "food",
|
| 527 |
"modifier": 0,
|
| 528 |
"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",
|
| 529 |
"person": "Doug Bowen",
|
| 530 |
"postId": 67,
|
| 531 |
+
"themeSimilarity": 1
|
| 532 |
},
|
| 533 |
{
|
| 534 |
"datetime": "2023-07-11 9:21 AM",
|
| 535 |
+
"theme": "milk challenge",
|
| 536 |
"modifier": 0,
|
| 537 |
"message": "Is it time for Blake to take the Milk Challenge?!?",
|
| 538 |
"person": "Srijaya Suresh",
|
|
|
|
| 541 |
},
|
| 542 |
{
|
| 543 |
"datetime": "2023-07-11 9:21 AM",
|
| 544 |
+
"theme": "food",
|
| 545 |
"modifier": 0,
|
| 546 |
"message": "Did someone say MILK? @BlakeBryce?!?",
|
| 547 |
"person": "Michelle Francisco",
|
|
|
|
| 550 |
},
|
| 551 |
{
|
| 552 |
"datetime": "2023-07-11 9:21 AM",
|
| 553 |
+
"theme": "diet",
|
| 554 |
"modifier": 0,
|
| 555 |
"message": "Never drank milk.",
|
| 556 |
"person": "Blake Bryce",
|
|
|
|
| 559 |
},
|
| 560 |
{
|
| 561 |
"datetime": "2023-07-11 9:21 AM",
|
| 562 |
+
"theme": "diet",
|
| 563 |
"modifier": 0,
|
| 564 |
"message": "Blake should drink milk.",
|
| 565 |
"person": "Kim Adams",
|
| 566 |
"postId": 72,
|
| 567 |
+
"themeSimilarity": 1
|
| 568 |
}
|
| 569 |
]
|
slack_processing/data/topics_with_synonyms.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
['l&l', 'lunch and learn', 'tour', 'builders', 'anniversary', 'happy hour', 'diet', 'l and l', 'parking validation', 'food', 'lunch & learn', "father's day", 'shoes', 'severe weather', 'john', 'lost items', 'cow appreciation day', 'wfww', 'technical issue', 'safety', 'maintenance', 'sunburn', 'slalomversary', 'parking', 'milk challenge', 'etiquette', 'time sheets', 'error handling', 'pokémon go', 'bc tour', 'identity', 'session logout', 'celebration', 'challenge', 'dungeons and dragons', 'availability', 'lunch-and-learn', 'd&d', 'build center tour', 'relatable joy']
|
slack_processing/data/unknown_themes.json
CHANGED
|
@@ -35,24 +35,6 @@
|
|
| 35 |
"postId": 25,
|
| 36 |
"themeSimilarity": 0
|
| 37 |
},
|
| 38 |
-
{
|
| 39 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 40 |
-
"theme": "Unknown",
|
| 41 |
-
"modifier": 0,
|
| 42 |
-
"message": "I'll miss WFWW with a cough and a fever :face_with_thermometer:",
|
| 43 |
-
"person": "jmoney",
|
| 44 |
-
"postId": 42,
|
| 45 |
-
"themeSimilarity": 0
|
| 46 |
-
},
|
| 47 |
-
{
|
| 48 |
-
"datetime": "2023-07-11 9:21 AM",
|
| 49 |
-
"theme": "Unknown",
|
| 50 |
-
"modifier": 0,
|
| 51 |
-
"message": "BRAD is down this morning.",
|
| 52 |
-
"person": "Steven Murray",
|
| 53 |
-
"postId": 43,
|
| 54 |
-
"themeSimilarity": 0
|
| 55 |
-
},
|
| 56 |
{
|
| 57 |
"datetime": "2023-07-11 9:21 AM",
|
| 58 |
"theme": "Unknown",
|
|
|
|
| 35 |
"postId": 25,
|
| 36 |
"themeSimilarity": 0
|
| 37 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 38 |
{
|
| 39 |
"datetime": "2023-07-11 9:21 AM",
|
| 40 |
"theme": "Unknown",
|
slack_processing/slack_data_prep.py
CHANGED
|
@@ -29,6 +29,7 @@ SIMILARITY_THRESHOLD = 0.6
|
|
| 29 |
INPUT_PATH = "slack_processing/data/slack.json"
|
| 30 |
OUTPUT_THEME_PATH = "slack_processing/data/themes.json"
|
| 31 |
OUTPUT_UNKNOWN_THEME_PATH = "slack_processing/data/unknown_themes.json"
|
|
|
|
| 32 |
OUTPUT_THEME_EMBEDDINGS_PATH = "slack_processing/data/slack_with_theme_embeddings.json"
|
| 33 |
TOPIC_TEXT_PATH="slack_processing/data/topics.txt"
|
| 34 |
TOPIC_TEXT_OUTPUT_PATH="slack_processing/data/topics_with_synonyms.txt"
|
|
@@ -95,6 +96,12 @@ def WriteUnknownThemes():
|
|
| 95 |
with open(OUTPUT_UNKNOWN_THEME_PATH, "w") as json_file:
|
| 96 |
json.dump(unknown_themes_dict, json_file, indent=4)
|
| 97 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
def ProcessDateTime(date_time):
|
| 99 |
date_time = dt(2023, 7, 11, 9, 21)
|
| 100 |
formatted_time = date_time.strftime("%Y-%m-%d %-I:%M %p")
|
|
@@ -118,17 +125,17 @@ def ConcatenateMatchAndCanonicals(message):
|
|
| 118 |
global game_topics
|
| 119 |
game_topics_str = ', '.join(game_topics.all_words())
|
| 120 |
print("*** game_topics_str: ", game_topics_str)
|
| 121 |
-
prompt_message = f"Find a
|
| 122 |
print("*** prompt_message for first round is: ", prompt_message)
|
| 123 |
return prompt_message
|
| 124 |
|
| 125 |
def ConcatenateMessageAndCanonicals(message):
|
| 126 |
-
prompt_message = f"Summarize this message
|
| 127 |
print("*** prompt_message for second round is: ", prompt_message)
|
| 128 |
return prompt_message
|
| 129 |
|
| 130 |
def ConcatenateMessageAndTopics(message):
|
| 131 |
-
prompt_message = f"Be creative. We need 1-2 word summarization for this message: '{message}'. If you aren't able to summarize,
|
| 132 |
print("*** prompt_message for third round is: ", prompt_message)
|
| 133 |
return prompt_message
|
| 134 |
|
|
@@ -136,20 +143,18 @@ def ProcessMessageWrapper(datetime, message, replies, person, id):
|
|
| 136 |
global themes, unknown_themes
|
| 137 |
theme = ProcessMessage(datetime, message, replies, person, id)
|
| 138 |
print(f"Theme id: {id}, theme:{theme.theme}, modifier:{theme.modifier}, person:{theme.person}, message:{theme.message}, similarity:{theme.themeSimilarity}")
|
| 139 |
-
|
| 140 |
if(theme.theme=='Unknown' or theme.themeSimilarity==0):
|
| 141 |
unknown_themes.append(theme.to_dict())
|
| 142 |
WriteUnknownThemes()
|
| 143 |
-
|
| 144 |
else:
|
| 145 |
themes.append(theme.to_dict())
|
| 146 |
WriteThemes()
|
| 147 |
-
|
| 148 |
return theme
|
| 149 |
|
| 150 |
# Update the process_message function
|
| 151 |
def ProcessMessage(datetime, message, replies, person, id):
|
| 152 |
global game_topics
|
|
|
|
| 153 |
#round 1, look for exact match
|
| 154 |
completion=CompletionEngine(SYSTEM_MESSAGE,ConcatenateMatchAndCanonicals(CleanMessage(message)),TOPIC_TOKENS, NUM_RESULTS, TEMP, TOPIC_MODEL,TOP_P)
|
| 155 |
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(',')))
|
|
@@ -157,92 +162,93 @@ def ProcessMessage(datetime, message, replies, person, id):
|
|
| 157 |
#round 2, look for 1-2 summary, like topics
|
| 158 |
completion=CompletionEngine(SYSTEM_MESSAGE,ConcatenateMessageAndCanonicals(CleanMessage(message)),TOPIC_TOKENS, NUM_RESULTS1, TEMP1, TOPIC_MODEL,TOP_P1)
|
| 159 |
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(',')))
|
|
|
|
| 160 |
if all(choice == "Unknown" for choice in options):
|
| 161 |
#round 3, look for 1-2 summary, wild card
|
| 162 |
completion=CompletionEngine(SYSTEM_MESSAGE,ConcatenateMessageAndTopics(CleanMessage(message)),TOPIC_TOKENS2, NUM_RESULTS2, TEMP2, TOPIC_MODEL,TOP_P2)
|
| 163 |
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(',')))
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 184 |
if exact_match:
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
break
|
| 188 |
-
topic_similarities.append(similarity_score)
|
| 189 |
-
if exact_match:
|
| 190 |
-
break
|
| 191 |
-
similarity_scores.append(topic_similarities)
|
| 192 |
-
else:
|
| 193 |
-
unidentified_topic_count+=1
|
| 194 |
-
counter+=1
|
| 195 |
-
if len(similarity_scores) > 0 and not exact_match:
|
| 196 |
-
most_similar_score=0
|
| 197 |
-
# Aggregate the similarity scores for each generated topic
|
| 198 |
-
similarity_scores = np.array(similarity_scores)
|
| 199 |
-
aggregated_scores = np.sum(similarity_scores, axis=1)
|
| 200 |
-
# Find the index of the topic with the highest aggregated score
|
| 201 |
-
most_similar_index = np.argmax(aggregated_scores)
|
| 202 |
-
most_similar_topic_index = generated_topics_indices[most_similar_index]
|
| 203 |
-
most_similar_topic = options[most_similar_topic_index].lower()
|
| 204 |
-
most_similar_score=similarity_scores[most_similar_index]
|
| 205 |
-
print("Most similar topic:", most_similar_topic, "with score:", most_similar_score)
|
| 206 |
-
|
| 207 |
-
if most_similar_topic != "Unknown":
|
| 208 |
-
#check if it's in all topics
|
| 209 |
-
if most_similar_topic in game_topics.all_words():
|
| 210 |
-
#if it's in all words, and a synonym, set topic to canonical, otherwise set to canonical
|
| 211 |
-
if most_similar_topic in game_topics.all_synonyms():
|
| 212 |
-
most_similar_topic = game_topics.canonical_for_synonym(most_similar_topic)
|
| 213 |
-
else:
|
| 214 |
-
most_similar_topic = game_topics.get_canonical(most_similar_topic)
|
| 215 |
-
most_similar_score=1.0
|
| 216 |
-
else:
|
| 217 |
-
#not in all words, look for similar topics, see if it's like something in list
|
| 218 |
-
highest_similarity = 0
|
| 219 |
-
best_match = None
|
| 220 |
-
for known_word in game_topics.all_words():
|
| 221 |
-
#compute similarity against all topics
|
| 222 |
-
similarity_score = float(CompareTopicToGameTopic(most_similar_topic, known_word))
|
| 223 |
-
print("\tsimilarity_score: "+ str(similarity_score)+ " for known_word: "+ known_word)
|
| 224 |
-
if similarity_score > highest_similarity:
|
| 225 |
-
highest_similarity = similarity_score
|
| 226 |
-
best_match = known_word.lower()
|
| 227 |
-
print("\t>>>best_match found :", best_match, " with highest_similarity:", str(highest_similarity))
|
| 228 |
-
|
| 229 |
-
print("if we found similar topic, use it")
|
| 230 |
-
if highest_similarity > SIMILARITY_THRESHOLD:
|
| 231 |
-
if(best_match in game_topics.all_synonyms()):
|
| 232 |
-
most_similar_topic = game_topics.canonical_for_synonym(best_match)
|
| 233 |
-
else:
|
| 234 |
-
most_similar_topic = game_topics.get_canonical(best_match)
|
| 235 |
-
#update most similar socre
|
| 236 |
-
most_similar_score=highest_similarity
|
| 237 |
else:
|
| 238 |
-
|
| 239 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 240 |
most_similar_score=1.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 241 |
|
| 242 |
-
|
| 243 |
-
|
|
|
|
|
|
|
| 244 |
else:
|
| 245 |
-
|
|
|
|
|
|
|
|
|
|
| 246 |
return theme_obj
|
| 247 |
|
| 248 |
def CompareTopicToGameTopic(topic, game_topic):
|
|
|
|
| 29 |
INPUT_PATH = "slack_processing/data/slack.json"
|
| 30 |
OUTPUT_THEME_PATH = "slack_processing/data/themes.json"
|
| 31 |
OUTPUT_UNKNOWN_THEME_PATH = "slack_processing/data/unknown_themes.json"
|
| 32 |
+
|
| 33 |
OUTPUT_THEME_EMBEDDINGS_PATH = "slack_processing/data/slack_with_theme_embeddings.json"
|
| 34 |
TOPIC_TEXT_PATH="slack_processing/data/topics.txt"
|
| 35 |
TOPIC_TEXT_OUTPUT_PATH="slack_processing/data/topics_with_synonyms.txt"
|
|
|
|
| 96 |
with open(OUTPUT_UNKNOWN_THEME_PATH, "w") as json_file:
|
| 97 |
json.dump(unknown_themes_dict, json_file, indent=4)
|
| 98 |
|
| 99 |
+
def WriteTopics():
|
| 100 |
+
global game_topics
|
| 101 |
+
print(dir(game_topics))
|
| 102 |
+
with open(TOPIC_TEXT_OUTPUT_PATH, "w") as text_file:
|
| 103 |
+
text_file.write(str(game_topics.all_words()))
|
| 104 |
+
|
| 105 |
def ProcessDateTime(date_time):
|
| 106 |
date_time = dt(2023, 7, 11, 9, 21)
|
| 107 |
formatted_time = date_time.strftime("%Y-%m-%d %-I:%M %p")
|
|
|
|
| 125 |
global game_topics
|
| 126 |
game_topics_str = ', '.join(game_topics.all_words())
|
| 127 |
print("*** game_topics_str: ", game_topics_str)
|
| 128 |
+
prompt_message = f"Find a topic that represents this message '{message}' from this set of topics {{{game_topics_str}}}. Your reply should be the topic. If you're not able to find a match, reply 'Unknown'"
|
| 129 |
print("*** prompt_message for first round is: ", prompt_message)
|
| 130 |
return prompt_message
|
| 131 |
|
| 132 |
def ConcatenateMessageAndCanonicals(message):
|
| 133 |
+
prompt_message = f"Summarize this message '{message}' in 1-2 words. We're looking for a representative category to cluster messages. Identify subject or activity. Your reply should be one or two words representing the topic. If you're not able to summarize, reply 'Unknown'"
|
| 134 |
print("*** prompt_message for second round is: ", prompt_message)
|
| 135 |
return prompt_message
|
| 136 |
|
| 137 |
def ConcatenateMessageAndTopics(message):
|
| 138 |
+
prompt_message = f"Be creative. We need 1-2 word summarization for this message: '{message}'. If you aren't able to summarize, Identify the subject or direct object. Your reply should be one or two words representing the topic. As an absolute last resort, reply 'Unknown'"
|
| 139 |
print("*** prompt_message for third round is: ", prompt_message)
|
| 140 |
return prompt_message
|
| 141 |
|
|
|
|
| 143 |
global themes, unknown_themes
|
| 144 |
theme = ProcessMessage(datetime, message, replies, person, id)
|
| 145 |
print(f"Theme id: {id}, theme:{theme.theme}, modifier:{theme.modifier}, person:{theme.person}, message:{theme.message}, similarity:{theme.themeSimilarity}")
|
|
|
|
| 146 |
if(theme.theme=='Unknown' or theme.themeSimilarity==0):
|
| 147 |
unknown_themes.append(theme.to_dict())
|
| 148 |
WriteUnknownThemes()
|
|
|
|
| 149 |
else:
|
| 150 |
themes.append(theme.to_dict())
|
| 151 |
WriteThemes()
|
|
|
|
| 152 |
return theme
|
| 153 |
|
| 154 |
# Update the process_message function
|
| 155 |
def ProcessMessage(datetime, message, replies, person, id):
|
| 156 |
global game_topics
|
| 157 |
+
topMatch = True
|
| 158 |
#round 1, look for exact match
|
| 159 |
completion=CompletionEngine(SYSTEM_MESSAGE,ConcatenateMatchAndCanonicals(CleanMessage(message)),TOPIC_TOKENS, NUM_RESULTS, TEMP, TOPIC_MODEL,TOP_P)
|
| 160 |
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 |
#round 2, look for 1-2 summary, like topics
|
| 163 |
completion=CompletionEngine(SYSTEM_MESSAGE,ConcatenateMessageAndCanonicals(CleanMessage(message)),TOPIC_TOKENS, NUM_RESULTS1, TEMP1, TOPIC_MODEL,TOP_P1)
|
| 164 |
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(',')))
|
| 165 |
+
topMatch = False
|
| 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 |
+
topMatch = False
|
| 171 |
+
print("---options: ", options, " topMatch: ",topMatch)
|
| 172 |
+
if not topMatch:
|
| 173 |
+
similarity_scores = []
|
| 174 |
+
generated_topics_indices = []
|
| 175 |
+
counter=0
|
| 176 |
+
exact_match=False
|
| 177 |
+
most_similar_topic = "Unknown"
|
| 178 |
+
unidentified_topic_count=0
|
| 179 |
+
theme_obj=None
|
| 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 = ComputeSimilarity(generated_tokens_str, reference_tokens_str)
|
| 190 |
+
if exact_match:
|
| 191 |
+
most_similar_topic = reference_topic
|
| 192 |
+
most_similar_score = 1.0
|
| 193 |
+
break
|
| 194 |
+
topic_similarities.append(similarity_score)
|
| 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
|
| 204 |
+
similarity_scores = np.array(similarity_scores)
|
| 205 |
+
aggregated_scores = np.sum(similarity_scores, axis=1)
|
| 206 |
+
most_similar_index = np.argmax(aggregated_scores)
|
| 207 |
+
most_similar_topic_index = generated_topics_indices[most_similar_index]
|
| 208 |
+
most_similar_topic = options[most_similar_topic_index].lower()
|
| 209 |
+
most_similar_score=similarity_scores[most_similar_index]
|
| 210 |
+
|
| 211 |
+
if most_similar_topic != "Unknown":
|
| 212 |
+
#check if it's in all topics
|
| 213 |
+
if most_similar_topic in game_topics.all_words():
|
| 214 |
+
if most_similar_topic in game_topics.all_synonyms():
|
| 215 |
+
most_similar_topic = game_topics.canonical_for_synonym(most_similar_topic)
|
| 216 |
+
else:
|
| 217 |
+
most_similar_topic = game_topics.get_canonical(most_similar_topic)
|
| 218 |
most_similar_score=1.0
|
| 219 |
+
else:
|
| 220 |
+
#not in all words, look for similar topics, see if it's like something in list
|
| 221 |
+
highest_similarity = 0
|
| 222 |
+
best_match = None
|
| 223 |
+
for known_word in game_topics.all_words():
|
| 224 |
+
#compute similarity against all topics
|
| 225 |
+
similarity_score = float(CompareTopicToGameTopic(most_similar_topic, known_word))
|
| 226 |
+
print("\tsimilarity_score: "+ str(similarity_score)+ " for known_word: "+ known_word)
|
| 227 |
+
if similarity_score > highest_similarity:
|
| 228 |
+
highest_similarity = similarity_score
|
| 229 |
+
best_match = known_word.lower()
|
| 230 |
+
print("\t>>>best_match found :", best_match, " with highest_similarity:", str(highest_similarity))
|
| 231 |
+
|
| 232 |
+
print("if we found similar topic, use it")
|
| 233 |
+
if highest_similarity > SIMILARITY_THRESHOLD:
|
| 234 |
+
if(best_match in game_topics.all_synonyms()):
|
| 235 |
+
most_similar_topic = game_topics.canonical_for_synonym(best_match)
|
| 236 |
+
else:
|
| 237 |
+
most_similar_topic = game_topics.get_canonical(best_match)
|
| 238 |
+
most_similar_score=highest_similarity
|
| 239 |
+
else:
|
| 240 |
+
game_topics.enqueue(most_similar_topic)
|
| 241 |
+
most_similar_score=1.0
|
| 242 |
|
| 243 |
+
theme_obj = Theme(datetime=datetime, theme=most_similar_topic, modifier=0, person=person, postId=id, message=message, similarity=str(most_similar_score))
|
| 244 |
+
print(f"{id} From message:'{message}' to theme: {most_similar_topic}")
|
| 245 |
+
else:
|
| 246 |
+
theme_obj = Theme(datetime=datetime, theme='Unknown', modifier=0, person=person, postId=id, message=message, similarity=0)
|
| 247 |
else:
|
| 248 |
+
most_similar_topic = options[0].lower()
|
| 249 |
+
theme_obj = Theme(datetime=datetime, theme=most_similar_topic, modifier=0, person=person, postId=id, message=message, similarity=1)
|
| 250 |
+
print("\n**_*_*_* in else: theme_obj: ", theme_obj.to_dict())
|
| 251 |
+
WriteTopics()
|
| 252 |
return theme_obj
|
| 253 |
|
| 254 |
def CompareTopicToGameTopic(topic, game_topic):
|