Introduction to Basic Python: Build a Rule-based Chatbot with Branching

Giới thiệu về Python

Lịch sử Python

Python được phát triển từ thập niên 1980s và bắt đầu được cài đặt từ tháng 12/1989. Hiện nay, có hơn 228,855 packages Python trên PyPI Python Package Index), cung cấp hỗ trợ mạnh mẽ cho Data Science và Machine Learning.

Tại sao Python phổ biến trong AI

Python có nhiều ưu điểm làm cho nó trở thành ngôn ngữ lý tưởng cho AI và Data Science:

  1. Cú pháp đơn giản, dễ học

  2. Hệ sinh thái thư viện phong phú

  3. Cộng đồng lớn mạnh và hỗ trợ tốt

  4. Hiệu suất cao nhờ các thư viện được tối ưu hóa

  5. Tích hợp tốt với các công nghệ khác

Python Ecosystem

Hệ sinh thái Python cho tính toán khoa học bao gồm các thư viện bên thứ ba như NumPy, SciPy, và nhiều thư viện khác hỗ trợ cho các thuật toán và ứng dụng cụ thể.

Biểu đồ các thư viện Python phổ biến nhất cho Data Science và AI


Kiểu Dữ Liệu Và Biến Trong Python

Các kiểu dữ liệu cơ bản

Python có nhiều kiểu dữ liệu khác nhau để đáp ứng nhu cầu lập trình đa dạng:

  1. Integer (int): Số nguyên như 1, 2, 0, -1, -2

  2. Float: Số thực như 1.5, 0.5, - 3.21

  3. String (str): Chuỗi ký tự như 'AI', 'VIETNAM'

  4. Boolean (bool): Giá trị logic True hoặc False

Biến và cách khai báo

Trong Python, biến được khai báo đơn giản với cú pháp:

variable_name = variable_value

Khi đặt tên biến, cần lưu ý:

  • Tên biến nên có ý nghĩa rõ ràng không sử dụng từ khóa của Python.

  • Tuân thủ quy tắc đặt tên (snake_case)

Cấu trúc dữ liệu

Python cung cấp nhiều cấu trúc dữ liệu mạnh mẽ:

  • List: Danh sách các phần tử, có thể thay đổi

  • Dictionary: Cấu trúc key-value

  • Tuple: Danh sách các phần tử, không thể thay đổi

Ví dụ về cách sử dụng các cấu trúc dữ liệu này:

# Tạo một danh sách
data = [6, 5, 7, 1, 9, 2]

# Tạo một từ điển
parameters = {'learning_rate': 0.1, 'optimizer': 'Adam', 'metric': 'Accuracy'}

Functions Trong Python

Built-in Functions

Python có nhiều hàm built-in để thực hiện các tác vụ phổ biến:

  • print(): In giá trị ra màn hình

  • type(): Trả về kiểu dữ liệu của biến

  • input(): Nhận input từ người dùng

  • int(), float(): Chuyển đổi kiểu dữ liệu

User-defined Functions

Để tạo một hàm riêng trong Python, sử dụng cú pháp:

def function_name(parameters):
    ''' 
    docstring - describes the function 
    '''
    # function code
    return result

Ví dụ về hàm tính diện tích hình chữ nhật :

def compute_rectangle_area(height, width):
    """ 
    This function calculates the area of a rectangle.

    Parameters:
    height -- the height of the rectangle
    width -- the width of the rectangle

    Returns:
    The area of the rectangle
    """
    area = height * width
    return area

Mathematical Functions

Module math của Python cung cấp nhiều hàm toán học hữu ích:

  • math.log(), math.log10(): Tính logarithm

  • math.exp(): Tính hàm mũ

  • math.sqrt(): Tính căn bậc hai

  • math.sin(), math.cos(): Các hàm lượng giác

  • math.pi, math.e: Các hằng số toán học

Điều Kiện và Rẽ Nhánh

Comparison Operators

Python sử dụng các toán tử so sánh để đánh giá điều kiện:

  • \==: Bằng

  • !=: Khác

  • >: Lớn hơn

  • <: Nhỏ hơn

  • >=: Lớn hơn hoặc bằng

  • <=: Nhỏ hơn hoặc bằng

If-else Statements

Cấu trúc điều kiện if-else trong Python có dạng:

area = height * width
return area

if condition:
    # code executes if condition is true
elif another_condition:
    # code executes if another_condition is true
else:
    # code executes if all above conditions are false

Ví dụ về if-else trong Python:

def a_function(a, b):
    result = 0
    if a > 0:
        result = b * b
    elif a <= 0:
        result = math.sqrt(b)
    return result

Alternative Approaches to If-else

Ngoài cách tiếp cận truyền thống với if-else, còn có các phương pháp thay thế trong AI như:

  • Sử dụng phép toán (mathematical approach)

  • One-hot encoding

  • Softmax function

So sánh hiệu suất giữa phương pháp If-Else truyền thống và các giải pháp thay thế trong AI

Ví dụ về phương pháp thay thế if-else:

# Traditional if-else approach 
def traditional_approach(a, b):
    if a == 0:
        return b * b
    elif a == 1:
        return math.sqrt(b)
    elif a == 2:
        return b
    else:
        return 0

# Mathematical approach using one-hot encoding concept
def mathematical_approach(a, b):
    # One-hot encoding for a
    weights = [b * b, math.sqrt(b), b]  # Corresponding to a=0, a=1, a=2
    selector = [1 if a == i else 0 for i in range(3)]
    result = sum(w * s for w, s in zip(weights, selector))
    return result

Toán Học Cho AI

Logarithms và Ứng Dụng

Logarit đóng vai trò quan trọng trong AI và Machine Learning bằng cách ngăn chặn underflow và overflow trong các phép tính. Chúng chuyển phép nhân thành phép cộng: log(A * B) = log(A) + log(B), giúp tối ưu hóa gradient descent. Logarit cũng được sử dụng trong các hàm mất mát. Các công thức phổ biến bao gồm: log₂ 2 = 1log₂(xy) = log₂(x) + log₂(y).

Softmax Function

Softmax function là một hàm quan trọng trong mạng neural để chuyển đổi các giá trị thành xác suất:

Công thức: f(xi) = e^xi / Σe^xj

Ví dụ về kết quả của hàm softmax với input 1.0, 2.0, 3.0:

def softmax(values):
    # Calculate e^x for each value
    exp_values = [math.exp(x) for x in values]
    # Calculate the total sum
    total = sum(exp_values)
    # Normalize to get probabilities
    softmax_values = [exp_val / total for exp_val in exp_values]
    return softmax_values

ReLU Function

ReLU (Rectified Linear Unit) là một activation function phổ biến trong deep learning:

Công thức: ReLU(x) = max(0, x)

Biểu đồ hàm ReLU - activation function cơ bản trong deep learning Code

ReLU function:

def ReLU(x):
    if x > 0:
        return x
    else:
        return 0

Information Theory

Information theory có nhiều ứng dụng trong machine learning:

  • Đo lường uncertainty trong datasets

  • Feature selection và extraction

  • Clustering

  • Decision trees

Entropy là một khái niệm quan trọng trong information theory:

H(X) = -Σp(x)log(p(x))

Chatbot Rule-Based

Cấu trúc của Rule-based Chatbot

Chatbot dựa trên luật (rule-based) hoạt động dựa trên các quy tắc và mẫu đã định nghĩa trước để tạo ra phản hồi:

Sơ đồ luồng hoạt động của một Chatbot dựa trên luật Rule-Based

Các thành phần chính

Một chatbot rule-based thường có các thành phần sau:

  • Input Processing: Nhận và xử lý đầu vào từ người dùng

  • Pattern Matching: So khớp với các mẫu đã định nghĩa trước

  • Intent Recognition: Xác định ý định của người dùng

  • Response Selection: Chọn phản hồi phù hợp

  • Output Generation: Tạo và trả lời

Cài đặt Chatbot đơn giản

Dưới đây là ví dụ về một chatbot rule-based đơn giản :

import random

class SimpleChatbot:
    def __init__(self):
        self.greetings = ["Xin chào!", "Hello!", "Chào bạn!"]
        self.farewells = ["Tạm biệt!", "Goodbye!", "Hẹn gặp lại!"]
        self.responses = {
            "how_are_you": ["Tôi khỏe, cảm ơn!", "Tôi ổn!", "Mọi thứ tốt!"],
            "name": ["Tôi là AI assistant", "Bạn có thể gọi tôi là Bot"],
            "help": ["Tôi có thể giúp bạn trả lời câu hỏi", "Hãy hỏi tôi bất cứ điều gì!"]
        }

    def get_response(self, user_input):
        user_input = user_input.lower()

        # Check greetings
        if any(word in user_input for word in ["hello", "chào", "hi"]):
            return random.choice(self.greetings)

        # Check farewells
        elif any(word in user_input for word in ["bye", "goodbye", "tạm biệt"]):
            return random.choice(self.farewells)

        # Check specific questions
        elif any(word in user_input for word in ["khỏe", "how are you"]):
            return random.choice(self.responses["how_are_you"])

        # ... other conditions...
        else:
            return "Xin lỗi, tôi không hiểu. Bạn có thể hỏi khác được không?"

Ecosystem Python Cho AI và Data Science

Các thư viện phổ biến

Python có một hệ sinh thái phong phú các thư viện cho AI và Data Science:

  • NumPy: Xử lý mảng đa chiều và tính toán toán học

  • Pandas: Thao tác và phân tích dữ liệu

  • Matplotlib: Visualize dữ liệu

  • Scikit-learn: Machine learning algorithms

  • TensorFlow/PyTorch: Deep learning frameworks

  • SciPy: Tính toán khoa học

Nguồn tham khảo: 2025-5/M01W01 - [v4] Basic Python (Branching~Rule-based Chatbot)

0
Subscribe to my newsletter

Read articles from Tùng Trần Thanh directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Tùng Trần Thanh
Tùng Trần Thanh