title: Semantrix
emoji: 🔠
colorFrom: indigo
colorTo: pink
sdk: gradio
sdk_version: 5.1.0
app_file: app.py
pinned: false
license: other
Semantrix Game
This repository contains the implementation of the Semantrix game, a word guessing game using word embeddings. The game supports multiple languages (Spanish and English) and can be configured to use either a Word2Vec model or a SentenceTransformer model for word embeddings.
Modules
app.py
This module defines a Gradio-based web application for the Semantrix game. The application allows users to play the game in either Spanish or English, using different embedding models for word similarity.
Functions
convert_to_markdown_centered(text)
: Converts text to a centered markdown format for displaying game history and last attempt.- Parameters:
text (str)
: The text to be converted.
- Returns:
str
: The centered markdown formatted text.
- Parameters:
reset(difficulty, lang, model)
: Resets the game state based on the selected difficulty, language, and model.- Parameters:
difficulty
: The selected difficulty level.lang
: The selected language.model
: The selected embedding model.
- Returns:
list
: A list of initial output components for the UI.
- Parameters:
change(state, inp)
: Changes the game state by incrementing the state variable.- Parameters:
state
: The current game state.inp
: The user input.
- Returns:
list
: A list containing the updated state and input component.
- Parameters:
update(state, radio, inp, hint)
: Updates the game state and UI components based on the current state and user inputs.- Parameters:
state
: The current game state.radio
: The radio input component.inp
: The user input.hint
: The hint state.
- Returns:
list
: A list of updated output components for the UI.
- Parameters:
game.py
This module defines the Semantrix class, which implements a word guessing game using word embeddings. The game can be configured to use either a Word2Vec model or a SentenceTransformer model for word embeddings. The game supports multiple languages and difficulty levels.
Classes
Semantrix
: A class that implements the Semantrix word guessing game.- Methods:
__init__(self, lang=0, model_type="SentenceTransformer")
: Initializes the Semantrix game with the specified language and model type.prepare_game(self, difficulty)
: Prepares the game with the selected difficulty level.gen_rank(self, repeated)
: Generates the ranking file based on the scores.play_game(self, word)
: Plays the game with the selected word and returns feedback.curiosity(self)
: Generates a curiosity hint about the secret word once the game is over.
- Methods:
hints.py
This module provides functions to generate dynamic hints and curiosities about a secret word using language models (LLMs).
Functions
hint(secret, n, model, last_hint, lang, Config)
: Generates a dynamic hint based on the secret word and the number of hints given.- Parameters:
secret (str)
: The secret word.n (int)
: The number of hints already given.model
: The sentence transformer model used for encoding.last_hint (int)
: The index of the last hint given.lang (int)
: The language code (0 for Spanish, 1 for English).Config
: Configuration object containing hint templates.
- Returns:
tuple
: A tuple containing the generated hint (str), the updated number of hints (int), and the index of the last hint given (int).
- Parameters:
curiosity(secret, Config)
: Generates a curiosity about the secret word.- Parameters:
secret (str)
: The secret word.Config
: Configuration object containing the curiosity template.
- Returns:
str
: The generated curiosity.
- Parameters:
ireplace(old, new, text)
: Replaces all occurrences of a substring in a string, case-insensitively.- Parameters:
old (str)
: The substring to be replaced.new (str)
: The substring to replace with.text (str)
: The original string.
- Returns:
str
: The modified string with all occurrences of the old substring replaced by the new substring.
- Parameters:
How to Run
- Clone the repository.
- Install the required dependencies.
- Run the
app.py
script to launch the Gradio web application.
Dependencies
- Gradio
- OpenAI
- SentenceTransformers
- Gensim
- NumPy
License
This project is licensed under the MIT License.