- الخطوة الاولى: تثبيت ChatterBot و TensorFlow
- الخطوة الثانية: استيراد المكتبات وتحميل البيانات
- الخطوة الثالثة:إنشاء النموذج
- الخطوة الرابعة: تدريب النموذج
- الخطوة الخامسة: استخدام النموذج لتوليد الردود
بوتات الدردشة Chatbots هي واحدة من أكثر تطبيقات التعلم العميق والذكاء الاصطناعي إثارة، وهي أسهل في البناء مما قد تتصور! في هذه المقالة، سأوضح لك كيفية إنشاء بوت دردشة في بايثون باستخدام مكتبة ChatterBot مفتوحة المصدر ونهج التعلم العميق باستخدام TensorFlow. هذا دليل مناسب للمبتدئين، لذا حتى إذا كنت جديدًا في مجال البرمجة أو التعلم الآلي، فستتمكن من متابعته.
الخطوة الاولى: تثبيت ChatterBot و TensorFlow
أول شيء عليك القيام به هو تثبيت مكتبة ChatterBot و TensorFlow. يمكنك القيام بذلك باستخدام pip ، وهو مدير حزم لبايثون. افتح Terminal أو موجه الأوامر وقم بتشغيل الأوامر التالية:
pip install chatterbot
pip install tensorflow
الخطوة الثانية: استيراد المكتبات وتحميل البيانات
بعد ذلك، دعنا نستورد المكتبات التي سنحتاجها لهذا المشروع وتحميل البيانات. سنستخدم مجموعة بيانات من المحادثات من مجموعة Cornell Movie Dialogs Corpus. يمكنك تنزيله من الرابط التالي:
https://www.cs.cornell.edu/~cristian/Cornell_Movie-Dialogs_Corpus.html
بمجرد تنزيل البيانات، يمكنك استخدام الكود أدناه لاستيراد المكتبات وتحميل البيانات:
import chatterbot
import tensorflow as tf
import numpy as np
import json
# Load the dataset
with open('movie_lines.txt', 'r') as file:
data = file.readlines()
# Preprocess the data
text = []
for line in data:
text.append(line.strip().split(' +++$+++ ')[-1])
الخطوة الثالثة:إنشاء النموذج
الآن بعد أن تم تحميل بياناتنا، حان الوقت لإنشاء نموذج التعلم العميق. لهذا، سنستخدم TensorFlow . لا تقلق إذا كنت جديدًا على TensorFlow، فسأشرح كل شيء بينما نمضي قدمًا.
# Create a tokenizer to preprocess the text data
tokenizer = tf.keras.preprocessing.text.Tokenizer(num_words=10000)
tokenizer.fit_on_texts(text)
# Convert the text data to sequences
sequences = tokenizer.texts_to_sequences(text)
# Pad the sequences to make them all the same length
padded_sequences = tf.keras.preprocessing.sequence.pad_sequences(sequences, padding='post')
# Split the data into training and test sets
train_data = padded_sequences[:30000]
test_data = padded_sequences[30000:]
# Create the model
model = tf.keras.Sequential()
model.add(tf.keras.layers.Embedding(10000, 64, input_length=padded_sequences.shape[1]))
model.add(tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64)))
model.add(tf.keras.layers.Dense(64, activation='relu'))
model.add(tf.keras.layers.Dense(10000, activation='softmax'))
# Compile the model
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
الخطوة الرابعة: تدريب النموذج
الآن بعد أن تم إنشاء نموذجنا، حان الوقت لتدريبه على البيانات. سنستخدم طريقة fit من مكتبة TensorFlow للقيام بذلك.
# Train the model
model.fit(train_data, train_data, epochs=10, batch_size=64)
# Evaluate the model
test_loss, test_accuracy = model.evaluate(test_data, test_data)
print('Test Loss: {}'.format(test_loss))
print('Test Accuracy: {}'.format(test_accuracy))
الخطوة الخامسة: استخدام النموذج لتوليد الردود
الآن بعد أن تم تدريب نموذجنا، يمكننا استخدامه لتوليد الردود responses. سنقوم بذلك عن طريق ترميز نص الإدخال أولاً، ثم استخدام طريقة التنبؤ predict للحصول على رد من النموذج.
# Function to encode the input text
def encode_text(text, tokenizer):
sequences = tokenizer.texts_to_sequences([text])
padded_sequences = tf.keras.preprocessing.sequence.pad_sequences(sequences, padding='post')
return padded_sequences
# Function to generate a response from the model
def generate_response(model, text, tokenizer):
encoded_text = encode_text(text, tokenizer)
prediction = model.predict(encoded_text)
response = tokenizer.sequences_to_texts(prediction.argmax(axis=-1))[0]
return response
# Example usage
input_text = "Hello, how are you today?"
response = generate_response(model, input_text, tokenizer)
print('Response: {}'.format(response))
وهذا كل شيء! لديك الآن بوت دردشة تعلم عميق يمكنه إنشاء ردود بناءً على البيانات التي تم التدريب عليها. بالطبع، هذه مجرد البداية، وهناك مجال كبير للتحسين. على سبيل المثال، يمكنك تجربة بنى مختلفة أو تقنيات معالجة مسبقة للحصول على نتائج أفضل. لكن في الوقت الحالي، آمل أن تكون هذه مقدمة مفيدة لبناء بوتات دردشة مع التعلم العميق في بايثون.