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:
Cú pháp đơn giản, dễ học
Hệ sinh thái thư viện phong phú
Cộng đồng lớn mạnh và hỗ trợ tốt
Hiệu suất cao nhờ các thư viện được tối ưu hóa
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:
Integer (int): Số nguyên như 1, 2, 0, -1, -2
Float: Số thực như 1.5, 0.5, - 3.21
String (str): Chuỗi ký tự như 'AI', 'VIETNAM'
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 = 1 và log₂(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)
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
