Search⌘ K
AI Features

بناء روبوت محادثة مدعوم بالذكاء الاصطناعي

تعرف على كيفية بناء روبوت محادثة مدعوم بالذكاء الاصطناعي باستخدام ChatterBot لحل المشكلات الرياضية من خلال فهم اللغة الطبيعية.

في الدرس السابق، أنشأنا روبوت دردشة بسيطًا يتبع قواعد محددة مسبقًا ليعطينا الوقت الحالي في مدن مختلفة. كان الأمر أشبه بتعليم طفل صغير الإجابة على أسئلة محددة: "ما هو الوقت في طوكيو؟" يُعطي استجابة دقيقة، ولكن إذا سألته سؤالًا مختلفًا قليلًا، مثل "ما هو الوقت في باريس؟" (مدينة لم نُضِفها)، فسيُصاب بالارتباك. هذا أعطانا لمحة عن روبوتات الدردشة القائمة على القواعد. كانت صارمة، وسهلة التنبؤ، ومناسبة للمهام المباشرة. ولكن الآن، حان الوقت للمضي قدمًا.

ماذا لو أردتَ روبوت دردشة لمساعدتك في أمر أكثر ديناميكية، كالرياضيات؟ يُمكننا بناء روبوت آخر قائم على القواعد لحسابات مُحددة مثل "ما حاصل جمع ٢ + ٢؟". ولكن كم قاعدة نحتاج لتغطية جميع مسائل الرياضيات المُحتملة ؟ سيكون الأمر أشبه بكتابة تعليمات مُنفصلة لكل حبة رمل على شاطئ - وهو أمر غير عملي. إذا حاولتَ إنشاء روبوت قائم على القواعد لجميع أسئلة الحساب الأساسية المُحتملة حتى ١٠٠، فستحتاج إلى تغطية أكثر من ٤٠,٠٠٠ تركيبة فريدة! هذا لا يُراعي حتى الاختلافات في كيفية صياغة الأسئلة في اللغة الطبيعية، مثل "ما مجموع ١٥ و٢٠؟" مقابل "أجمع ١٥ و٢٠ بالنسبة لي".

هنا يأتي دور المحولات المنطقية. تخيلها كـ"أوراق غش" مدمجة تُزود روبوت الدردشة الخاص بنا بمهارات متقدمة دون الحاجة إلى برمجة جميع السيناريوهات المحتملة. لتوضيح ذلك، سنستخدم روبوت دردشة يعمل كمساعد بارع في الرياضيات: الآلة الحاسبة بالذكاء الاصطناعي.

لماذا نفعل هذا؟

إذا كان روبوت الساعة العالمية دراجة هوائية - ثابتة وموثوقة، لكنها محدودة السرعة - فإن حاسبة الذكاء الاصطناعي هي دراجة نارية أنيقة. فهي ليست أسرع فحسب، بل تتعامل بسهولة مع منحنيات إدخال الديناميكي، مما يمنحك تجربة سلسة عبر الاستعلامات المعقدة. مع حاسبة الذكاء الاصطناعي، ستتعلم ما يلي:

  • طريقة عمل المحولات المنطقية: وهي عبارة عن أدوات مثبتة مسبقًا تجعل الروبوت قادرًا على أداء مهام متقدمة.

  • التعامل مع إدخال اللغة الطبيعية: يمكن لآلة حاسبة الذكاء الاصطناعي تفسير أسئلة الرياضيات باللغة الإنجليزية البسيطة بدلاً من القواعد الصارمة.

  • تقييم الاستعلامات الديناميكية: لا يحتاج إلى تعليمات محددة لكل إدخال- فهو يفهم الأنماط العامة، وذلك بفضل مهاراته في الرياضيات.

تخيّل روبوت المحادثة كمساعد ودود يجيب على سؤال حواري مثل "ما ناتج قسمة ٢٥ على ٥؟" ويجيب فورًا بـ "٥". يمكنك طرح أسئلة رياضية متنوعة عليه، مثل:

  • ما هو حاصل جمع ٥٠ ناقص ٢٠؟ سيتعرف الروبوت على "ناقص" كعملية طرح، ويطرح ٢٠ من ٥٠، ويعطيك الإجابة: ٣٠.

  • "ما هو حاصل ضرب 10 في 15؟" يحدد الروبوت "الأوقات" على أنها عملية ضرب، ويحسب النتيجة (150)، ويستجيب محادثة.

  • ما هو حاصل قسمة ١٠٠ على ٢٥؟ يُفسّر "القسمة على" على أنها قسمة، ويحسب الحاصل (٤.٠)، ويعطيك الإجابة.

إليكم الجزء الأفضل: تستخدم الآلة الحاسبة الذكية مُحوِّلًا منطقيًا لمعالجة وتقييم التعبيرات الرياضية ديناميكيًا. لستَ مُضطرًا لتعليمها جميع الأسئلة المُحتملة، فهي ذكية بما يكفي لتمييز الأنماط وحل مجموعة واسعة من المسائل الرياضية، طالما أنها تقع ضمن إمكانياتها.

لكن كأي مساعد، له حدود. قد لا يعرف كيف يجيب إذا سألتَ سؤالًا معقدًا للغاية، مثل "ما هو العدد 2 مرفوعًا للقوة 56؟". مع ذلك، فهو حل سريع وفعال للمسائل الرياضية اليومية، ما يجعل التعلم ممتعًا وتفاعليًا. إنه محادثة وذكي وجاهز للمساعدة، مما يجعله مثاليًا لاستكشاف المستوى التالي من وظائف روبوت الدردشة.

حقيقة طريفة: صُممت أقدم الحواسيب، مثل جهاز ENIAC في أربعينيات القرن العشرين، في المقام الأول لإجراء حسابات رياضية معقدة لمهام مثل رسم مسارات المدفعية. لذا، فإن استخدام الذكاء الاصطناعي لحل المسائل الرياضية يُعيد إلى الأذهان أصول الحوسبة!

كيفية إنشاء روبوت محادثة بالذكاء الاصطناعي

لنُطوّر مهاراتنا في بناء روبوتات الدردشة باستخدام ChatterBot، وهي مكتبة فعّالة لإنشاء الذكاء الاصطناعي التفاعلي. يُمكننا إضافة ميزات متقدمة، مثل التقييم الرياضي، دون الخوض في تعقيدات تقنية مُعقدة، وذلك باستخدام بضعة أسطر من التعليمات البرمجية.

في حاسبة الذكاء الاصطناعي الخاصة بنا، التقييم الرياضي يقوم مُحوِّل منطق التقييم الرياضي بتحليل إدخال لتحديد ما إذا كان المستخدم يطرح سؤالاً يتطلب إجراء عملية حسابية. في هذه الحالة، تُستخرج المعادلة من إدخال وتُعاد بالنتيجة المُقيّمة. يعمل المحول المنطقي بمثابة العقل لحل المسائل الرياضية. يستقبل استفسارات المستخدم، ويفسر عبارات مثل "زائد" أو "ضرب" أو "قسمة على"، ويترجمها إلى عمليات رياضية، ثم يحسب النتائج. يشبه الأمر محركًا مُعدًّا مسبقًا يعرف كيفية التعامل مع الأرقام والعمليات والمعادلات، مما يتيح لك التركيز على بناء واجهة روبوت المحادثة وشخصيته.

إليك السبب وراء استخدامنا لـChatterBot:

  1. إنه يوضح كيفية بناء روبوتات الدردشة الوظيفية مع الحد الأدنى من الإعداد.

  2. إنه مناسب للمبتدئين مع توفير لمحة عن القدرات المتقدمة.

  3. إنه يدعم محولات المنطق مثل MathematicalEvaluation، التي تدعم الآلة الحاسبة الخاصة بنا.

ملاحظة: على الرغم من أن ChatterBot لا يخضع لصيانة دورية، إلا أنه لا يزال أداة رائعة لتعلم أساسيات روبوتات الدردشة واستكشاف المفاهيم الأساسية. بالإضافة إلى ذلك، لن تقلق بشأن الإعداد المعقد أو التبعيات - في Educative، نتولى كل شيء نيابةً عنك. ما هو تركيزك؟ التعلم وبناء مشاريع رائعة.

from chatterbot import ChatBot

# naming the ChatBot calculator
# using mathematical evaluation logic
# the calculator AI will not learn with the user input
Bot = ChatBot(name = 'Calculator',
                read_only = True,                  
                logic_adapters = ["chatterbot.logic.MathematicalEvaluation"],                 
                storage_adapter = "chatterbot.storage.SQLStorageAdapter")
    

# clear the screen and start the calculator
print('\033c')
print("Hello, I am a calculator. How may I help you?")
while (True):
    # take the input from the user
    user_input = input("me: ")
    
    # check if the user has typed quit to exit the prgram   
    if user_input.lower() == 'quit':
        print("Exiting")
        break

    # otherwise, evaluate the user input
    # print invalid input if the AI is unable to comprehend the input
    try:
        response = Bot.get_response(user_input)
        print("Calculator:", response)
    except:
        print("Calculator: Please enter valid input.")
AI chatbot

في الكود أعلاه:

  • السطر 1: استيرادChatBot الصف منchatterbot المكتبة. هذا هو أساس روبوت المحادثة.ChatBot توفر الفئة الإطار لإنشاء الروبوت وتكوينه، بما في ذلك تعيين اسمه ومنطقه وتخزينه.

  • الأسطر 6-9: قم بتهيئة برنامج المحادثة الآلي بالاسمCalculator ، باستخدامMathematicalEvaluation محول منطقي للعمليات الرياضية وSQLStorageAdapter للتخزين. تم ضبط الروبوت علىread_only للحفاظ على سلوك ثابت.

  • السطرين 13-14: قم بمسح المحطة وترحيب بالمستخدم برسالة تعريفية.

  • الأسطر 15-17: ابدأ حلقة لا نهائية لقبول إدخال المستخدم بشكل مستمر حتى الخروج صراحةً.

  • الأسطر 20-21: تحقق مما إذا كان المستخدم يكتب"quit" إذا كان الأمر كذلك، قم بإنهاء الحلقة وطباعة رسالة الخروج.

  • الأسطر 26-28: مرر إدخال المستخدم إلى الروبوتget_response طريقة لمعالجة الإجابة وحسابها، ثم عرض النتيجة.MathematicalEvaluation يقوم المحول المنطقي بتفسير الاستعلامات الرياضية، وإجراء العمليات الحسابية، وإرجاع النتيجة.

  • السطرين 29–30: تعامل مع إدخال غير الصحيح بسلاسة عن طريق مطالبة المستخدم بمحاولة مرة أخرى.

يمكننا أن نرى أنMathematicalEvaluation المحول هو المنطق الأساسي الذي يُشغّل حاسبة الذكاء الاصطناعي. إنه العقل المدبر وراء قدرة روبوت المحادثة على معالجة الاستعلامات الرياضية وحلها ديناميكيًا. بخلاف الأنظمة البسيطة القائمة على القواعد، يستخدم هذا المحول تحليل اللغة الطبيعية والحساب الديناميكي لتفسير إدخال المستخدم، واستخراج التعبيرات الرياضية، وحساب نتائج دقيقة. لنتعمق في الكود ونستكشف كيف يُحوّل هذا المحول استفسارات المستخدم إلى استجابات ذكية.

Python 3.10.4
from chatterbot.logic import LogicAdapter
from chatterbot.conversation import Statement
from chatterbot import languages
class MathematicalEvaluation(LogicAdapter):
"""
The MathematicalEvaluation logic adapter parses input to determine
whether the user is asking a question that requires math to be done.
If so, the equation is extracted from the input and returned with
the evaluated result.
For example:
User: 'What is three plus five?'
Bot: 'Three plus five equals eight'
:kwargs:
* *language* (``object``) --
The language is set to ``chatterbot.languages.ENG`` for English by default.
"""
def __init__(self, chatbot, **kwargs):
"""
Initialize the adapter with the chatbot and optional keyword arguments.
Default language is set to English (ENG), and a cache is used for optimization.
"""
super().__init__(chatbot, **kwargs)
# Set the language for processing (default is English)
self.language = kwargs.get('language', languages.ENG)
# Cache for storing previously processed results for quick lookup
self.cache = {}
def can_process(self, statement):
"""
Determines if the adapter can handle the given input.
- Calls `process()` to evaluate the statement.
- Stores the result in the cache for reuse.
- Returns True only if the confidence score is 1 (fully confident).
"""
response = self.process(statement) # Process the input statement
self.cache[statement.text] = response # Store the result in the cache
return response.confidence == 1 # Return True if the adapter is confident
def process(self, statement, additional_response_selection_parameters=None):
"""
Processes the input statement to:
- Extract a mathematical expression.
- Solve the expression and return the result.
- Handle errors if the expression cannot be evaluated.
"""
from mathparse import mathparse # Import mathparse for parsing and evaluating expressions
input_text = statement.text # Get the user input as text
# Check if the result for this input is already cached
if input_text in self.cache:
cached_result = self.cache[input_text]
self.cache = {} # Clear the cache for a fresh start
return cached_result
# Extract mathematical expression from the input text
expression = mathparse.extract_expression(input_text, language=self.language.ISO_639.upper())
# Create a response statement with the extracted expression
response = Statement(text=expression)
try:
# Evaluate the mathematical expression and format the response
response.text = '{} = {}'.format(
response.text, # Original expression
mathparse.parse(expression, language=self.language.ISO_639.upper()) # Computed result
)
# Set confidence to 1 (high) if evaluation is successful
response.confidence = 1
except mathparse.PostfixTokenEvaluationException:
# If evaluation fails, set confidence to 0 (low)
response.confidence = 0
return response # Return the response statement

يمكننا رؤية الكود ونستنتج أن المحول يُمكّن وظائف الذكاء الاصطناعي من خلال استخدام التحليل الديناميكي، واتخاذ القرارات، والفهم السياقي. ويستخدمmathparse مكتبة لاستخراج التعبيرات الرياضية من إدخال اللغة الطبيعية. هذه خطوة متقدمة عن الأنظمة القائمة على القواعد، لأن المحول لا يحتاج إلى تعليمات صريحة لكل سيناريو، بل يُعمم من الأنماط في إدخال.

كان فهم اللغة الطبيعية من أكبر التحديات في الذكاء الاصطناعي التقليدي. على سبيل المثال، يحتاج روبوت المحادثة إلى إدراك أن عبارتي "ما حاصل ضرب 5 في 2؟" و"ما حاصل قسمة 5 على 2؟" تعنيان الشيء نفسه - وهو أمرٌ يعتبره البشر أمرًا مسلمًا به!