Views
No views yet
Limy-basique 🚀
Limy-basique est un modèle de classification de texte conçu pour différencier les questions sur les capitales de celles sur les animaux. Entraîné sur le jeu de données Clem27sey/Nacid, ce modèle a été entièrement construit from scratch par Clemylia. Il est idéal pour les tâches de classification binaire et peut être utilisé en tant que base pour des projets similaires.0 : Questions sur les Animaux 🐾1 : Questions sur les Capitales 🏙️1import torch
2import torch.nn as nn
3
4# Classe du modèle. Elle doit être définie avant de pouvoir charger les poids.
5class SimpleClassifier(nn.Module):
6 def __init__(self, vocab_size, embedding_dim, hidden_dim, output_dim):
7 super().__init__()
8 self.embedding = nn.Embedding(vocab_size, embedding_dim)
9 self.lstm = nn.LSTM(embedding_dim, hidden_dim)
10 self.fc = nn.Linear(hidden_dim, output_dim)
11
12 def forward(self, text):
13 embedded = self.embedding(text)
14 _, (hidden, _) = self.lstm(embedded.view(len(text), 1, -1))
15 output = self.fc(hidden.squeeze(0))
16 return output
17
18# Tokenizer simple. Il doit aussi être recréé pour traiter le texte.
19def simple_tokenizer(text):
20 return text.lower().split()1import json
2from huggingface_hub import hf_hub_download
3
4# Téléchargement des fichiers du modèle
5repo_id = "Clemylia/Limy-basique"
6vocab_path = hf_hub_download(repo_id, "vocab.json")
7config_path = hf_hub_download(repo_id, "config.json")
8model_path = hf_hub_download(repo_id, "pytorch_model.bin")
9
10# Chargement du vocabulaire et de la configuration pour initialiser le modèle
11with open(vocab_path, 'r') as f:
12 word_to_idx = json.load(f)
13
14with open(config_path, 'r') as f:
15 config = json.load(f)
16
17# Création de l'instance du modèle
18model = SimpleClassifier(
19 vocab_size=config['vocab_size'],
20 embedding_dim=config['embedding_dim'],
21 hidden_dim=config['hidden_dim'],
22 output_dim=config['output_dim']
23)
24
25# Chargement des poids entraînés et mise en mode évaluation
26model.load_state_dict(torch.load(model_path))
27model.eval()
28
29# Fonction de prédiction
30def predict(question):
31 tokens = simple_tokenizer(question)
32 token_indices = [word_to_idx.get(token, 0) for token in tokens]
33 input_tensor = torch.tensor(token_indices, dtype=torch.long)
34
35 with torch.no_grad():
36 output = model(input_tensor.view(-1, 1))
37
38 prediction = torch.argmax(output, dim=1).item()
39
40 if prediction == 0:
41 print(f"La question est classée dans la catégorie : Animaux 🐾")
42 elif prediction == 1:
43 print(f"La question est classée dans la catégorie : Capitales 🏙️")
44
45# Exemples de questions
46predict("Quelle est la capitale du Japon ?")
47predict("Combien de cœurs a une pieuvre ?")