Skip to main content

Dự kiến hệ thống KRX sẽ go-live chính thức vào tháng 5 tới

· 2 min read

Theo báo Nhân Dân, hệ thống KRX dự kiến sẽ chính thức go-live vào tháng 5 năm nay. Đây là một trong những bước tiến quan trọng nhằm hiện đại hóa thị trường chứng khoán Việt Nam, nâng cao hiệu suất giao dịch và tăng cường khả năng kết nối với thị trường quốc tế.

Những điểm nổi bật của hệ thống KRX:

  • Tăng tốc độ xử lý giao dịch, giúp giảm thời gian chờ và nâng cao trải nghiệm của nhà đầu tư.
  • Cung cấp các sản phẩm mới, bao gồm giao dịch T+0 và các công cụ phái sinh nâng cao.
  • Nâng cao năng lực giám sát thị trường, đảm bảo minh bạch và công bằng hơn trong giao dịch chứng khoán.
  • Tích hợp công nghệ tiên tiến, hỗ trợ các chuẩn mực giao dịch hiện đại.

Hệ thống KRX đã được chuẩn bị trong nhiều năm và hiện đang trong giai đoạn thử nghiệm cuối cùng trước khi triển khai chính thức. Việc hệ thống mới đi vào hoạt động sẽ đánh dấu một cột mốc quan trọng trong quá trình chuyển đổi số của thị trường chứng khoán Việt Nam.

🔗 Xem chi tiết bài viết gốc:
Nhân Dân

Điều Khiển Luồng (Flow Control) trong Python

· 3 min read

Điều khiển luồng là một khái niệm quan trọng trong lập trình, cho phép bạn kiểm soát cách mà chương trình thực thi các lệnh. Trong Python, bạn có thể sử dụng các câu lệnh điều kiện và vòng lặp để điều khiển luồng của chương trình.

1. Câu Lệnh Điều Kiện

Câu lệnh điều kiện cho phép bạn kiểm tra các điều kiện và thực hiện các đoạn mã khác nhau dựa trên kết quả của các điều kiện đó.

Cú Pháp:

if điều_kiện:
# Thực hiện nếu điều kiện đúng
elif điều_kiện_khác:
# Thực hiện nếu điều kiện khác đúng
else:
# Thực hiện nếu tất cả các điều kiện trước đều sai

Ví dụ:

tuoi = 18
if tuoi < 18:
print("Bạn chưa đủ tuổi.")
elif tuoi == 18:
print("Chúc mừng bạn đã đủ tuổi!")
else:
print("Bạn đã trưởng thành.")

2. Vòng Lặp

Vòng lặp cho phép bạn thực hiện một đoạn mã nhiều lần. Python hỗ trợ hai loại vòng lặp chính: forwhile.

  • Vòng Lặp for: Dùng để lặp qua một chuỗi hoặc danh sách.

    Cú Pháp:

    for biến in danh_sách:
    # Thực hiện

    Ví dụ:

    danh_sach = [1, 2, 3, 4, 5]
    for so in danh_sach:
    print(so)
  • Vòng Lặp while: Tiếp tục thực hiện đoạn mã cho đến khi điều kiện trở thành sai.

    Cú Pháp:

    while điều_kiện:
    # Thực hiện

    Ví dụ:

    dem = 0
    while dem < 5:
    print(dem)
    dem += 1

3. Câu Lệnh breakcontinue

  • break: Ngừng vòng lặp ngay lập tức.

    Ví dụ:

    for so in range(10):
    if so == 5:
    break
    print(so)
  • continue: Bỏ qua phần còn lại của vòng lặp và tiếp tục với lần lặp tiếp theo.

    Ví dụ:

    for so in range(10):
    if so % 2 == 0:
    continue
    print(so)

Bài Tập Hướng Dẫn

Bài Tập 1: Câu Lệnh Điều Kiện

Viết một chương trình kiểm tra xem một số có phải là số chẵn hay không.

# Nhập số từ người dùng
so = int(input("Nhập một số: "))

# Kiểm tra và in ra kết quả
if so % 2 == 0:
print(f"{so} là số chẵn.")
else:
print(f"{so} là số lẻ.")

Bài Tập 2: Vòng Lặp

Viết một chương trình in ra các số từ 1 đến 10 và thông báo nếu số đó là số chẵn hay lẻ.

for so in range(1, 11):
if so % 2 == 0:
print(f"{so} là số chẵn.")
else:
print(f"{so} là số lẻ.")

Kết Luận

Điều khiển luồng là một phần thiết yếu trong lập trình, giúp bạn tạo ra các chương trình phức tạp và tương tác hơn. Nếu bạn cần thêm thông tin hoặc có câu hỏi cụ thể nào, hãy cho tôi biết!

Tìm Hiểu Về Hàm Trong Python

· 4 min read

Hàm là một trong những khái niệm cơ bản và quan trọng nhất trong lập trình Python. Chúng giúp tổ chức mã nguồn, tăng tính tái sử dụng và làm cho chương trình dễ dàng hơn để đọc và bảo trì. Dưới đây là một cái nhìn chi tiết về hàm trong Python, bao gồm cách định nghĩa, gọi hàm, và các khái niệm liên quan khác.

1. Định Nghĩa Hàm

Để định nghĩa một hàm trong Python, bạn sử dụng từ khóa def, theo sau là tên hàm và danh sách các tham số trong dấu ngoặc đơn. Sau đó, bạn sẽ viết mã của hàm trong khối lệnh.

Cú Pháp:

def ten_ham(tham_so1, tham_so2):
# Đoạn mã thực thi
return gia_tri

Ví dụ:

def chao_mung(ten):
print(f"Chào mừng {ten} đến với Python!")

Trong ví dụ này, hàm chao_mung nhận một tham số là ten và in ra một thông báo chào mừng.

2. Gọi Hàm

Sau khi định nghĩa hàm, bạn có thể gọi hàm bằng cách sử dụng tên của nó và truyền các tham số cần thiết.

Ví dụ:

chao_mung("Monica")

Khi bạn chạy đoạn mã này, nó sẽ in ra: "Chào mừng Monica đến với Python!"

3. Giá Trị Trả Về

Hàm có thể trả về giá trị bằng cách sử dụng từ khóa return. Điều này cho phép bạn lưu trữ kết quả của hàm vào một biến để sử dụng sau này.

Ví dụ:

def tong(a, b):
return a + b

ket_qua = tong(5, 3)
print(ket_qua) # In ra 8

Trong ví dụ này, hàm tong nhận hai tham số và trả về tổng của chúng.

4. Hàm Không Có Tham Số

Hàm có thể được định nghĩa mà không cần tham số. Điều này hữu ích khi bạn chỉ muốn thực hiện một tác vụ mà không cần dữ liệu đầu vào.

Ví dụ:

def in_thong_bao():
print("Đây là một thông báo!")

Khi bạn gọi in_thong_bao(), nó sẽ in ra thông báo mà không cần tham số.

5. Hàm với Tham Số Mặc Định

Bạn có thể đặt giá trị mặc định cho tham số trong hàm. Điều này cho phép bạn gọi hàm mà không cần cung cấp tất cả các tham số.

Ví dụ:

def chao_mung(ten="khách"):
print(f"Chào mừng {ten} đến với Python!")

chao_mung() # Sử dụng tham số mặc định
chao_mung("Monica") # Sử dụng tham số được chỉ định

Ở đây, nếu bạn không cung cấp tên, hàm sẽ sử dụng giá trị mặc định là "khách".

6. Hàm Lambda

Python cũng hỗ trợ hàm vô danh (lambda), cho phép bạn định nghĩa hàm ngắn gọn mà không cần sử dụng từ khóa def.

Ví dụ:

tong = lambda a, b: a + b
print(tong(5, 3)) # In ra 8

Hàm lambda thường được sử dụng khi bạn cần một hàm tạm thời.

7. Tầm Quan Trọng Của Hàm

Hàm không chỉ giúp mã nguồn trở nên gọn gàng hơn mà còn giúp cải thiện khả năng tái sử dụng mã. Bạn có thể định nghĩa các hàm cho các tác vụ lặp đi lặp lại, giúp giảm thiểu lỗi và tăng tốc độ phát triển phần mềm.

Kết Luận

Hàm là một phần thiết yếu trong lập trình Python, giúp bạn tổ chức mã nguồn một cách hiệu quả và tái sử dụng các đoạn mã. Bằng cách hiểu rõ cách định nghĩa và sử dụng hàm, bạn sẽ có thể viết mã sạch hơn và dễ bảo trì hơn. Nếu bạn muốn tìm hiểu thêm, hãy xem các tài nguyên như Automate the Boring Stuff with Python.

Nếu bạn có bất kỳ câu hỏi nào hoặc cần thêm thông tin, hãy cho tôi biết!

Câu Lệnh SELECT Trong SQL: Hướng Dẫn Chi Tiết

· 3 min read

1. Giới Thiệu Về Câu Lệnh SELECT

Câu lệnh SELECT là một trong những câu lệnh quan trọng nhất trong SQL, giúp truy vấn và lấy dữ liệu từ cơ sở dữ liệu. Nó là nền tảng của mọi thao tác truy vấn, cho phép người dùng chọn các cột cụ thể, lọc dữ liệu theo điều kiện, sắp xếp và nhóm dữ liệu.

2. Cấu Trúc Cơ Bản Của SELECT

SELECT column1, column2, ...
FROM table_name;
  • SELECT: Chỉ định các cột cần lấy dữ liệu.
  • FROM: Xác định bảng chứa dữ liệu.

Ví dụ:

SELECT first_name, last_name FROM employees;

Câu lệnh này lấy dữ liệu từ hai cột first_namelast_name trong bảng employees.

3. Sử Dụng SELECT Với DISTINCT

DISTINCT giúp loại bỏ các giá trị trùng lặp trong kết quả.

SELECT DISTINCT country FROM customers;

Câu lệnh trên trả về danh sách các quốc gia duy nhất trong bảng customers.

4. Lọc Dữ Liệu Với WHERE

Mệnh đề WHERE giúp lọc dữ liệu theo điều kiện nhất định.

SELECT * FROM employees WHERE department = 'IT';

Lệnh này chọn tất cả nhân viên thuộc phòng ban IT.

Các toán tử phổ biến trong WHERE:

  • =: Bằng
  • <> hoặc !=: Khác
  • > hoặc <: Lớn hơn hoặc nhỏ hơn
  • LIKE: Tìm kiếm mẫu dữ liệu
  • IN: Tìm giá trị trong danh sách
  • BETWEEN: Lọc trong khoảng giá trị

Ví dụ:

SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';

5. Sắp Xếp Dữ Liệu Với ORDER BY

Mệnh đề ORDER BY giúp sắp xếp kết quả theo một hoặc nhiều cột.

SELECT first_name, last_name FROM employees ORDER BY last_name ASC;
  • ASC: Sắp xếp tăng dần (mặc định)
  • DESC: Sắp xếp giảm dần

6. Giới Hạn Kết Quả Với LIMIT (MySQL) hoặc TOP (SQL Server)

Khi cần lấy một số lượng dòng giới hạn, ta có thể sử dụng:

  • LIMIT trong MySQL, PostgreSQL:
SELECT * FROM employees LIMIT 10;
  • TOP trong SQL Server:
SELECT TOP 10 * FROM employees;

7. Nhóm Dữ Liệu Với GROUP BY

Mệnh đề GROUP BY giúp nhóm dữ liệu theo một hoặc nhiều cột.

SELECT department, COUNT(*) AS total_employees FROM employees GROUP BY department;

Câu lệnh này đếm số lượng nhân viên trong từng phòng ban.

8. Lọc Dữ Liệu Sau Khi Nhóm Với HAVING

Khác với WHERE, HAVING dùng để lọc dữ liệu sau khi đã nhóm.

SELECT department, COUNT(*) AS total_employees FROM employees
GROUP BY department HAVING COUNT(*) > 10;

Lệnh trên chỉ hiển thị các phòng ban có hơn 10 nhân viên.

9. Kết Hợp Dữ Liệu Từ Nhiều Bảng Với JOIN

Khi cần lấy dữ liệu từ nhiều bảng liên quan, ta sử dụng JOIN.

SELECT employees.first_name, employees.last_name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;

Câu lệnh này kết hợp bảng employeesdepartments để lấy tên nhân viên và tên phòng ban của họ.

10. Kết Luận

Câu lệnh SELECT là công cụ mạnh mẽ để truy vấn dữ liệu trong SQL. Nắm vững cách sử dụng SELECT cùng các mệnh đề như WHERE, ORDER BY, GROUP BY, HAVING, và JOIN giúp bạn thao tác dữ liệu hiệu quả hơn. Hãy thực hành nhiều để thành thạo các kỹ thuật này!

Dự kiến hệ thống KRX sẽ go-live chính thức vào tháng 5 tới

· 2 min read

Theo báo Nhân Dân, hệ thống KRX dự kiến sẽ chính thức go-live vào tháng 5 năm nay. Đây là một trong những bước tiến quan trọng nhằm hiện đại hóa thị trường chứng khoán Việt Nam, nâng cao hiệu suất giao dịch và tăng cường khả năng kết nối với thị trường quốc tế.

Hệ thống KRX

Những điểm nổi bật của hệ thống KRX:

  • Tăng tốc độ xử lý giao dịch, giúp giảm thời gian chờ và nâng cao trải nghiệm của nhà đầu tư.
  • Cung cấp các sản phẩm mới, bao gồm giao dịch T+0 và các công cụ phái sinh nâng cao.
  • Nâng cao năng lực giám sát thị trường, đảm bảo minh bạch và công bằng hơn trong giao dịch chứng khoán.
  • Tích hợp công nghệ tiên tiến, hỗ trợ các chuẩn mực giao dịch hiện đại.

Hệ thống KRX đã được chuẩn bị trong nhiều năm và hiện đang trong giai đoạn thử nghiệm cuối cùng trước khi triển khai chính thức. Việc hệ thống mới đi vào hoạt động sẽ đánh dấu một cột mốc quan trọng trong quá trình chuyển đổi số của thị trường chứng khoán Việt Nam.

🔗 Xem chi tiết bài viết gốc:
Nhân Dân

🔥 NÓNG: HOSE bắt đầu kiểm thử hệ thống KRX từ 17/03/2025

· 2 min read

Theo thông tin từ CafeF, Sở Giao dịch Chứng khoán TP.HCM (HOSE) sẽ chính thức bắt đầu kiểm thử hệ thống KRX từ ngày 17/03/2025. Đây là bước quan trọng trong quá trình chuẩn bị triển khai hệ thống giao dịch mới, giúp nâng cao hiệu suất thị trường chứng khoán Việt Nam.

Hệ thống KRX

🚀 Hệ thống KRX có gì đặc biệt?

🔹 Tăng tốc độ xử lý giao dịch, giảm tải hệ thống và nâng cao trải nghiệm nhà đầu tư.
🔹 Hỗ trợ giao dịch T+0, giúp thanh khoản thị trường tốt hơn.
🔹 Cung cấp các công cụ phái sinh mới, mở rộng cơ hội đầu tư.
🔹 Nâng cao năng lực giám sát và minh bạch thị trường.

📆 Lộ trình triển khai

  • 17/03/2025: Bắt đầu kiểm thử hệ thống KRX.
  • Tháng 5/2025: Dự kiến hệ thống go-live chính thức.

Hệ thống KRX là một trong những dự án chuyển đổi số quan trọng nhất của thị trường chứng khoán Việt Nam. Việc triển khai thành công sẽ giúp thị trường tiếp cận chuẩn mực quốc tế và thu hút nhiều nhà đầu tư hơn.

📢 Bạn nghĩ gì về sự thay đổi này? Hãy chia sẻ ý kiến của bạn!

🔗 Xem chi tiết bài viết gốc:

Biểu đồ phân phối chuẩn với khoảng tin cậy 95%

· 2 min read

Giới thiệu

Bài viết này hướng dẫn cách vẽ biểu đồ phân phối chuẩn với khoảng tin cậy 95% bằng thư viện Plotly trong Python.

Mã nguồn

import numpy as np
import plotly.graph_objects as go
from scipy.stats import norm

# Xác định các giá trị cho phân phối chuẩn
mu = 0
sigma = 1
x = np.linspace(mu - 4*sigma, mu + 4*sigma, 1000)
y = norm.pdf(x, mu, sigma)

# Tính z-score cho khoảng tin cậy 95%
confidence_level = 0.95
alpha = 1 - confidence_level
z = norm.ppf(1 - alpha / 2)

# Vùng tô màu cho khoảng tin cậy 95%
x_fill = np.linspace(-z, z, 1000)
y_fill = norm.pdf(x_fill, mu, sigma)

# Tạo biểu đồ bằng Plotly
fig = go.Figure()

# Đường phân phối chuẩn
fig.add_trace(go.Scatter(x=x, y=y, mode='lines', name='Phân phối chuẩn', line=dict(color='blue')))

# Đường z-score
fig.add_trace(go.Scatter(x=[z, z], y=[0, norm.pdf(z, mu, sigma)], mode='lines', name=f'z = {z:.2f}', line=dict(color='red', dash='dash')))
fig.add_trace(go.Scatter(x=[-z, -z], y=[0, norm.pdf(-z, mu, sigma)], mode='lines', name=f'z = -{z:.2f}', line=dict(color='red', dash='dash')))

# Vùng tô màu khoảng tin cậy 95%
fig.add_trace(go.Scatter(x=np.concatenate(([x_fill[0]], x_fill, [x_fill[-1]])),
y=np.concatenate(([0], y_fill, [0])),
fill='tozeroy', fillcolor='rgba(255, 0, 0, 0.3)',
line=dict(color='rgba(255, 0, 0, 0)'),
name='Khoảng tin cậy 95%'))

# Định dạng biểu đồ
fig.update_layout(title='Biểu đồ phân phối chuẩn với khoảng tin cậy 95%',
xaxis_title='Z-score',
yaxis_title='Mật độ xác suất',
template='plotly_white',
xaxis_rangeslider_visible=False,
width=1200, # Đặt chiều rộng lớn hơn
height=600 # Đặt chiều cao hợp lý
)

# Hiển thị biểu đồ
fig.show()

fig.write_html("bieu_do_phan_phoi_chuan.html", full_html=True, include_plotlyjs="cdn")

Kết luận

Mã nguồn trên giúp vẽ biểu đồ phân phối chuẩn với khoảng tin cậy 95% bằng Plotly. Bạn có thể xuất biểu đồ dưới dạng file HTML để dễ dàng chia sẻ hoặc nhúng vào trang web.

Gửi Email Hàng Loạt Bằng Python và SMTP

· 3 min read

Giới Thiệu

Bài viết này hướng dẫn cách gửi email hàng loạt từ file Excel bằng Python. Chúng ta sẽ sử dụng thư viện pandas để đọc danh sách email và smtplib để gửi email thông qua SMTP.

Cảnh Báo Bảo Mật ⚠️

Không bao giờ lưu trữ mật khẩu trực tiếp trong mã nguồn. Thay vào đó, bạn nên sử dụng:

  • Biến môi trường (os.environ)
  • Tệp cấu hình (config.ini, .env)
  • OAuth2 thay vì đăng nhập bằng tài khoản thông thường

Cài Đặt Thư Viện

Trước tiên, hãy cài đặt các thư viện cần thiết:

pip install pandas openpyxl

Cấu Trúc File Excel

File Excel cần có hai cột như sau:

NameEmail
Tuantuan@email.com
Anan@email.com

Lưu file với tên email_list.xlsx để chương trình có thể đọc dữ liệu.

Mã Python Gửi Email Hàng Loạt

import pandas as pd
import smtplib
import os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# Đọc dữ liệu từ file Excel
file_path = 'email_list.xlsx' # Đảm bảo tệp có cột "Email" và "Name"
df = pd.read_excel(file_path)

# Cấu hình SMTP server
smtp_server = 'smtp.gmail.com'
smtp_port = 587
smtp_username = os.getenv("SMTP_USER") # Lấy từ biến môi trường
smtp_password = os.getenv("SMTP_PASS") # Lấy từ biến môi trường

# Kiểm tra thông tin đăng nhập
if not smtp_username or not smtp_password:
raise ValueError("Chưa cấu hình thông tin đăng nhập SMTP")

# Thiết lập kết nối SMTP
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(smtp_username, smtp_password)

# Gửi email cho từng hàng trong file Excel
for index, row in df.iterrows():
recipient_email = row['Email']
recipient_name = row['Name']

# Tạo email
msg = MIMEMultipart()
msg['From'] = smtp_username
msg['To'] = recipient_email
msg['Subject'] = 'Cách Gửi Email Hàng Loạt Bằng Python'

body = f"""
Xin chào {recipient_name},

Đây là email thông báo quan trọng.

Trân trọng,
Nhóm hỗ trợ
"""
msg.attach(MIMEText(body, 'plain'))

# Gửi email
server.sendmail(smtp_username, recipient_email, msg.as_string())
print(f"Đã gửi email đến {recipient_email}")

# Đóng kết nối
server.quit()

Lưu Ý

  • Bạn cần bật Less Secure Apps hoặc sử dụng OAuth2 khi làm việc với Gmail.
  • Không chia sẻ mật khẩu SMTP trên mã nguồn công khai.
  • Thử nghiệm trên tài khoản test trước khi gửi email hàng loạt.

Gửi email hàng loạt bằng Python, Python gửi email tự động

SMTP Gmail Python, gửi email với pandas, smtplib Python

Học cách gửi email hàng loạt bằng Python với pandas và smtplib. Hướng dẫn chi tiết từng bước kèm mã nguồn dễ hiểu.

Liên Kết Hữu Ích

Chúc bạn thành công! 🚀

Học Lập Trình Python Mỗi Ngày: Xây Dựng Ứng Dụng Kiểm Tra Đạo Văn Bằng Machine Learning

· 3 min read

Bạn muốn học lập trình Python và phát triển mỗi ngày? Một cách tuyệt vời để nâng cao kỹ năng của bạn là thực hành với các dự án thực tế. Hôm nay, chúng ta sẽ cùng tìm hiểu cách xây dựng ứng dụng kiểm tra đạo văn bằng Python, Machine Learning và NLP.

1. Giới Thiệu Về Ứng Dụng Kiểm Tra Đạo Văn

Trong thời đại kỹ thuật số, việc kiểm tra nội dung trùng lặp trở nên quan trọng hơn bao giờ hết. Công cụ kiểm tra đạo văn giúp so sánh hai văn bản và tính toán mức độ tương đồng giữa chúng.

Chúng ta sẽ sử dụng các thư viện Python phổ biến như:

  • pdfplumber: Để trích xuất văn bản từ file PDF.
  • spaCy: Xử lý ngôn ngữ tự nhiên (NLP), giúp tiền xử lý dữ liệu văn bản.
  • scikit-learn: Để tính toán độ tương đồng văn bản bằng phương pháp TF-IDF và cosine similarity.
  • Streamlit: Tạo giao diện web đơn giản và nhanh chóng.

2. Cách Hoạt Động Của Ứng Dụng

Bước 1: Trích Xuất Văn Bản Từ File PDF

Chúng ta sử dụng thư viện pdfplumber để đọc và trích xuất nội dung từ file PDF:

import pdfplumber

def extract_text_from_pdf(pdf_path):
text = ""
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
text += page.extract_text() + "\n"
return text

Bước 2: Tiền Xử Lý Văn Bản

Tiếp theo, chúng ta sẽ sử dụng spaCy để loại bỏ stopwords, dấu câu và chuyển đổi từ về dạng gốc (lemmatization):

import spacy

nlp = spacy.load("en_core_web_sm")

def preprocess_text(text):
doc = nlp(text)
tokens = [token.lemma_ for token in doc if not token.is_stop and not token.is_punct]
return " ".join(tokens)

Bước 3: Kiểm Tra Đạo Văn Bằng Cosine Similarity

Chúng ta sẽ sử dụng TF-IDF Vectorizer để chuyển đổi văn bản thành vector và tính toán độ tương đồng bằng cosine similarity:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

def check_plagiarism(text1, text2):
documents = [text1, text2]
vectorizer = TfidfVectorizer().fit_transform(documents)
vectors = vectorizer.toarray()
csim = cosine_similarity(vectors)
return csim[0, 1]

Bước 4: Xây Dựng Giao Diện Bằng Streamlit

Cuối cùng, chúng ta tạo giao diện web đơn giản với Streamlit, cho phép người dùng tải lên hai file PDF và kiểm tra mức độ trùng lặp nội dung:

import streamlit as st

st.title("Plagiarism Checker")

uploaded_file1 = st.file_uploader("Choose the first PDF file", type="pdf")
uploaded_file2 = st.file_uploader("Choose the second PDF file", type="pdf")

if uploaded_file1 is not None and uploaded_file2 is not None:
text1 = extract_text_from_pdf(uploaded_file1)
text2 = extract_text_from_pdf(uploaded_file2)

processed_text1 = preprocess_text(text1)
processed_text2 = preprocess_text(text2)

similarity = check_plagiarism(processed_text1, processed_text2)

st.write(f"Similarity: {similarity * 100:.2f}%")

3. Chạy Ứng Dụng Kiểm Tra Đạo Văn

Để chạy ứng dụng, bạn chỉ cần cài đặt các thư viện cần thiết và chạy lệnh sau trong terminal:

pip install pdfplumber spacy scikit-learn streamlit
python -m spacy download en_core_web_sm
streamlit run your_script.py

4. Kết Luận

Dự án này giúp bạn thực hành các kỹ thuật xử lý ngôn ngữ tự nhiên (NLP), làm việc với dữ liệu văn bản và xây dựng ứng dụng web bằng Python. Nếu bạn muốn phát triển thêm, có thể:

  • Mở rộng ứng dụng với nhiều file PDF hơn.
  • Tích hợp cơ sở dữ liệu để lưu trữ kết quả kiểm tra đạo văn.
  • Tăng cường mô hình bằng thuật toán NLP nâng cao như BERT.

Hãy thử xây dựng ngay hôm nay và tiếp tục học lập trình Python mỗi ngày! 🚀

Học Lập Trình Python: Trích Xuất Văn Bản Từ PDF và Xử Lý Ngôn Ngữ Tự Nhiên

· 3 min read

Python là một trong những ngôn ngữ lập trình phổ biến nhất hiện nay, đặc biệt mạnh mẽ trong xử lý dữ liệu và trí tuệ nhân tạo. Trong bài viết này, chúng ta sẽ khám phá cách trích xuất văn bản từ tệp PDF và phân tích ngôn ngữ tự nhiên bằng Python, sử dụng pdfplumberspaCy.

1. Trích Xuất Văn Bản Từ PDF Bằng Python

Khi làm việc với dữ liệu văn bản, đôi khi bạn cần trích xuất nội dung từ các tệp PDF để phân tích hoặc xử lý tiếp. Thư viện pdfplumber giúp chúng ta đọc và lấy văn bản từ từng trang của tệp PDF một cách dễ dàng.

Cài đặt thư viện:

Trước tiên, bạn cần cài đặt các thư viện cần thiết bằng lệnh sau:

pip install pdfplumber spacy
python -m spacy download en_core_web_sm

Mã nguồn trích xuất văn bản từ PDF:

import pdfplumber

def extract_text_from_pdf(pdf_path):
text = ""
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
text += page.extract_text() + "\n"
return text

# Đường dẫn đến tệp PDF
pdf_path = "sample.pdf"

# Trích xuất văn bản
text = extract_text_from_pdf(pdf_path)
print("Văn bản trích xuất từ PDF:")
print(text)

🔹 Giải thích:

  • pdfplumber.open(pdf_path): Mở tệp PDF.
  • page.extract_text(): Lấy văn bản từ từng trang.
  • Vòng lặp giúp duyệt qua tất cả các trang và nối văn bản lại.

2. Phân Tích Văn Bản Với SpaCy

Sau khi trích xuất văn bản, chúng ta có thể xử lý ngôn ngữ tự nhiên (NLP) để tìm các thực thể quan trọng như tên, địa điểm, tổ chức,… bằng thư viện spaCy.

Mã nguồn phân tích văn bản:

import spacy

def analyze_text(text):
nlp = spacy.load("en_core_web_sm")
doc = nlp(text)

# Trích xuất thực thể được đặt tên (Named Entities)
entities = [(ent.text, ent.label_) for ent in doc.ents]

# Tách câu trong văn bản
sentences = [sent.text for sent in doc.sents]

return entities, sentences

# Phân tích văn bản trích xuất
entities, sentences = analyze_text(text)

print("\nThực thể được đặt tên (Named Entities):")
for entity in entities:
print(entity)

print("\nCác câu trong văn bản:")
for sentence in sentences:
print(sentence)

🔹 Giải thích:

  • spacy.load("en_core_web_sm"): Tải mô hình NLP tiếng Anh.
  • doc.ents: Trích xuất thực thể được đặt tên (tên người, tổ chức, địa điểm,…).
  • doc.sents: Tách văn bản thành các câu riêng biệt.

3. Ứng Dụng Thực Tế

✅ Trích xuất dữ liệu từ báo cáo PDF để xử lý dữ liệu. ✅ Tìm kiếm thông tin quan trọng trong tài liệu như số điện thoại, địa chỉ, tên tổ chức. ✅ Hỗ trợ chatbot AI trong phân tích và hiểu văn bản.


Kết Luận

Python cung cấp nhiều công cụ mạnh mẽ như pdfplumberspaCy để làm việc với văn bản. Việc kết hợp cả hai thư viện này giúp bạn tự động hóa việc trích xuất và xử lý dữ liệu từ PDF, tiết kiệm thời gian và nâng cao hiệu quả làm việc.

Hãy thực hành mỗi ngày để phát triển kỹ năng lập trình Python, đặc biệt là trong xử lý dữ liệu và trí tuệ nhân tạo! 🚀


  • Học lập trình Python
  • Trích xuất văn bản từ PDF bằng Python
  • Xử lý ngôn ngữ tự nhiên với Python
  • Phân tích dữ liệu PDF bằng Python
  • Tự động hóa với Python