CƠ SỞ LÝ THUYẾT
Tổng quan về ngôn ngữ và các công cụ hỗ trợ
1.1.1 Tổng quan về lập trình Python và Laravel
Python là một ngôn ngữ lập trình hướng đối tượng mạnh mẽ và dễ học, được phát triển bởi Guido van Rossum Với kiểu dữ liệu động và cơ chế cấp phát bộ nhớ tự động, Python mang đến một cách tiếp cận đơn giản nhưng hiệu quả cho lập trình Cú pháp rõ ràng và dễ hiểu của Python giúp nó trở thành lựa chọn lý tưởng cho việc viết script và phát triển ứng dụng trên nhiều nền tảng khác nhau.
Laravel là một framework PHP mã nguồn mở miễn phí, được phát triển bởi Taylor Otwell và ra mắt lần đầu vào năm 2011 Nó được thiết kế để hỗ trợ phát triển ứng dụng web theo mô hình Model - View - Controller (MVC).
1.1.2 Các công cụ hỗ trợ
Hiện nay, có nhiều trình soạn thảo mã nguồn hỗ trợ lập trình và thực thi mã hiệu quả, trong đó Visual Studio Code nổi bật với khả năng tích hợp dễ dàng các extension Đây là công cụ mạnh mẽ mà chúng tôi sẽ sử dụng xuyên suốt đề tài.
Tổng quan về các nội dung thông tin được sử dụng
Hiện nay, chúng ta đang đối mặt với một lượng thông tin lớn và cần phải chọn lọc kỹ lưỡng Để đảm bảo tính chính xác, nguồn thông tin phải được xác thực từ các cơ quan uy tín Do đó, hệ thống sẽ sử dụng các nguồn thông tin đã được xác minh từ những báo điện tử có độ tin cậy cao như VnExpress.vn, Zing.vn, thanhnien.vn, Vietnamnet.vn, laodong.vn, tuoitre.vn và dantri.com.vn.
Tổng quan về học máy
Học máy, một nhánh của trí tuệ nhân tạo, được định nghĩa là lĩnh vực của khoa học máy tính có khả năng tự học từ dữ liệu mà không cần lập trình cụ thể Quy trình học máy tập trung vào việc xây dựng mô hình dựa trên các thuật toán để thực hiện các nhiệm vụ như phân loại, phân lớp và hồi quy Giai đoạn huấn luyện diễn ra với dữ liệu đầu vào, nhằm tạo ra mô hình dự đoán kết quả đầu ra, phụ thuộc vào mục tiêu ban đầu và cách thức thực hiện Quy trình học máy bao gồm nhiều bước chi tiết để đảm bảo hiệu quả trong việc phát triển mô hình.
Hình 1.1: Sơ đồ học máy
Quy trình học máy cơ bản được chia làm các giai đoạn sau:
Quá trình thu thập dữ liệu là bước quan trọng trong việc xây dựng dự án, đặc biệt là trong lĩnh vực học máy và hệ thống IoT Dữ liệu cần được thu thập từ nhiều nguồn khác nhau, bao gồm tập tin, cơ sở dữ liệu và cảm biến, để đảm bảo tính chính xác và hiệu quả của hệ thống Việc lựa chọn nguồn dữ liệu phù hợp sẽ ảnh hưởng trực tiếp đến chất lượng của mô hình mà chúng ta phát triển.
Tiền xử lý dữ liệu là giai đoạn quan trọng trong học máy, giúp xây dựng mô hình chính xác Quá trình này bao gồm việc làm sạch dữ liệu thô, được thu thập từ nhiều nguồn trong thế giới thực, và chuyển đổi thành một tập dữ liệu sạch.
Dữ liệu thô ban đầu thường gặp phải một số vấn đề như thiếu sót, không nhất quán và nhiễu Do đó, việc xử lý dữ liệu là cần thiết trước khi tiến hành áp dụng các phương pháp học máy.
Mục tiêu chính của chúng ta là phát triển một mô hình tối ưu cho loại dữ liệu cụ thể, thông qua việc nghiên cứu và áp dụng các thuật toán phân loại và phân lớp hiệu quả.
Để huấn luyện và kiểm thử mô hình, quá trình được chia thành ba giai đoạn: dữ liệu huấn luyện, dữ liệu xác nhận và dữ liệu kiểm thử Tập dữ liệu huấn luyện được sử dụng để xây dựng bộ phân lớp, trong khi tập dữ liệu xác nhận giúp tinh chỉnh các tham số Cuối cùng, hiệu suất của bộ phân loại được kiểm tra bằng cách sử dụng tập dữ liệu kiểm thử Lưu ý rằng dữ liệu kiểm thử không được phép sử dụng trong quá trình huấn luyện để đảm bảo tính khách quan của kết quả.
Đánh giá mô hình là một bước quan trọng trong quy trình phát triển, giúp xác định mô hình tối ưu nhất cho dữ liệu của chúng ta Quá trình này không chỉ tìm ra mô hình phù hợp mà còn dự đoán hiệu suất của nó trong tương lai.
- Natural Language Processing (NLP) - Xử lý ngôn ngữ tự nhiên là lĩnh vực
Khoa học máy tính kết hợp Trí tuệ nhân tạo và Ngôn ngữ học tính toán nhằm cải thiện tương tác giữa con người và máy tính, giúp máy tính hiểu và bắt chước ngôn ngữ con người Các ứng dụng phổ biến hiện nay bao gồm Siri, Cortana và Google Now.
NLTK, hay còn gọi là Natural Language Toolkit, là một thư viện Python mạnh mẽ hỗ trợ xử lý ngôn ngữ tự nhiên Được phát triển bởi Steven Bird và Edward Loper tại Khoa Máy Tính, Đại Học Pennsylvania vào năm 2001, NLTK cung cấp các công cụ và kỹ thuật phổ biến giúp việc xử lý ngôn ngữ trở nên nhanh chóng và dễ dàng hơn Thư viện này không chỉ hỗ trợ các tác vụ như phân loại, tách từ, gốc từ và gán nhãn, mà còn đi kèm với các mô phỏng đồ họa và dữ liệu mẫu hữu ích cho người dùng.
NLTK không chỉ hỗ trợ trong việc xử lý ngôn ngữ tự nhiên mà còn đóng vai trò quan trọng trong Machine Learning, giúp làm sạch và xử lý dữ liệu đầu vào cho các thuật toán Trong các bài viết sau, chúng ta sẽ dần khám phá các ứng dụng như parsing và lý luận ngữ nghĩa.
Quy trình xử lý và tóm tắt văn bản
Tiền xử lý văn bản là bước quan trọng để chuẩn hóa dữ liệu đầu vào, loại bỏ các ký tự, dấu câu và khoảng trắng thừa Việc chuyển đổi tất cả chữ cái về dạng chữ thường và loại bỏ các từ không mang ý nghĩa sẽ giúp cải thiện chất lượng văn bản, từ đó nâng cao hiệu quả cho các bước xử lý tiếp theo.
- Tách câu trong văn bản: Ở bước này, sẽ tách 1 đoạn văn bản cần tóm tắt đã qua xử lý thành 1 danh sách các câu của văn bản.
Để chuẩn bị cho phương pháp tóm tắt, các câu văn cần được chuyển đổi thành các vector số thực có độ dài cố định Việc này phải đảm bảo rằng sự khác biệt về ý nghĩa giữa hai câu được phản ánh tương ứng với sự sai khác giữa các vector được tạo ra.
- Xử lý văn bản: Sử dụng các thuật toán K-Means Clustering, LSA và
Text Rank sẽ giúp phân tích ra những cụm câu có ý nghĩa giống nhau, để từ đó chọn lọc và loại bỏ bớt các câu có cùng ý nghĩa.
Để xây dựng một đoạn văn tóm tắt, sau khi phân loại các cụm theo ý nghĩa, cần chọn một câu duy nhất từ mỗi cụm để tạo thành văn bản tóm tắt Việc này giúp làm nổi bật thông tin quan trọng và dễ dàng tiếp cận Danh mục ký hiệu và chữ viết tắt cũng cần được xác định rõ ràng để người đọc có thể hiểu nội dung một cách hiệu quả.
Tổng quan về thuật toán sử dụng tóm tắt văn bản
Kmeans là một thuật toán học máy không giám sát, thuộc lĩnh vực phân cụm Thuật toán này nhận đầu vào là các điểm dữ liệu và tạo ra đầu ra là các cụm tương ứng, trong đó các điểm trong cùng một cụm có mối quan hệ chặt chẽ hơn với nhau so với các điểm thuộc cụm khác.
- Với thuật toán Kmeans ta cần truyền thêm tham số là số cụm Kmeans sử dụng
Euclid để xác định sự giống nhau giữa hai điểm dữ liệu, hai điểm càng gần nhau thì độ tương tự giữa hai điểm này càng cao.
Kmeans là một thuật toán phổ biến trong Machine Learning, hoạt động dựa trên việc tính tổng khoảng cách từ một điểm đến tâm cụm tương ứng và tối ưu hóa thông qua thuật toán lặp Với ý tưởng đơn giản và dễ triển khai, Kmeans đã chứng minh hiệu quả cao trong nhiều bài toán.
1.5.1.2 Ý tưởng áp dụng thuật toán
- Sau khi xử lý và chuẩn hoá dữ liệu đầu vào, việc chọn số cụm là việc khó khăn.
Hệ thống này sử dụng 5 cụm từ để xử lý và tối ưu hóa nội dung bài báo Sau khi tóm tắt, bài báo sẽ có độ dài là 5 câu Việc sử dụng các cụm từ này giúp truyền tải thông tin một cách hiệu quả Qua đó, nội dung trở nên cô đọng và dễ hiểu hơn Điều này đảm bảo rằng người đọc nhanh chóng nắm bắt được ý chính của bài viết.
- Bước 1: Khởi tạo 5 điểm dữ liệu trong bộ dữ liệu và tạm thời coi nó là tâm của các cụm dữ liệu của chúng ta.
- Bước 2: Với mỗi điểm dữ liệu trong bộ dữ liệu, tâm cụm của nó sẽ được xác định là 1 trong 5 tâm cụm gần nó nhất.
Sau khi tất cả các điểm dữ liệu đã được xác định tâm, bước tiếp theo là tính toán lại vị trí của tâm cụm để đảm bảo rằng tâm của cụm nằm chính giữa các điểm dữ liệu.
Bước 4: Tiến trình lặp lại bước 2 và bước 3 cho đến khi vị trí của tâm cụm ổn định hoặc khi tâm của tất cả các điểm dữ liệu không còn thay đổi.
1.5.2 Thuật toán LSA (Latent Semantic Analysis)
LSA (Phân tích không gian tiềm ẩn) là một trong những kỹ thuật nổi bật trong Xử lý Ngôn ngữ Tự nhiên (NLP), nhằm xác định các chủ đề trong văn bản thông qua việc phân tích các thành phần bằng phương pháp toán học Kỹ thuật này thuộc loại học tập không giám sát và dựa trên hai yếu tố chính.
- Giả thuyết phân bố, cho rằng các từ có nghĩa giống nhau thường xuyên xuất hiện cùng nhau.
- Phân rã giá trị đơn lẻ.
LSA (Latent Semantic Analysis) là một phương pháp phân tích văn bản, cho phép tái tạo các tài liệu thành nhiều phần khác nhau, mỗi phần diễn đạt ý nghĩa tương tự nhưng theo cách khác nhau Ví dụ, câu "Hôm nay tôi không khoẻ!" có thể được diễn đạt bằng câu "Hôm nay tôi cảm thấy mệt!" mà vẫn giữ nguyên ý nghĩa Thuật toán LSA hoạt động bằng cách phân chia các từ trong văn bản thành một bảng, thể hiện các ý nghĩa tiềm ẩn của từ trong văn bản gốc.
1.5.2.2 Ý tưởng áp dụng thuật toán
LSA (Latent Semantic Analysis) là một thuật toán trong mô hình chủ đề, được sử dụng để phân loại các chủ đề Thuật toán này hoạt động dựa trên phân tích suy biến ma trận của văn bản đầu vào (A), nhằm xác định không gian tuyến tính con của A trong khi vẫn giữ lại hầu hết các biến động của ma trận Nói cách khác, LSA thực hiện việc giảm chiều dữ liệu đầu vào thông qua phân tích ma trận, giúp cải thiện khả năng nhận diện và phân loại các chủ đề.
Giả sử ma trận A biểu diễn mối quan hệ giữa tài liệu và từ, với kích thước m x n Phép phân tích suy biến (SVD) sẽ chuyển đổi ma trận A thành tích của ba ma trận: ma trận suy biến trái U, ma trận đường chéo S và ma trận suy biến phải V, theo công thức A = U * S * V.
- Hình : Sơ đồ công thức LSA -
- Mỗi dòng của U sẽ biểu diễn phân phối của văn bản và mỗi dòng của V là phân phối của mỗi từ theo t topics ẩn.
- - Các cột của U và V đại diện cho các topics.
Để xác định sự tương đồng giữa hai văn bản hoặc hai từ, chúng ta cần tính toán độ tương quan của các véc tơ dòng tương ứng trong ma trận U hoặc ma trận V.
- Phép phân tích này giảm được khá nhiều chiều đối với trường hợp bộ văn bản lớn Tuy nhiên nó vẫn tồn tại những nhược điểm đó là:
- Các tính toán hoàn toàn dựa trên phân tích ma trận.
- Các topic được xác định dựa trên các phép chiếu tuyến tính nên mối quan hệ giữa topic-document và topic-term là tuyến tính.
- Chi phí tinh toán của mô hình rất tốn kém nếu kích thước dữ liệu lớn
TextRank là một thuật toán được phát triển dựa trên PageRank, nhằm xếp hạng các trang web của Google Thuật toán này gán giá trị cho từng thành phần trong một tập hợp văn bản liên kết, như mạng Internet, để đo lường tầm quan trọng tương đối của các liên kết TextRank có thể áp dụng cho bất kỳ tập hợp văn bản nào có trích dẫn và liên kết cụ thể, với giá trị mà nó gán cho mỗi thành phần E được gọi là PageRank của E và được ký hiệu là PR(E).
- Hình : Sơ đồ đánh giá giá trị của thuật toán PageRank
Giá trị PageRank được hình thành từ một thuật toán toán học dựa trên webgraph, trong đó các trang web được coi là các đỉnh và các đường link là các cạnh Khi xây dựng webgraph, các trang của các cơ quan có thẩm quyền như cnn.com hay usa.gov được xem xét để xác định tầm quan trọng của từng trang cụ thể Mỗi đường link trỏ đến trang web sẽ được tính là một sự hỗ trợ, góp phần làm tăng giá trị PageRank của trang đó.
Giá trị PageRank của một trang web được xác định theo cách đệ quy, phụ thuộc vào số lượng và chất lượng của các liên kết đến trang đó Cụ thể, nếu một trang nhận nhiều liên kết từ các trang có PageRank cao, giá trị PageRank của nó cũng sẽ tăng theo Nhiều bài viết đã được công bố dựa trên nghiên cứu gốc của Page và Brin về vấn đề này.
Thuật toán TextRank được phát triển để xếp hạng các câu trong văn bản dựa trên mức độ tương tự giữa chúng Mỗi câu được biểu diễn dưới dạng một đỉnh, và cạnh nối thể hiện độ tương đồng giữa các câu Qua đó, thuật toán xác định các đỉnh có rank cao nhất, từ đó tìm ra những câu quan trọng nhất trong văn bản.
1.5.3.2 Ý tưởng áp dụng thuật toán
THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG
Phân tích hệ thống
2.1.1 Biểu đồ phân rã chức năng
2.1.2 Biểu đồ Use Case tổng quát
- Tim kiếm và xem tin tức
- Thêm và xoá bình luận
- Hình 2.1: Biểu đồ Use Case tổng quát
- 2.1.3 Xác định actor và chức năng
STT - Tác nhân - Mô tả tác nhân
- Guest - Là đối tượng chưa có tài khoản trong hệ thống.
- Đăng kí, tìm kiếm bài viết, xem thông tin trang web.
- Amin - Là người hỗ trợ quản lí nắm bắt các nghiệp vụ của website
- Đăng nhập, tìm kiếm, quản lí User, quản lí bình luận và đánh giá, quản lí bài viết, thêm, xóa và sửa tài khoản trong hệ thống.
- User - Là đối tượng đã có tài khoản trong hệ thống
- Đăng nhập, tìm kiếm bài viết, xem thông tin trên website, bình luận về bài viết, lưu thông tin bài viết, gợi ý bài viết theo sở thích.
- Bảng 2.1: Xác định actor và chức năng
Hình 2.2: Biểu đồ UC User
Hình 2.3: Biểu đồ UC Guest -
2.1.4 Biểu đồ Use case chi tiết
- 2.1.4.4 Biểu đồ UC quản lý User
-Hình 2.4: Biểu đồ UC quản lý User
2.1.5 Đặc tả các ca sử dụng
- 1 Use Case đăng ký của Guest
2.1.4.3 Biểu đồ UC quản lý tin tức
Hình 2.3: Biểu đồ UC quản lý tin tức-
- Pre-conditions - Chưa có tài khoản
- Basic Flows 1 Người dùng chọn đăng ký tài khoản
2 Hệ thống hiển thị from đăng kí
3 Điền đầy đủ thông tin vào form
- Alternative Flows - Nếu người dùng điền sai, thiếu thông tin hệ thống sẽ báo lỗi và gửi lại form đăng ký
- Nếu thực hiện đăng ký thành công người dùng có tài khoản trong hệ thống website
- Special Requiements - Chưa tồn tại username trên hệ thống
- Brief Description - Người dùng có tài khoản muốn đăng nhập
- Basic Flows 1 Người dùng chọn đăng nhập tài khoản
2 Hệ thống hiển thị from đăng nhập
3 Điền đầy đủ thông tin vào form
- Alternative Flows - Nếu người dùng điền sai, thiếu thông tin hệ thống sẽ báo lỗi và gửi lại form đăng nhập
- Post-conditions - Nếu thực hiện đăng nhập thành
- - 2.1 Use Case quên mật khẩu
- Brief Description - Người sử dụng muốn thoát khỏi phiên làm việc
- Basic Flows 1 Người dùng chọn Đăng xuất
2 Hệ thống hiển thị yêu cầu đăng xuất
3 Người dùng đồng ý đăng xuất
- Alternative Flows - Nếu người dùng không đồng ý, hệ thống sẽ tiếp tục phiên làm việc.
- Post-conditions - Nếu thực hiện đăng xuất thành công người dùng kết thúc phiên làm việc của mình.
- -4 Use Case quản lý thông tin
- Use Case - Quản lý thông tin
- Brief Description - Người dùng đã có tài khoản và muốn thay đổi thông tin.
- Basic Flows - 1 Người dùng chọn Quản lý
- 2 Hệ thống hiển thị Menu
- Nếu thực hiện thay đổi thành công người dùng có thể cập nhật thông tin mới vào hệ thống.
- Special Requiements - Tồn tại thông tin trên hệ thống-
-4.1 Use Case thay đổi mật khẩu
- Use Case - Thay đổi mật khẩu
- Brief Description - Người dùng muốn thay đổi mật khẩu
- Basic Flows 1 Người dùng chọn thay đổi mật khẩu
2 Hệ thống hiển thị from thay đổi
3 Điền đầy đủ thông tin vào form
- Alternative Flows - Nếu người dùng điền sai, thiếu thông tin hệ thống sẽ báo lỗi và gửi lại form thay đổi
Nếu người dùng thực hiện thành công việc thay đổi mật khẩu, họ sẽ có thể đăng nhập vào hệ thống bằng mật khẩu mới Hệ thống sẽ tự động cập nhật mật khẩu mới cho người dùng.
- Special Requiements - Tồn tại thông tin trên hệ thống -
- - 4.2 Use Case thay đổi thông tin cá nhân
- Use Case - Thay đổi thông tin cá nhân
- Brief Description - Người dùng có thông tin cá nhân cần thay đổi
- 2 Hệ thống hiển thị from thay đổi
3 Điền đầy đủ thông tin vào form
- Alternative Flows - Nếu người dùng điền sai, thiếu thông tin hệ thống sẽ báo lỗi và gửi lại form thay đổi
- Post-conditions - Nếu thực hiện thành công, hệ thống sẽ cập nhật thông tin mới của người dùng
- Special Requiements - Tồn tại thông tin trên hệ thống -
- - 5 Use Case xem tin tức
- Use Case - Xem tin tức
- Brief Description - Người dùng xem tin trên trang web
- Basic Flows 1 Người dùng chọn vào các mục bài viết
2 Hệ thống hiển thị bài viết
- Post-conditions - Người dùng sẽ xem được các bài viết
- - viết theo tiêu đề và các nhãn bài viết
- Basic Flows 1 Hệ thống sẽ hiển thị 1 form với các tiêu chí muốn tìm kiếm
2 Người dùng nhập thông tin trên form và bấm nút tìm kiếm, hệ thống sẽ truy vấn database và hiển thị kết quả tìm kiếm
- Alternative Flows - Nếu người dùng nhập sai hay thiếu tiêu chí nào thì hệ thống sẽ không hiển thị kết quả
- Hệ thống có thể chỉ định tìm kiếm lại hoặc hủy thao tác tìm kiếm
- Post-conditions - Nếu tìm kiếm thành công thì bài viết sẽ được hiển thị
- Brief Description - Người dùng bình luận vào bài viết.
- Basic Flows 1 Hệ thống sẽ hiển thị 1 form để nhập nội dung bình luận
2 Người dùng nhập thông tin trên form và bấm nút submit, hệ thống
- Post-conditions - Mỗi khi truy cập bài viết có bình luận, thì các bình luận sẽ được hiện thị
- - 6 Use Case quản lý User
- Use Case - Quản lý User
- Brief Description - Admin quản lý các thông tin
- Basic Flows 1 Admin chọn phần quản lý User
2 Hệ thống hiện thị menu
- Post-conditions - Menu quản lý được hiện thị
- Special Requiements - Là tài khoản Admin
- - 6.1 Use Case reset mật khẩu
- Use Case - Reset mật khẩu
- Brief Description - Admin reset mật khẩu cho User bị quên
- 7 Use Case quản lý tài khoản
- Use Case - Quản lý tài khoản
- Brief Description - Admin quản lý các tài khoản trong cơ sở dữ liệu
- Basic Flows 1 Admin chọn quản lý tài khoản
2 Admin chọn xoá tài khoản
- Alternative Flows - Không xoá được tài khoản
- Post-conditions - Khi tài khoản bị xoá, người dùng đó không thể đăng nhập được vào hệ thống
- Special Requiements - Là tài khoản Admin
- - 8 Use Case quản lý bài viết
- Use Case - Quản lý bài viết
- Brief Description - Admin quản lý các bài viết trong cơ sở dữ liệu
1 Admin chọn quản lý bài viết
Special Requiements Là tài khoản Admin
- Post-conditions - Các thông tin của bài viết và các hành động đối với bài viết được hiện thị
- Special Requiements - Là tài khoản Admin
- - 8.1 Use Case sửa thông tin bài viết
- Use Case - Sửa thông tin bài viết
- Pre-conditions - Admin có thể sửa thông tin bài viết
- Basic Flows 1 Sau khi chọn mục “Thông tin bài viết” trong phần “Quản lý bài viết”
2 Chọn biểu tượng hình “bút chì” để sửa thông tin bài viết, hệ thống sẽ hiển thị form:
3 Khi Admin chọn nút xác nhận, hệ thống sẽ cập nhật thông tin vào database
- Post-conditions - Cập nhật thông tin bài viết
- - 8.2 Use Case xóa bài viết
- Use Case - Xóa bài viết
- Brief Desecription - Admin có thể xóa những bài viết
- Basic Flows 1 Sau khi chọn mục “Thông tin bài viết” trong phần “Quản lý bài viết”
2 Hệ thống sẽ hiện biểu tượng
3 Sau khi chọn biểu tượng đó, dữ liệu của bài viết sẽ bị xóa khỏi database
- Post-conditions - Bài viết sẽ không còn hiển thị trên hệ thống
Thiết kế giao diện người dùng
Giao diện người dùng là yếu tố quan trọng giúp người dùng tiếp cận và sử dụng kết quả từ mô hình Chúng tôi đã phát triển một môi trường web dựa trên nền tảng Java và Framework Spring Boot, mang lại giao diện tối ưu để cải thiện khả năng giao tiếp giữa Front-end và Back-end Điều này cũng giúp đội ngũ quản trị viên dễ dàng hơn trong việc quản lý và kiểm duyệt nội dung.
2.2.1.1 Admin có phần đăng nhập quản lý bài viết(thêm sửa xóa)
2.2.1.2 Hiển thị ra trang chủ các bài viết theo sắp xếp thời gian mới nhất
2.2.1.3 Hiển thị ra trang chủ các bài viết theo sắp xếp thời gian mới nhất
- Khách đã đăng ký tài khoản: User
- Khách chưa đăng ký tài khoản: Guest
- Người quản trị cấp cao nhất: Amin
Sau khi được xử lý, các nội dung sẽ được phân loại và trình bày trên trang web theo các thẻ đã được gắn nhãn từ trước, giúp các bài báo được sắp xếp vào các chỉ mục xác định.
- Các bài viết sẽ được trình bày ngắn gọn có cấu trúc gồm:
- Tiêu đề (đính kèm là link bài gốc)
- Ảnh đại diện cho bài viết
- Nội dung bài viết (30% bài viết gốc)
- Thanh chức năng text to speech
2.2.4 Cấu trúc trang web thực tế
- Hình : Trang hiển thị thông tin theo nhãn
- 2.2.4.3 Trang thông tin chi tiết từ bài
- Hình : Trang thông tin chi tiết
Chuẩn bị dữ liệu đầu vào
- Các nội dung được lấy từ các nguồn chính thống như: tuoitre.vn; VnExpress.vn;
- Zing.vn; thanhnien.vn; Vietnamnet.vn; laodong.vn; dantri.com.vn
2.3.1.1 Phân tích dữ liệu từ website:
- Các nội dung của báo điện tử thường sẽ có cấu trúc như sau:
- Hình 2.6: Hình ảnh từ báo VnExpress
2.3.1.2 Bóc tách dữ liệu từ mã nguồn của web:
2.2.1.3.1 Xác định thành phần cần thu thập
- Ảnh đại diện của bài viết
2.2.1.3.2 Phân tích và bóc tách dữ liệu từ mã nguồn
Mỗi trang web có cấu trúc mã nguồn riêng biệt dựa trên các thành phần khác nhau Do đó, tài liệu này sẽ tập trung vào việc phân tích và bóc tách dữ liệu từ mã nguồn của trang tuoitre.vn.
2.2.1.3.3 Đối với Link bài viết
Các bài viết sẽ được hiển thị trên trang chủ và các trang con dưới dạng tiêu đề kèm theo liên kết bài viết sử dụng thẻ với thuộc tính href chứa liên kết đến bài viết Để thực hiện điều này, bạn có thể sử dụng thư viện bs4 và requests trong Python để xử lý các bước cần thiết.
- Bước 1: Gửi một request với tham số là link trang chủ
- Bước 2: Lấy nội dung mã nguồn của request bằng phương thức content của thư viện request.
- Bước 3: Sử dụng thư viện bs4 để định dạng lại cho nội dung mã nguồn lấy được từ request.
- Bước 4: Sử dụng phương thức findAll() của thư viện bs4 để có thể tìm kiếm được tất cả các thẻ
chứa link trỏ đến bài viết.
- Bước 5: Sử dụng phương thức find() của thư viện bs4 để tìm tất các link trỏ đến bài viết nằm trong thẻ .
# Gửi request cho trang https://tuoitre.vn
- news = requests.get('https://tuoitre.vn')
# Định dạng lại mã nguồn lấy được từ request
- soup = BeautifulSoup(news.content, "html.parser")
# Tìm tất cả các thẻ chứa tiêu đề
- # Tìm tất cả các thẻ và lấy thuộc tính href chứa link trỏ đến bài viết
- links = [link.find('a').attrs["href"] for link in titles]
2.2.1.3.4 Đối với các thành phần khác
Các bài viết đều tuân theo một mẫu cố định, giúp xác định rõ ràng các thẻ chứa tiêu đề, thời gian đăng, mô tả, ảnh đại diện và nội dung Sử dụng thư viện bs4, chúng ta có thể tách các thành phần này ra khỏi mã nguồn và chuyển đổi chúng về định dạng văn bản thuần để tiện cho việc xử lý.
# Lấy tiêu đề bài viết
- title = soup.find("h1", class ="article-title").text
# Lấy ngày đăng bài viết
- date = soup.find("div", class ="date-time").text
# Lấy mô tả bài viết
- abstract = soup.find("h2", class ="sapo").text
# Lấy nội dung bài viết
- body = soup.find("div", id="main-detail-body").text
# Lấy ảnh đại diện bài viết
- 2.3.2 Bóc tách & Lọc dữ liệu về dạng chuẩn
Văn bản đầu vào thường chứa nhiều ký tự, dấu câu và khoảng trắng thừa, cùng với các từ viết tắt và chữ hoa Những yếu tố này có thể ảnh hưởng đến các bước xử lý sau này, vì vậy cần thiết phải làm sạch văn bản Chúng ta sẽ chuyển đổi văn bản về chữ thường và loại bỏ các khoảng trắng thừa để đảm bảo tính chính xác trong quá trình xử lý.
Văn bản sẽ được tách ra từ các thẻ HTML bằng thư viện bs4, giúp loại bỏ các thành phần dư thừa như tên thẻ và các yếu tố khác trong file HTML.
2.2.1.5 Lọc dữ liệu về dạng chuẩn
Văn bản đã được loại bỏ các ký tự đặc biệt, ký tự xuống dòng và các ký tự không mang nhiều ý nghĩa, giúp giữ nguyên nội dung ban đầu mà không làm thay đổi nhiều.
Xử lý dữ liệu đã chuẩn hoá
2.4.1 Tách câu trong văn bản
2.4.3 Sử dụng kỹ thuật chuyển từ thành vector số thực
- Để phục vụ cho phương pháp tóm tắt ở bước tiếp theo, cần chuyển các câu văn
Các câu có độ dài khác nhau được chuyển đổi thành các vector số thực với độ dài cố định, đồng thời vẫn phải giữ được sự khác biệt về ý nghĩa giữa hai câu, tương tự như sự khác biệt giữa hai vector được tạo ra.
2.4.4 Xây dựng đoạn văn bản tóm tắt
Bằng cách áp dụng ba thuật toán xử lý văn bản, chúng ta có thể thu được các đoạn văn có nội dung tương đồng Tuy nhiên, cần xác định mức độ giống nhau giữa các đoạn văn này và văn bản gốc để quyết định thuật toán nào sẽ được sử dụng cho nội dung cuối cùng.
Việc này cho phép lọc và loại bỏ các bài viết trùng lặp trên các trang khác nhau, giúp tiết kiệm tài nguyên hệ thống và nâng cao hiệu quả xử lý nội dung.
KẾT QUẢ THỰC NGHIỆM
Nộp bản cứng
- Sinh viên (hoặc nhóm sinh viên với tối đa 3 thành viên làm chung một đề tài) nộp
01 quyển đồ án TTCS tại văn phòng khoa CNTT trước ngày bảo vệ ít nhất 03 ngày. Mỗi quyển đồ án phải có các đặc điểm sau:
• Được in một mặt hoặc hai mặt nhằm tiết kiệm không gian lưu trữ.
• Được đóng bìa mềm và có bìa bóng kính Lưu ý: không dùng bìa cứng.
• Quyển phải có chữ ký của sinh viên sau Lời cam đoan và của giảng viên hướng dẫn.
Sinh viên cần nộp bản mềm đồ án TTCS theo hướng dẫn của Giảng viên, bao gồm đầy đủ nội dung trong đồ án dưới dạng file docx và pdf, kèm theo mã nguồn và hướng dẫn cài đặt Tất cả tài liệu phải được lưu trong cùng một thư mục và đặt tên theo định dạng: manhom_tendetai_tengvhd_nam.rar Sinh viên có thể nộp cho Giảng viên hướng dẫn qua link tới file trên cloud (như Google Drive, Microsoft OneDrive, v.v.) hoặc gửi trực tiếp file.
Bản quyền kết quả nghiên cứu
- Đồ án TTCS của sinh viên thường thuộc một trong hai kiểu sau đây:
Sinh viên thực hiện nhiệm vụ để hoàn thành quá trình học tập và tự tìm điều kiện làm việc cho đồ án của mình Họ có quyền khai thác và sử dụng đồ án cho các mục đích khác Khoa Công nghệ thông tin giữ quyền sử dụng kết quả đồ án và cam kết chia sẻ những kết quả này với tất cả những người quan tâm và có yêu cầu.
Thực hiện đề tài hay nhiệm vụ trong khuôn khổ chiến lược và chương trình khoa học là một phần quan trọng trong công việc của giảng viên hướng dẫn và cơ sở đào tạo.
Các cơ sở đào tạo như trung tâm, viện nghiên cứu và công ty cung cấp các phương tiện làm việc như máy móc, sách vở, điện thoại, truy cập internet và thiết bị thí nghiệm Trong trường hợp này, toàn bộ bản quyền của đồ án sẽ không thuộc về sinh viên.
Sinh viên chỉ nên sử dụng tài liệu cho mục đích nghiên cứu của đề tài mà không được phép sử dụng ở nơi khác Trong quá trình thực hiện, giảng viên hướng dẫn đóng vai trò quan trọng trong việc định hướng và cung cấp tài liệu tham khảo cần thiết.
Để hoàn thành công việc hiệu quả, cần tạo điều kiện cơ sở vật chất đầy đủ, bao gồm chỗ ngồi, máy tính, máy in, vật tư tiêu hao, phương tiện thông tin liên lạc và kết nối internet.