-
CréateurSujet
-
octobre 30, 2024 à 1:11 am #43389BotParticipant
salut j’ai fait un code pour une ia en deep learning qui sert de chatbot en python et j’aimerais avoir votre avis dessus
——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code -
CréateurSujet
-
AuteurRéponses
-
-
octobre 30, 2024 à 1:12 am #43390
voilà le fameux code
——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code -
octobre 30, 2024 à 1:13 am #43391
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from sklearn.model_selection import train_test_split
import json# Charger les données (exemple avec un fichier JSON)
with open(‘chat_data.json’) as f:
data = json.load(f)# Séparer les questions et les réponses
questions = []
answers = []
for conversation in data[‘conversations’]:
for exchange in conversation[‘exchange’]:
questions.append(exchange[‘question’])
answers.append(exchange[‘answer’])# Créer un ensemble de données et le diviser en ensemble d’entraînement et de test
X_train, X_test, y_train, y_test = train_test_split(questions, answers, test_size=0.2)——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code -
octobre 30, 2024 à 1:14 am #43392
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from sklearn.model_selection import train_test_split
import json# Charger les données (exemple avec un fichier JSON)
with open(‘chat_data.json’) as f:
data = json.load(f)# Séparer les questions et les réponses
questions = []
answers = []
for conversation in data[‘conversations’]:
for exchange in conversation[‘exchange’]:
questions.append(exchange[‘question’])
answers.append(exchange[‘answer’])# Créer un ensemble de données et le diviser en ensemble d’entraînement et de test
X_train, X_test, y_train, y_test = train_test_split(questions, answers, test_size=0.2)——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code -
octobre 30, 2024 à 1:14 am #43393
# Tokenisation et séquençage
tokenizer = keras.preprocessing.text.Tokenizer()
tokenizer.fit_on_texts(X_train)# Convertir le texte en séquences
X_train_seq = tokenizer.texts_to_sequences(X_train)
X_test_seq = tokenizer.texts_to_sequences(X_test)# Padding des séquences
max_length = max(len(x) for x in X_train_seq) # Longueur maximale
X_train_pad = keras.preprocessing.sequence.pad_sequences(X_train_seq, maxlen=max_length)
X_test_pad = keras.preprocessing.sequence.pad_sequences(X_test_seq, maxlen=max_length)# Préparation des réponses
# (vous devrez transformer les réponses de la même manière que les questions)
y_train_seq = tokenizer.texts_to_sequences(y_train)
y_test_seq = tokenizer.texts_to_sequences(y_test)
y_train_pad = keras.preprocessing.sequence.pad_sequences(y_train_seq, maxlen=max_length)
y_test_pad = keras.preprocessing.sequence.pad_sequences(y_test_seq, maxlen=max_length)——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code -
octobre 30, 2024 à 1:14 am #43394
# Construire le modèle
model = keras.Sequential([
layers.Embedding(input_dim=len(tokenizer.word_index) + 1, output_dim=128, input_length=max_length),
layers.LSTM(256, return_sequences=True),
layers.LSTM(256),
layers.Dense(128, activation=’relu’),
layers.Dense(len(tokenizer.word_index) + 1, activation=’softmax’) # Sortie pour toutes les classes
])# Compiler le modèle
model.compile(loss=’sparse_categorical_crossentropy’, optimizer=’adam’, metrics=[‘accuracy’])——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code -
octobre 30, 2024 à 1:14 am #43395
# Entraîner le modèle
model.fit(X_train_pad, np.array(y_train_pad), epochs=10, batch_size=32)——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code -
octobre 30, 2024 à 1:14 am #43396
def chatbot_response(input_text):
# Prétraitement de l’entrée
input_seq = tokenizer.texts_to_sequences([input_text])
input_pad = keras.preprocessing.sequence.pad_sequences(input_seq, maxlen=max_length)# Prédiction
prediction = model.predict(input_pad)
response_index = np.argmax(prediction, axis=-1)
response = tokenizer.sequences_to_texts([response_index])return response[0]
# Exemple d’utilisation
while True:
user_input = input(« Vous: « )
if user_input.lower() == « exit »:
break
response = chatbot_response(user_input)
print(f »Bot: {response} »)——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code -
octobre 30, 2024 à 1:17 am #43397
voilà je l’ai diviser en 5 étapes : la première étape préparation des données, deuxième étape Prétraitement des Données , troisième étapes Construction du Modèle , quatrième étapes Entraînement du Modèle et cinquième étapes Déploiement du Chatbot
——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code -
octobre 30, 2024 à 1:19 am #43398
ah oui aussi ce code fonctionne avec TensorFlow et Keras
——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code -
octobre 30, 2024 à 4:05 am #43399
Et ce bot sert a quoi
——————–
rubisoneai_16251 – Envoyé depuis le Discord : Culte du code -
octobre 30, 2024 à 10:51 am #43400
c’est un chatbot
——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code -
octobre 30, 2024 à 2:37 pm #43401
Mais il te dit quoi lui ces quoi ced capacité ?
——————–
rubisoneai_16251 – Envoyé depuis le Discord : Culte du code -
octobre 30, 2024 à 2:37 pm #43402
Et ses limites
——————–
rubisoneai_16251 – Envoyé depuis le Discord : Culte du code -
octobre 30, 2024 à 5:05 pm #43409
sa je ne sais pas trop c’est pour sa que je veux demande de l’aide pour que les personnes qui se connaissent m’aide et me donne leur avis sur certains points que je pourrais changer
——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code -
novembre 1, 2024 à 10:19 pm #43854
Il est bien structurer, c’est pas mal, je vous conseille de regarder ceci si vous souhaitez faire un chatbot performant:
https://en.wikipedia.org/wiki/Seq2seq
Vous pourriez utiliser ce type d’architecture avec LSTM ou GRU comme encodage et décodage.
Je vous conseille aussi de faire du prétraitement de texte car actuellement les vôtres sont encore en format brute, vous pouvez utiliser Tokenizer dans Keras ou alors des choses comme https://datascientest.com/nlp-word-embedding-word2vec
——————–
foundationscp – Envoyé depuis le Discord : Culte du code -
novembre 1, 2024 à 11:42 pm #43856
ok merci de ton aide
——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code -
novembre 4, 2024 à 3:22 am #43864
ton code comporte quelques étapes clés..mais il présente des choses modifiable dans la gestion des réponses..et des prédictions…! les ajustements que je proposes pour corriger le flux de traitement des réponses dans le modèle de chatbot basé sur LSTM comme tu l’as fais sera envoyé après ce message pour pas t’embrouillé
——————–
001.06.21.000 – Envoyé depuis le Discord : Culte du code -
novembre 4, 2024 à 3:24 am #43865
dans le format le format de sortie : La dernière couche `Dense`de ton modèle utilise softmax pour prédire des classes individuelles…et ce n’est pas vraiment optimal pour générer des séquences complètes comme des réponses entières..une approche meilleure consiste à modifier la gestion des données de sortie en décodant séquentiellement chaque mot pour construire la phrase de réponse….
——————–
001.06.21.000 – Envoyé depuis le Discord : Culte du code -
novembre 4, 2024 à 3:27 am #43866
dans la réparation des tes réponses : Dans ton code… `y_train_pad`et `y_test_pad` sont traités comme s’ils représentaient une séquence,..mais l’entraînement avec `sparse_categorical_crossentropy `nécessite que `y_train` soit un index unique pour chaque séquence…!! il faut reformuler cette section pour garantir que les réponses soient décalées correctement…!!
——————–
001.06.21.000 – Envoyé depuis le Discord : Culte du code -
novembre 4, 2024 à 3:28 am #43867
et enfin dand ta onversion en séquences : pour que ton modèle génère des réponses mot par mot..tu devrez ajouter une boucle de prédiction qui continue jusqu’à atteindre un mot de fin (par exemple,
——————–
001.06.21.000 – Envoyé depuis le Discord : Culte du code -
novembre 4, 2024 à 3:34 am #43868
je penses que ce code peux aider
import num as np import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers from sklearn.model_selection import train_test_split import json with open('chat_data.json') as f: data = json.load(f) questions = [] answers = [] for conversation in data['conversations']: for exchange in conversation['exchange']: questions.append(exchange['question']) answers.append(' ' + exchange['answer'] + ' ') X_train, X_test, y_train, y_test = train_test_split(questions, answers, test_size=0.2) tokenizer = keras.preprocessing.text.Tokenizer() tokenizer.fit_on_texts(X_train + y_train) X_train_seq = tokenizer.texts_to_sequences(X_train) X_test_seq = tokenizer.texts_to_sequences(X_test) max_length = max(len(x) for x in X_train_seq) X_train_pad = keras.preprocessing.sequence.pad_sequences(X_train_seq, maxlen=max_length) X_test_pad = keras.preprocessing.sequence.pad_sequences(X_test_seq, maxlen=max_length) y_train_seq = tokenizer.texts_to_sequences(y_train) y_test_seq = tokenizer.texts_to_sequences(y_test) y_train_pad = keras.preprocessing.sequence.pad_sequences(y_train_seq, maxlen=max_length) y_test_pad = keras.preprocessing.sequence.pad_sequences(y_test_seq, maxlen=max_length) model = keras.Sequential([ layers.Embedding(input_dim=len(tokenizer.word_index) + 1, output_dim=128, input_length=max_length), layers.LSTM(256, return_sequences=True), layers.LSTM(256), layers.Dense(128, activation='relu'), layers.Dense(len(tokenizer.word_index) + 1, activation='softmax') ]) model.compile(loss='sparse_categorical_crossentro', optimizer='adam', metrics=['accuracy']) model.fit(X_train_pad, np.array(y_train_pad), epochs=10, batch_size=32) def chatbot_response(input_text): input_seq = tokenizer.texts_to_sequences([input_text]) input_pad = keras.preprocessing.sequence.pad_sequences(input_seq, maxlen=max_length) prediction = model.predict(input_pad) response_index = np.argmax(prediction, axis=-1) response = tokenizer.sequences_to_texts([response_index]) return response[0] while True: user_input = input("Vous: ") if user_input.lower() == "exit": break response = chatbot_response(user_input) print(f"Bot: {response}")
——————–
001.06.21.000 – Envoyé depuis le Discord : Culte du code -
novembre 4, 2024 à 8:31 pm #43870
merci de m’avoir donner des conseille sa va pas mal m’aider
——————–
alexlebg2.0 – Envoyé depuis le Discord : Culte du code
-
-
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.
Sujets récents
-
Fond d’écran tools python
par Bot
il y a 1 semaine
-
Multitouch Problem
par Bot
il y a 1 semaine et 3 jours
-
Convertir un ficher .py en .exe
par Bot
il y a 1 semaine
-
Problème signal R C# RAZOR
par Bot
il y a 1 semaine et 2 jours
-
aide HTML CSS PHP BUTTON
par Bot
il y a 1 semaine et 2 jours
Réponses récentes
Statistiques des Forums
- Comptes enregistrés
- 2 588
- Forums
- 51
- Sujets
- 912
- Réponses
- 17 355
- Mot-clés du sujet
- 0