1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ Án Môn Học Nhập Môn Lập Trình Khoa Học Dữ Liệu Đề Tài Xây Dựng Dữ Liệu Tìm Kiếm Tin Tức.pdf

20 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Trang 1

TRƯỜNG ĐẠI HỌC THỦ DẦU MỘTVIỆN KỸ THUẬT CÔNG NGHỆ

Lớp : D20HTTT01

GVHD : ThS Nguyễn Thế Bảo

Tháng 4/2023

Trang 2

MỤC LỤC

CHƯƠNG 1 TỔNG QUAN (1đ) 1

1 Giới thiệu tổng quan đề tài 1

2 Tổng quan Python: 1

3 Tổng quan về thu thập dữ liệu bằng Python 3

CHƯƠNG 2 THU THẬP DỮ LIỆU VÀ XÂY DỰNG HỆ THỐNG (6.5đ) 5

1 Mô tả dữ liệu đã thu thập 5

Trang 3

TRƯỜNG ĐH THỦ DẦU MỘT

VIỆN KỸ THUẬT CÔNG NGHỆ

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAMĐộc lập - Tự do – Hạnh phúcPHIẾU CHẤM TIỂU LUẬN

Thời gian: Địa điểm:

Phần 1 Nội dung (6.0 điểm)

STTNội dung đánh giáĐiểmtối đaKém(25%)

Tốt (100%) Điểmđánhgiá

lựa chọn ýtưởng

Chọn ýtưởngtrong sốđược đềnghị

Tìm kiếmvà đưa rađược ýtưởng khátốt

Tích cực tìmkiếm và chủđộng đưa raý tưởng

Xác định được các kỹthuật để thu thập và xửlý dữ liệu cho bài toáncần xây dựng

1.0 Sinh viênkhông xácđịnh đượckỹ thuậtđể thuthập và xửlý dữ liệu

Sinh viênxác định

thuật đểthu thập vàxử lý dữ

nhiều saisót

Sinh viênxác định

thuật đểthu thập vàxử lý dữliệu, cònmột vài saisót nhỏ

Sinh viênviết xác định

thuật để thuthập và xửlý dữ liệu.

không đángkể)

Sinh viên không thu thập được dữliệu như yêu cầu

Sinh viênthu thậpđược dữliệu khá tốt(từ 500 -1000 mẫu)

Sinh viênthu thậpđược dữ liệutốt (hơn1000 mẫu)

Trang 4

dựng được ứng dụng như yêu cầu

được ứng dụng như yêu cầu, nhưng khôngcó sắp xếp kết quả tìm kiếm được

được ứngdụng nhưyêu cầu, cósắp xếp kếtquả tìmkiếm được

được ứng

yêu cầu, cósắp xếp kếtquả tìmkiếm được,có kết hợpphươngpháp họcmáy trongtìm kiếm.

Phần 2 Trình bày (2.0 điểm)

đúng mẫuvà cònnhiều lỗichính tả

Đúng mẫu,còn nhiềulỗi chínhtả, lỗi địnhdạng

Đúng mẫu,còn mộtvài lỗi địnhdạng.

Đúng mẫu,đúng địnhdạng.

thuyếttrình chưatự tin,chưa thuhút ngườinghe

Ngườithuyếttrình cònmắc một sốlỗi (giọngnhỏ, đọc làchủ yếu,…)

Ngườithuyếttrình tự tin.

Ngườithuyết trìnhtự tin, thuhút ngườinghe.

Phần 3 Trả lời câu hỏi (2.0 điểm)

lời đượccâu hỏi đặtra

Trả lờiđược 50%câu hỏi đặtra, câu trảlời chưahoànchỉnh.

Trả lờiđược câuhỏi đặt ra,còn 1 vàisai sót nhỏ.

Trả lời chínhxác hầu hếtcâu hỏi đặtra

TÊN HỌ VÀ CHỮ KÝ XÁC NHẬN CỦA GV:

iii

Trang 6

LỜI MỞ ĐẦU

Hiện nay cuộc cách mạng khoa học-công nghệ đã giúp chúng ta phát triển một cách nhanh chóng đặc biệt là hệ thống tin tức báo chí.Tin tức đã chuyển mình từ xem một cách thủ công trên báo nay có thể xem trên điện thoại,máy tính một cách nhanh chóng trong thời đại 4.0 ngày nay.Trên mạng có rất nhiều loại tin tứcđa dạng nhưng cũng có nhiều loại tin tức lá cải,sai sự thật làm cho người xem không thể biết thông tin một cách chính xác vì vậy với việc học và nghiên cứu môn Nhập môn lập trình khoa học dữ liệu của thầy Nguyễn Thế Bảo nhóm em đã cố gắng xây dựng một website hệ thống tìm kiếm tin tức một cách có chọn lọc và chính xác, nhưng trong quá trình cũng sẽ có một số thiếu sót trục trặc của nhóm em nên mong thầy và các bạn thông cảm.Qua học môn Nhập môn lập trình khoa học dữ liệu nhóm em cũng đã tiếp thu nhiều kiến thức về lập trình Python và các cách xử lý dữ liệu.

v

Trang 7

CHƯƠNG 1 TỔNG QUAN (1đ)

1 Giới thiệu tổng quan đề tài

Đề tài "Xây dựng chức năng tìm kiếm bài báo từ các trang báo điện tử bằngnewspapers3k" nhằm mục đích phát triển một công cụ tự động thu thập thôngtin bài báo từ các trang báo điện tử bằng thư viện Python là newspapers3k Thưviện này được sử dụng phổ biến để thu thập dữ liệu báo chí trên Internet vớikhả năng lấy thông tin về tiêu đề bài báo, nội dung bài báo, tác giả, thời gianđăng bài, danh mục, địa chỉ URL và nhiều thông tin khác.

Việc sử dụng newspapers3k để xây dựng chức năng crawler bài báo từ các trangbáo điện tử sẽ giúp cho quá trình thu thập dữ liệu trở nên đơn giản hơn, tiếtkiệm thời gian và nhân lực so với việc tự viết mã hoặc sử dụng các công cụkhác Đồng thời, newspapers3k cũng cho phép tùy chỉnh các thông số cấu hìnhđể thu thập dữ liệu một cách chính xác và hiệu quả.

Với sự phổ biến của internet và công nghệ thông tin, việc thu thập và phân tíchdữ liệu trên mạng trở nên ngày càng quan trọng trong nghiên cứu, tiếp thị, phântích kinh doanh và giám sát thị trường Việc xây dựng chức năng crawler bàibáo từ các trang báo điện tử bằng newspapers3k sẽ giúp cải thiện độ chính xácvà tốc độ thu thập thông tin so với việc thu thập thủ công và là một công cụ hữuích cho các công ty, tổ chức và cá nhân muốn thu thập thông tin từ các trangbáo điện tử.

2 Tổng quan Python:

Python là một ngôn ngữ lập trình rất phổ biến và được sử dụng rộng rãi trên toàn thế giới Nó được sử dụng trong nhiều lĩnh vực khác nhau như phân tích dữ liệu, khoa học máy tính, trí tuệ nhân tạo, phát triển web, game và nhiều lĩnh vực khác.

Python được thiết kế để đọc và viết dễ dàng, với cú pháp đơn giản và rõ ràng Nócũng cung cấp rất nhiều thư viện và framework để giúp các lập trình viên phát triển nhanh chóng và hiệu quả Ví dụ, có thư viện NumPy cho tính toán khoa học, thư viện Pandas cho phân tích dữ liệu, thư viện Flask và Django cho phát triển web và rất nhiềuthư viện khác.

Ngoài ra, Python còn có cộng đồng lớn và tích cực, với nhiều người đóng góp vào việc phát triển ngôn ngữ và cung cấp hỗ trợ và tài liệu cho người dùng

Tính năng của Python

- Đơn giản: Python là 1 ngôn ngữ đơn giản và tối giản Đọc 1 chương trình Python có cảm giác như đọc tiếng Anh, mặc dù ở dạng rút gọn Tính tự

1

Trang 8

nhiên của mã giả trong Python là 1 trong các điểm mạnh nhất của ngôn ngữ này Điều này giúp cho lập trình viên tập trung vào giải pháp giải quyết vấn đề hơn là việc tập trung vào ngôn ngữ.

- Dễ học: Python dễ học vì có cú pháp cực kỳ đơn giản.

- Miễn phí và mã nguồn mở: Python là 1 ví dụ của FLOSS (Free/Libré andOpen Source Software) Vì vậy, bạn có thể tự do phân phối bản sao chépcủa phần mềm, cũng như mã nguồn, thay đổi hay sử dụng các thành phầnphần mềm trong các chương trình mới Một trong những lý do Python làngôn ngữ mạnh vì nó được cộng đồng thường xuyên phát triển và nângcấp.

- Ngôn ngữ bậc cao: Khi sử dụng Python, bạn sẽ không bao giờ phải để ýđến các chi tiết mức thấp như quản lý bộ nhớ cho chương trình của bạn, vàvân vân.

- Khả năng bỏ túi: Do tính tự nhiên mã mở của Python, Python cũng xâydựng chạy trên nhiều nền tảng khác nhau Bạn có thể sử dụng Python trênGNU/Linux, Windows, FreeBSD, Macintosh, Solaris, OS/2, Amiga,AROS, AS/400, BeOS, OS/390, z/OS, Palm OS, QNX, VMS, Psion,Acorn RISC OS, VxWorks, PlayStation, Sharp Zaurus, Windows CE vàPocketPC Bạn còn có thể dùng một nền tảng như Kivy để tạo các trò chơitrên máy tính dành cho iPhone, iPad, và Android.

- Diễn dịch: Khi 1 chương trình được viết bằng ngôn ngữ biên dịch (như Choặc C++) thì nó được chuyển đổi từ mã ngôn ngữ (C/C++) thành ngônngữ mà máy tính có hiểu được bằng cách dùng 1 trình biên dịch với cácchức năng và các cờ khác nhau Trái lại, Python không cần biên dịch ranhị phân Chương trình viết bằng Python chạy trực tiếp từ mã nguồn Cụthể, Python sẽ chuyển mã nguồn thành 1 dạng trung gian gọi là bytecode,sau đó dịch dạng trung gian thành ngôn ngữ mà máy tính có thể hiểuđược.

- Hướng đối tượng: Python là ngôn ngữ hỗ trợ cho lập trình hướng đốitượng lẫn cả lập trình thủ tục Nếu so sánh với C++ hoặc Java, Python rấtmạnh nhưng lại cực kỳ đơn giản để thực hiện lập trình hướng đối tượng.- Tính mở rộng: Nếu bạn cần 1 đoạn mã chạy nhanh hoặc 1 vài thuật toán

đóng, bạn có thể lập trình ở C/C++ và sau đó sử dụng nó cho chương trìnhPython Python cho phép tích hợp các chương trình ở các ngôn ngữ khác.- Khả năng nhúng: Bạn có thể nhúng Python bên trong chương trình C/C++

để mang lại các khả năng kịch bản cho người dùng chương trình.2

Trang 9

- Thư viện mở rộng: Thư viện tiêu chuẩn Python thì rất lớn Thư viện giúpbạn làm nhiều thứ khác nhau liên quan đến biểu thực chính quy, gieo tàiliệu, tiến trình/tiểu trình, database, trình duyệt web, CGI, FTP, email,XML, XML-RPC, HTML, tập tin WAV, mã hóa, GUI, và các phần khác.Tất cả thứ này đều sẵn có khi cài đặt Python.

3 Tổng quan về thu thập dữ liệu bằng Python

Trong lĩnh vực khoa học dữ liệu và phân tích dữ liệu, việc thu thập dữ liệu là mộtbước quan trọng để có được nguồn dữ liệu đủ lớn và đa dạng để phân tích và xử lý.Python là một ngôn ngữ lập trình rất phổ biến trong việc thu thập dữ liệu vì nó cónhiều thư viện hỗ trợ mạnh mẽ cho việc này, như requests, BeautifulSoup, scrapy vànewspapers3k.

Thư viện requests cho phép thực hiện các yêu cầu HTTP đơn giản và phức tạp,như tải xuống trang web hoặc API BeautifulSoup là một thư viện HTML parsing chophép lấy dữ liệu từ các trang web dễ dàng hơn Scrapy là một framework thu thập dữliệu mạnh mẽ, cho phép thu thập dữ liệu từ nhiều trang web đồng thời và xử lý dữ liệutheo cách tự động Newspapers3k là một thư viện được sử dụng để thu thập tin tức từcác trang báo điện tử, với khả năng tự động phát hiện và trích xuất các nội dung tintức.

Việc thu thập dữ liệu bằng Python là một công cụ rất hữu ích trong việc nghiêncứu và phân tích dữ liệu Sử dụng Python để thu thập dữ liệu từ các nguồn khác nhaunhư trang web, tài liệu PDF, CSV hoặc JSON mang lại nhiều lợi ích cho người dùng.

Thu thập dữ liệu bằng Python giúp tiết kiệm thời gian và công sức của ngườidùng, vì Python cung cấp các công cụ mạnh mẽ và dễ sử dụng cho việc thu thập dữliệu Các thư viện phổ biến như BeautifulSoup và Scrapy giúp cho việc thu thập dữliệu trở nên đơn giản hơn, từ đó giảm thiểu thời gian và công sức mà người dùng phảibỏ ra.

Cung cấp cho người dùng các công cụ để phân tích dữ liệu một cách hiệu quảhơn Dữ liệu thu thập được có thể được lưu trữ và xử lý để tạo ra các biểu đồ và báocáo phân tích thú vị, giúp người dùng hiểu rõ hơn về dữ liệu mà mình đang nghiêncứu.

Việc thu thập dữ liệu bằng Python cung cấp cho người dùng các công cụ để tựđộng hóa quy trình thu thập dữ liệu Việc này giúp cho việc thu thập dữ liệu trở nênđơn giản và hiệu quả hơn, đồng thời giảm thiểu sai sót có thể xảy ra trong quá trình thuthập dữ liệu.

3

Trang 10

Việc sử dụng Python và các thư viện này giúp cho việc thu thập dữ liệu trở nênnhanh chóng, dễ dàng và hiệu quả hơn, đồng thời cũng giúp cho các chuyên gia phântích dữ liệu có được nguồn dữ liệu đa dạng và phong phú để phân tích và xử lý.

4

Trang 11

CHƯƠNG 2 THU THẬP DỮ LIỆU VÀ XÂY DỰNG HỆ THỐNG (6.5đ)

1 Mô tả dữ liệu đã thu thập

Trước hết phải tạo thư mục DATA trong project => tạo file database có tên cuoiky.db.

Trong new DB, click chuột phải vào tables => create table để tạo ra hai bảng category (danh mục trang) và news (danh mục bài báo) có cấu trúc như sau

Hình 1:Bảng và các dòng của bảng

5

Trang 12

Sau đó đặt tên cho cột và chọn các dữ liệu cho cột Check vào primary key để đặt khóa chính cho cột Click configure để tùy chỉnh cho khóa

Hình 2:Column của bảng category

Sau đó thêm danh mục các trang báo tùy chọn để có thể sẽ tiến hành craw dữ liệu.

Hình 3:Craw dữ liệu báo ở bảng category

6

Trang 13

Tiếp tục làm tương tự các bước trên ở news

Hình 4: Column của bảng news

Sau đó thêm danh mục các trang báo tùy chọn để có thể sẽ tiến hành craw dữ liệu.

Hình 5: Craw dữ liệu báo ở bảng news

7

Trang 14

2 Xây dựng hệ thống tìm kiếm

a Tìm kiếm theo từ khóa

Phần tìm kiếm trong ứng dụng này được thực hiện bằng cách sử dụng biến kwtrong request args Nếu biến kw có giá trị (khác None), thì ứng dụng sẽ truy xuấtdữ liệu từ cơ sở dữ liệu bằng cách thực hiện câu truy vấn SQL tìm kiếm trong bảngnews với điều kiện tìm kiếm là tiêu đề của tin tức chứa từ khoá được nhập vào Dữliệu tìm thấy sẽ được lưu trữ trong biến data và được trả về cho người dùng Nếubiến kw không có giá trị, ứng dụng sẽ truy xuất toàn bộ dữ liệu từ cơ sở dữ liệu vàtrả về cho người dùng.

b Sắp xếp kết quả tìm kiếm

Phần sắp xếp kết quả theo ngày thực hiện bằng cách sử dụng hàm read_news()trong module render_templates Đầu tiên, nó đọc dữ liệu từ file JSON news.json bằngcách sử dụng hàm json.load(), sau đó nó sử dụng câu lệnh if để kiểm tra xem có yêucầu sắp xếp theo ngày hay không.

Nếu yêu cầu sắp xếp theo ngày, nó sẽ sử dụng utils.get_all() để truy vấn tất cảcác tin tức trùng khớp với keyword và sắp xếp chúng theo thứ tự giảm dần của ngày.Nó sau đó tạo ra một danh sách các bản ghi với các trường tương ứng như id, tieude,noidung, hinhanh, url_trang, date, và id_trang, và trả về danh sách này chorender_template() để hiển thị trên giao diện web.

Nếu không yêu cầu sắp xếp theo ngày, nó sẽ gọi lại hàm read_news() với tham sốkeywords để lọc kết quả theo từ khóa và trả về danh sách này cho render_template().

8

Trang 15

c Xây dựng giao diện hệ thống tìm kiếm

Tạo thư mục templates, sau đó tạo các file category.html (chứa danh mục các trang chứa dữ liệu cần thu thập) , news.html (chứa dữ liệu các bài báo thu thập được) và index.html (trang chủ của webstie).

Cấu trúc các file html như sau:

Category.html:

<!DOCTYPE html><html lang="en"><head>

<meta charset="UTF-8"> <title>Trang chủ</title></head>

<h1>Danh mục trang tìm kiếm</h1> <table class ="table"> <tr>

<th>ID</th> <th> Tên trang báo</th> <th> Link trang chủ bài báo</th> </tr>

{% for cat in data %} <tr>

<td> {{ cat.id }} </td> <td>

{{ cat.tentrangbao }} </td>

9

Trang 16

<td> {{ cat.url }} </td> </tr> {% endfor %} </table></body></html>

<!DOCTYPE html><html lang="en"><head>

<meta charset="UTF-8"> <title>DANH MỤC BÀI BÁO</title></head>

</form> </p>

<table class="table"> <tr>

<th>ID</th> <th>Tiêu đề</th> <th>Link gốc bài </th> <th>ID danh mục</th> </tr>

{% for new in data %} <tr>

<td>{{new.id}}</td> <td>{{new.tieude}}</td> <td>{{new.video}}</td> <td>{{new.id_trang}}</td> </tr>

{% endfor %} </table></body></html>

<!DOCTYPE html><html lang="en"><head>

<meta charset="UTF-8"> <title>My Website</title></head>

10

Trang 17

</form> </p></body></html>

Hình 6:Giao diện trang chủ tìm kiếm

Hình 7:Giao diện tìm kiếm theo tiêu đề

11

Trang 18

Giao diện website thân thiện, dễ sử dụng, trực quan và linh hoạt.

2 Hạn chế (chưa làm được)

Khó khăn: Trong quá trình thực hiện đề tài khó khăn lớn nhất là nghiên cứu những chức năng nghiệp vụ của đề tài,thực hiện những chức năng nghiệp vụ của đề tài,thể hiện đầy đủ chức năng của hệ thống quản lý tìm kiếm thông tin

Hạn chế: Thời gian thực hiện có hạn nên chúng em chỉ hoàn thành mộtsố chức năng của đề tài còn một số chức năng còn sơ sài và chưa được hoàn thiện một cách hoàn chỉnh

3 Thuận lợi và khó khăn

a Thuận lợi

-Biết thêm về ngôn ngữ python

-python có một số tính năng độc đáo giúp cho việc lập trình dễ hơn nhiều-python có một thư viện rộng lớn với khả năng quản lý bộ nhớ

b Khó khăn

-Do đây là môn học khá mới chúng em chưa được tiếp cận nhiều nên trong quá trình làm báo cáo còn nhiều sai sót mong thầy thông cảm cho chúng em.

12

Ngày đăng: 15/07/2024, 17:06

w