/embedding_game

Puzzle made using embeddings

Primary LanguagePython

Jogo de Palavrinhas

Como Jogar O jogo sorteia uma palavra e daí e cria uma charada para você tentar adivinhar qual palavra é. Quanto mais longe da resposta certa maior a distância. O Jogo calcula a distância entre as palavras. De acordo com seu contexto de uso gramatical. As palavras são sorteadas aleatoriamente de um arquivo de palavras.

Tecnicamente: Primeiro o jogo sorteia a palavra, para não vir palavras muito difíceis foi usado a biblioteca mac_morpho (que possui uma série de textos em português) do NLTK, e calculado frequência das palavras e obtido as mais usadas. O Jogo usa embeddings de palavras, pré treinados pelo centro de linguística da USP. Utiliza usa a similaridade L2 para calcular os K vizinhos mais próximos. Para saber mais da biblioteca de embeddings nilc.icmc.usp.br

Tecnologias Utilizadas

  • Streamlit: Framework front-end para construir aplicações web interativas com Python.
  • Pandas: Biblioteca para manipulação e análise de dados.
  • FAISS: Biblioteca para busca de similaridade eficiente e clustering de vetores densos.
  • NLTK: Toolkit de Processamento de Linguagem Natural para tarefas de processamento de linguagem.
  • Groq: Plataforma de cloud que fornece API para uso de modelos de LLM fundacionais.

Funcionalidades do Jogo

  1. Palavra Secreta Aleatória: Uma palavra secreta é selecionada aleatoriamente de uma lista predefinida de palavras.
  2. Geração de Pistas: Cada palavra secreta vem com uma pista semelhante a uma charada para ajudar na adivinhação.
  3. Cálculo de Distância: Utiliza embeddings de palavras e a métrica de distância L2 para determinar quão próxima a palavra adivinhada está da palavra secreta.
  4. Sistema de Dicas: Fornece dicas mostrando palavras vizinhas com base na similaridade com a palavra secreta.
  5. Estado Persistente: Mantém o controle das tentativas do usuário e permite reiniciar o jogo com uma nova palavra secreta.

Como rodar

Para criação dos índices de palavras foi usado o FAISS, foi usado um embedding pré-treinado pelo [NILC](# http://www.nilc.icmc.usp.br/embeddings) da USP, foi usado a versão GloVe de 50 dimensões, e importado diretamente para o FAISS, para manter a relação entre palavras e embedding foi criado um arquivo pickle.

  • data.py: Script para gerar o arquivo de index.faiss e o arquivo pickel
  • backend.py: contém as funções para rodar a aplicação
  • app.py: Front End que usa o StreamLit
  1. Faça o clone do repositório
git clone <repository_url>
cd <repository_name>
  1. Instale as dependências
pip install -r requirements.txt
  1. Baixe o arquivo de embeddings na página do [NILC](http://www.nilc.icmc.usp.br/embeddings
  2. Rode o script backend.py para gerar os dados para aplicação.
  3. Crie um chave de api no Groq Cloud, e salve em um arquivo .env, com o nome GROQ_API_KEY
  4. Rode o Aplicativo com o streamlit
streamlit run app.py
  1. Acesso o jogo pela url http://localhost:8501.

Screenshots

Home page

Vizinhos

Virtoria

License

This project is licensed under the MIT License - see the LICENSE file for details.

Referencias