جدول المحتويات[يخفي][يعرض]
يتم إلغاء المكالمات الصوتية بشكل تدريجي لصالح النصوص والمرئيات في قطاع الاتصالات. وفقًا لاستطلاع الرأي على Facebook ، يفضل أكثر من نصف المشترين الشراء من شركة يمكنهم التحدث معها. أصبحت الدردشة وسيلة الاتصال الجديدة المقبولة اجتماعيًا.
تمكن الشركات من التواصل مع عملائها في أي وقت ومن أي مكان. تكتسب روبوتات الدردشة شعبية متزايدة بين الشركات والعملاء نظرًا لسهولة استخدامها وتقليل أوقات الانتظار.
توفر روبوتات المحادثة ، أو برامج المحادثة الآلية ، للعملاء طريقة أكثر تخصيصًا للوصول إلى الخدمات من خلال واجهة قائمة على النصوص. يمكن لأحدث روبوتات الدردشة التي تعمل بالذكاء الاصطناعي التعرف على استعلام (سؤال ، أمر ، أمر ، إلخ) تم إجراؤه بواسطة شخص (أو روبوت آخر ، بداية) في بيئة معينة والاستجابة بشكل مناسب (الإجابة ، الإجراء ، إلخ).
في هذا المنشور ، سنتطرق إلى ماهية برامج الدردشة الآلية وفوائدها وحالات الاستخدام وكيفية صنعها بنفسك التعلم العميق chatbot في Python ، من بين أشياء أخرى.
هيا بنا نبدأ.
إذن ، ما هي روبوتات المحادثة؟
غالبًا ما يُشار إلى روبوت المحادثة على أنه أحد أكثر الأشكال المتقدمة والواعدة للتفاعل بين الإنسان والآلة. تعمل هذه المساعدين الرقميين على تحسين تجربة العملاء من خلال تبسيط التفاعلات بين الأشخاص والخدمات.
في الوقت نفسه ، يزودون الشركات بخيارات جديدة لتحسين عملية الاتصال بالعملاء لتحقيق الكفاءة ، والتي يمكن أن تقلل من نفقات الدعم التقليدية.
باختصار ، إنه برنامج قائم على الذكاء الاصطناعي يهدف إلى التواصل مع البشر بلغاتهم الطبيعية. غالبًا ما تتفاعل روبوتات المحادثة هذه عبر تقنيات صوتية أو مكتوبة ، ويمكنها بسهولة تقليد اللغات البشرية من أجل التواصل مع البشر بطريقة شبيهة بالبشر.
تتعلم روبوتات الدردشة من تفاعلاتها مع المستخدمين ، وتصبح أكثر واقعية وكفاءة بمرور الوقت. يمكنهم التعامل مع مجموعة واسعة من الأنشطة التجارية ، مثل الإذن بالإنفاق ، والمشاركة مع المستهلكين عبر الإنترنت ، وتوليد عملاء متوقعين.
إنشاء روبوت التعلم العميق الخاص بك باستخدام بيثون
هناك العديد من أنواع روبوتات الدردشة المميزة في مجال آلة التعلم والذكاء الاصطناعي. بعض روبوتات المحادثة عبارة عن مساعدين افتراضيين ، في حين أن البعض الآخر موجود فقط للتحدث معهم ، بينما يكون البعض الآخر وكلاء خدمة عملاء.
ربما تكون قد رأيت بعض الأشخاص الذين وظفتهم الشركات للإجابة على الاستفسارات. سنقوم بإنشاء روبوت محادثة صغير في هذا البرنامج التعليمي للإجابة على الاستفسارات المطلوبة بشكل متكرر.
1. تركيب الحزم
خطوتنا الأولى هي تثبيت الحزم التالية.
2. بيانات التدريب
حان الوقت الآن لمعرفة نوع المعلومات التي سنحتاجها لمنح روبوت المحادثة الخاص بنا. لا نحتاج إلى تنزيل أي مجموعات بيانات كبيرة لأن هذا روبوت محادثة بسيط.
سنستخدم فقط المعلومات التي أنشأناها بأنفسنا. لمتابعة الدرس بشكل فعال ، ستحتاج إلى إنشاء ملف .JSON بنفس التنسيق الذي يظهر أدناه. اسم ملفي هو "intents.json."
يتم استخدام ملف JSON لإنشاء مجموعة من الرسائل التي من المحتمل أن يقوم المستخدم بإدخالها وتعيينها إلى مجموعة من الإجابات ذات الصلة. يحتوي كل قاموس في الملف على علامة تحدد المجموعة التي تنتمي إليها كل رسالة.
سنستخدم هذه المعلومات لتدريب أ الشبكة العصبية لتصنيف عبارة من الكلمات كواحدة من العلامات في ملفنا.
يمكننا بعد ذلك فقط تلقي رد من هذه المجموعات وتقديمها للمستخدم. سيكون برنامج الدردشة الآلي أفضل وأكثر تعقيدًا إذا عرضته بعلامات وردود وأنماط إضافية.
3. تحميل بيانات JSON
سنبدأ بتحميل بيانات .json واستيراد بعض الوحدات. قم بتجميع ملف your.json في نفس الدليل الذي يوجد به ملفك بيثون النصي. سيتم الآن حفظ بيانات .json الخاصة بنا في متغير البيانات.
4. استخراج البيانات
حان الوقت الآن لاستخراج المعلومات التي نحتاجها من ملف JSON الخاص بنا. جميع الأنماط ، بالإضافة إلى الفئة / العلامة التي تنتمي إليها ، مطلوبة.
سنحتاج أيضًا إلى قائمة بجميع المصطلحات الفريدة في أنماطنا (لأسباب سنشرحها لاحقًا) ، لذلك دعونا ننشئ بعض القوائم الفارغة لتتبع هذه القيم.
سنقوم الآن بإجراء حلقة عبر بيانات JSON الخاصة بنا واسترداد المعلومات التي نحتاجها. بدلاً من جعلهم سلاسل ، سنستخدم nltk.word tokenizer لتحويل كل نمط إلى قائمة كلمات.
بعد ذلك ، في قائمة docs_x الخاصة بنا ، سنضيف كل نمط ، جنبًا إلى جنب مع العلامة المرتبطة به ، إلى قائمة docs_y.
5. اشتقاق الكلمات
يُعرف العثور على جذر الكلمة باسم الاشتقاق. على سبيل المثال ، قد يكون أصل كلمة "هذا" هو "ذلك" ، في حين أن أصل كلمة "يحدث" يمكن أن يكون "يحدث".
سنستخدم أسلوب الاشتقاق هذا لتقليص مفردات نموذجنا ومحاولة معرفة ما تدل عليه الجمل بشكل عام. سيؤدي هذا الرمز ببساطة إلى إنشاء قائمة فريدة من الكلمات المشتقة التي سيتم استخدامها في المرحلة التالية من إعداد البيانات لدينا.
6. حقيبة الكلمات
حان الوقت للتحدث عن حقيبة من الكلمات الآن بعد أن قمنا باستيراد بياناتنا وإنشاء مفردات مشتقة. الشبكات العصبية وخوارزميات التعلم الآلي ، كما نعلم جميعًا ، تتطلب إدخالًا رقميًا. لذا فإن قائمة الخيوط الخاصة بنا لن تقطعها. نحتاج إلى آلية لتمثيل الأرقام في جملنا ، وهنا يأتي دور حقيبة الكلمات.
سيتم تمثيل كل عبارة بقائمة طول عدد المصطلحات في مفردات نموذجنا. سيتم تمثيل كل كلمة في مفرداتنا بمكان في القائمة. إذا كان الموضع في القائمة هو 1 ، تظهر الكلمة في بياننا ؛ إذا كانت القيمة 0 ، فلن تظهر الكلمة في جملتنا.
نسميها كيس كلمات لأننا لا نعرف التسلسل الذي تظهر فيه الكلمات في العبارة ؛ كل ما نعرفه هو أنها موجودة في مفردات نموذجنا.
بالإضافة إلى هيكلة مدخلاتنا ، يجب علينا أيضًا تنسيق مخرجاتنا بحيث تفهمها الشبكة العصبية. سننشئ قوائم إخراج بطول عدد الملصقات / العلامات في مجموعة البيانات الخاصة بنا ، على غرار حقيبة الكلمات. يمثل كل مكان في القائمة تسمية / علامة فريدة ، ويشير الرقم 1 في أي من هذه المواقع إلى العلامة / العلامة التي يتم تمثيلها.
أخيرًا ، سنستخدم مصفوفات NumPy لتخزين بيانات التدريب والإخراج.
7. تطوير النموذج
نحن على استعداد لبدء بناء نموذج وتدريبه الآن بعد أن قمنا بمعالجة جميع بياناتنا مسبقًا. سنستخدم شبكة عصبية أساسية للغاية مع طبقتين مخفيتين لأهدافنا.
سيكون الغرض من شبكتنا هو إلقاء نظرة على مجموعة من الكلمات وتخصيصها لفئة (إحدى علاماتنا من ملف JSON). سنبدأ بتأسيس بنية نموذجنا. ضع في اعتبارك أنه يمكنك اللعب ببعض الأرقام للتوصل إلى نموذج أفضل! تعلم الآلة يعتمد في الغالب على التجربة والخطأ.
8. نموذج التدريب والادخار
حان الوقت لتدريب نموذجنا على بياناتنا الآن بعد أن قمنا بإعداده! سنحقق ذلك من خلال ملاءمة بياناتنا للنموذج. عدد العهود التي نقدمها هو عدد المرات التي سيتعرض فيها النموذج لنفس البيانات أثناء التدريب.
يمكننا حفظ النموذج في نموذج الملف بمجرد الانتهاء من تدريبه. tflearn هو برنامج نصي يمكن استخدامه في البرامج النصية الأخرى.
9. استخدام chatbot
الآن يمكنك بدء الدردشة مع الروبوت الخاص بك.
فوائد Chatbot
- نظرًا لأنه من المتوقع أن تعمل الروبوتات على مدار 365 يومًا في السنة ، و 24 ساعة في اليوم ، بدون أجر ، فإنها تزيد من التوافر وسرعة رد الفعل.
- تعد هذه الروبوتات أدوات مثالية للتعامل مع العناصر الثلاثة الرئيسية للبيانات الضخمة: الحجم والسرعة والتنوع.
- روبوتات الدردشة هي برامج يمكن استخدامها للتعرف على مستهلكي الشركة وفهمهم.
- تتمتع بقوة فائقة حيث تتمتع بتكلفة صيانة رخيصة بعد أن تتمتع بأعلى الفوائد.
- تنشئ تطبيقات Chatbot البيانات التي يمكن الاحتفاظ بها واستخدامها في التحليلات والتنبؤات.
حالة الاستخدام
- حل استفسارات العملاء
- الرد على الأسئلة المتداولة
- تكليف العملاء بدعم الفريق
- جمع ملاحظات العملاء
- اقتراح عروض جديدة
- تسوق مع تجارة المحادثة
- مكتب الخدمات
- تسهيلات الحجز
- تحويل الأموال
وفي الختام
سيتم استخدام Chatbots ، مثل تقنيات الذكاء الاصطناعي الأخرى ، لزيادة المهارات البشرية وتحرير البشر ليكونوا أكثر إبداعًا وخيالًا من خلال السماح لهم بقضاء المزيد من الوقت في المهام الإستراتيجية بدلاً من المهام التكتيكية.
من المرجح أن تستفيد الشركات والموظفون والمستهلكون من ميزات chatbot المحسّنة مثل التوصيات والتنبؤات الأسرع ، فضلاً عن سهولة الوصول إلى مؤتمرات الفيديو عالية الدقة من داخل المحادثة ، في المستقبل القريب ، عندما يتم دمج الذكاء الاصطناعي مع تطوير تقنية 5G.
لا تزال هذه الاحتمالات وغيرها قيد التحقيق ، ولكن مع تقدم الاتصال بالإنترنت ، والذكاء الاصطناعي ، ومعالجة اللغات الطبيعية ، والتعلم الآلي ، ستصبح أكثر انتشارًا.
تشوو
مرحبا،
شكرا لك على هذا البرنامج.
عندي سؤال.
لم يتم تعريف "bag_of_words". لا أستطيع أن أفهم هذا الخطأ.
هل يمكن أن تخبرني كيف يمكنني حل هذا الخطأ ؟؟
شكرا لك على هذا البرنامج !! اتمنى لك يوم جيد
جاي
الرجاء إضافة وظيفة قبل استخدام قسم chatbot:
////////////////////////////////////////////////// /////////////////////////////
def bag_of_words (s، words):
bag = [0 لـ _ في النطاق (len (الكلمات))]
s_words = nltk.word_tokenize (s)
s_words = [stemmer.stem (word.lower ()) للكلمة في s_words]
على حد ذاته في s_words:
بالنسبة لـ i ، w في تعداد (الكلمات):
إذا كان w == se:
حقيبة [i] = 1
عودة numpy.array (حقيبة)
// ستحل مشكلتك بالتأكيد. //
////////////////////////////////////////////////////// ////////////////////////////
أشارك الكود الكامل معك ، حتى تحصل على صورة واضحة عنه.
////////////////////////////////////////////////////// /////////
استيراد nltk
من nltk.stem.lancaster استيراد لانكسترستيمر
الجذعية = LancasterStemmer ()
استيراد numpy
استيراد tflearn
استيراد tensorflow
استيراد عشوائي
استيراد جسون
مخلل استيراد
مع فتح ("intents.json") كملف:
data = json.load (ملف)
محاولة:
مع open ("data.pickle"، "rb") مثل f:
الكلمات ، الملصقات ، التدريب ، الإخراج = pickle.load (f)
إلا:
الكلمات = []
تسميات = []
docs_x = []
docs_y = []
للقصد في البيانات ["النوايا"]:
للنمط في القصد ["الأنماط"]:
wrds = nltk.word_tokenize (نمط)
الكلمات.
docs_x.append (wrds)
docs_y.append (intent [“علامة”])
إذا كانت النية ["علامة"] غير موجودة في التصنيفات:
labels.append (intent [“tag”])
الكلمات = [
الكلمات = مرتبة (قائمة (مجموعة (كلمات)))
تسميات = مرتبة (تسميات)
تدريب = []
الإخراج = []
out_empty = [0 لـ _ في النطاق (len (ملصقات))]
لـ x ، doc في التعداد (docs_x):
حقيبة = []
wrds = [stemmer.stem (w.lower ()) لـ w in doc]
ل w بالكلمات:
إذا كان w في wrds:
bag.append (1)
آخر:
bag.append (0)
output_row = out_empty [:]
output_row [labels.index (docs_y [x])] = 1
training.append (حقيبة)
output.append (output_row)
تدريب = numpy.array (تدريب)
الإخراج = numpy.array (الإخراج)
مع open ("data.pickle"، "wb") مثل f:
pickle.dump ((الكلمات ، الملصقات ، التدريب ، الإخراج) ، f)
tensorflow.reset_default_graph ()
net = tflearn.input_data (شكل = [بلا ، لين (تدريب [0])])
net = tflearn.fully_connected (net ، 8)
net = tflearn.fully_connected (net ، 8)
net = tflearn.fully_connected (net ، len (الإخراج [0]) ، التنشيط = "softmax")
net = tflearn.regression (net)
النموذج = tflearn.DNN (صافي)
محاولة:
model.load (“model.tflearn”)
إلا:
model.fit (تدريب ، إخراج ، n_epoch = 1500 ، حجم_دفعة = 8 ، show_metric = صحيح)
model.save (“model.tflearn”)
def bag_of_words (s، words):
bag = [0 لـ _ في النطاق (len (الكلمات))]
s_words = nltk.word_tokenize (s)
s_words = [stemmer.stem (word.lower ()) للكلمة في s_words]
على حد ذاته في s_words:
بالنسبة لـ i ، w في تعداد (الكلمات):
إذا كان w == se:
حقيبة [i] = 1
عودة numpy.array (حقيبة)
def chat ():
print ("ابدأ التحدث مع الروبوت (اكتب quit to stop)!")
احيانا صحيح:
inp = input ("أنت:")
إذا inp.lower () == "إنهاء":
استراحة
النتائج = model.predict ([bag_of_words (inp، words)])
results_index = numpy.argmax (نتائج)
tag = labels [results_index]
بالنسبة إلى tg في البيانات ["النوايا"]:
إذا كان tg ['tag'] == علامة:
الردود = tg ['الردود']
طباعة (اختيار عشوائي (الردود))
دردشة()
/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
شكرا لكم,
الترميز سعيدة!
Lu
مرحبا،
هل يمكن أن تعطيني فكرة عن العملية التي يجب تنفيذها في حالة الرغبة في إنشاء روبوت محادثة في لغة بيثون ، ولكن يتم الحصول على المعلومات من استطلاع في Excel. شكرًا لك!