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
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! 🚀