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
- 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.
- Palavra Secreta Aleatória: Uma palavra secreta é selecionada aleatoriamente de uma lista predefinida de palavras.
- Geração de Pistas: Cada palavra secreta vem com uma pista semelhante a uma charada para ajudar na adivinhação.
- 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.
- Sistema de Dicas: Fornece dicas mostrando palavras vizinhas com base na similaridade com a palavra secreta.
- Estado Persistente: Mantém o controle das tentativas do usuário e permite reiniciar o jogo com uma nova palavra secreta.
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
- Faça o clone do repositório
git clone <repository_url>
cd <repository_name>
- Instale as dependências
pip install -r requirements.txt
- Baixe o arquivo de embeddings na página do [NILC](http://www.nilc.icmc.usp.br/embeddings
- Rode o script backend.py para gerar os dados para aplicação.
- Crie um chave de api no Groq Cloud, e salve em um arquivo .env, com o nome
GROQ_API_KEY
- Rode o Aplicativo com o streamlit
streamlit run app.py
- Acesso o jogo pela url
http://localhost:8501
.
This project is licensed under the MIT License - see the LICENSE
file for details.