đề tài tích hợp dữ liệu từ các trang tin tức xác định thực thể quan hệ thực thể

35 0 0
Tài liệu đã được kiểm tra trùng lặp
đề tài tích hợp dữ liệu từ các trang tin tức xác định thực thể quan hệ thực thể

Đ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

ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÁO CÁO BÀI TẬP CUỐI KỲ TÍCH HỢP DỮ LIỆU ĐỀ TÀI: TÍCH HỢP DỮ LIỆU TỪ CÁC TRANG TIN TỨC, XÁC ĐỊNH THỰC THỂ, QUAN HỆ THỰ

Trang 1

ĐẠI HỌC BÁCH KHOA HÀ NỘI

TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÁO CÁO BÀI TẬP CUỐI KỲ TÍCH HỢP DỮ LIỆU

ĐỀ TÀI: TÍCH HỢP DỮ LIỆU TỪ CÁC TRANG TIN

TỨC, XÁC ĐỊNH THỰC THỂ, QUAN HỆ THỰC THỂ Giảng viên hướng dẫn: TS Đỗ Bá Lâm

Hà Nội, tháng 6 năm 2023

Trang 2

LỜI NÓI ĐẦU

Trong bối cảnh hiện nay công nghệ ngày càng phát triển, đi kèm với nó là sự gia tăng về khối lượng thông tin được đưa lên các trang mạng xã hội, tin tức…hoặc

lên, muốn so sánh nhiều mặt hàng mua sắm hơn, hoặc muốn cân đối chi tiêu

quan nhất về các dữ liệu trong cùng phạm vi, cho phép người dùng có thể thao tác, truy vấn dữ liệu thông qua lược đồ tích hợp hoàn chỉnh

Chúng ta thấy được việc xây dựng các hệ thống tích hợp dữ liệu hiện nay rất quan trọng trong các ứng dụng thực tế.Ví dụ trong lĩnh vực khách sạn, người quản lý cũng muốn tích hợp dữ liệu các khách sạn trong chuỗi kinh doanh để theo giõi, đánh giá và đưa ra hướng giải quyết cho từng chi nhánh Hay thậm chí, công tác điều tra triệt phá tội phạm, các đơn vị cảnh sát, công an cũng cần hệ thống tích hợp lại dữ liệu của những thành phần liên quan

Do nắm bắt được nhu cầu như vậy nên đề tài nhóm chọn hướng tới việc tích

và xác định mối quan hệ giữa các thực thể đó.Đây là một bài toán nhóm em thấy rất hay và có độ khó cao ở phần xác định các quan hệ thực thể.Bên cạnh đó đề tài cũng bám sát vào thực tế hiện tại người đọc cần biết nhanh các thông tin nóng được đưa lên và các thông tin khác một cách chính xác, cụ thể.

Sau quá trình nhóm thực hiện đề tài đã chọn, nhóm em xin gửi lời cảm ơn chân

hướng dẫn nhóm và giải đáp các thắc mắc, khó khăn mà nhóm gặp phải để hoàn

Nhóm sinh viên thực hiện Nguyễn Kim Dân Nguyễn Thành Đạt

Trang 3

MỤC LỤC

CHƯƠNG 1 GIỚI THIỆU CHUNG 5

1.1 Giới thiệu đề tài 5

1.2 Hướng tiếp cận, giải quyết 5

3.3.2 Quá trình thu thập dữ liệu 13

3.4 Xử lý dữ liệu, đẩy lên server 15

3.5 Kết quả dữ liệu thu thập trên server 15

CHƯƠNG 4 XÁC ĐỊNH THỰC THỂ, QUAN HỆ GIỮA CÁC THỰC THỂ 23

4.1 Cơ sở lý thuyết 23

4.2 Hướng tiếp cận giải quyết bài toán 25

4.3 Luồng thực hiện 26

CHƯƠNG 5 XÂY DỰNG WEB TÍCH HỢP 29

5.1 Giới thiệu chung: 29

5.2 Các tính năng của Website : 29

5.2.1 Hiển thị các bài báo mới nhất vừu thu thập về 29

5.2.2 Duyệt thêm khi lướt chuột xuống 30

5.2.3 Truy cập trang web gốc khi nhấn vào trang báo để đọc 31

Trang 4

Hình 8 Minh h a thu th p d li u b ng nhi u Spiderọậữ ệằề 15

Hình 9 Minh h a th c hiọựện đẩy d liữ ệu thu thập được lên server 16

Hình 10 Minh h a d liọữ ệu sau khi được đẩy lên server 16

Hình 11 Hi n th s ểị ố lượng bài báo thu thập được 17

Hình 12 Th ng kê các bài báo theo nguồn 17

Hình 13 Th ng kê các bài báo theo lo i danh mốạ ục 17

Hình 21 Minh h a quá trình sinh tripleọ 28

Hình 22 Minh h a visualize quan h th c thọệựể 28

Hình 23 Minh h a xây dọựng các trường d liữ ệu 29

Hình 24 Hi n th cá API c a webểịủ 29

Hình 25 Hi n th các bài báo m i thu thểịớ ập 30

Hình 26 Hi n th các bài báo khi cu n trang xuểịộ ống 30

Hình 27 Hi n th các bài báo khi cu n trang xuểịộ ống(tt) 31

Hình 28 Minh h a thao tác truy c p bài báo gọậ ốc 31

Hình 29 Minh h a hi n th trang báo gọểịốc được chọn 32

Danh mục bảng Bảng 1 Các trường dữ liệu thu thập 12

Trang 5

CHƯƠNG 1 GIỚI THIỆU CHUNG 1.1 Giới thiệu đề tài

Nhóm em chọn đề tài thu thập, xây dựng hệ thống tích hợp dữ liệu từ các trang báo khác nhau Vì nhóm muốn giải quyết bài toàn người đọc muốn có được các thông tin chính xác và nhanh chóng từ các trang báo tin cậy trên internet Tiếp theo đó từ các dữ liệu đó, chúng em cũng thực hiện phân tích và nhận dạng các thực thể xuất hiện, đồng thời xây dựng mối quan hệ giữa chúng

Sau khi tìm hiểu về đề tài, cụ thể là cách thức để lưu trữ dữ liệu sau khi thu thập Nhóm em quyết định lựa chọn hướng tiếp cận dựa trên Data warehouse

đổi, xóa sửa hầu như không gặp phải Do đó lưu trữ dữ liệu dạng vật lý, các bản

Trang 6

CHƯƠNG KIẾN TRÚC HỆ THỐNG2 2.1 Kiến trúc tổng quan

Tổng quan hệ thống sẽ bao gồm các thành phần sau: Crawler thu thập và tích hợp

liệu, yêu cầu người dùng đến trang đọc báo và người dùng cuối.

Hình Ki n trúc t ng quan h th ng 2 ế ổ ệ ố

2.2 Crawler

2.2.1 Tổng quan scrapy

được sử dụng để thu thập dữ liệu các trang web và trích xuất dữ liệu có cấu trúc từ các trang của chúng.Nó có thể được sử dụng cho nhiều mục đihcs khác nhau, từ khai thác dữ liệu đến giám sát và tự động kiểm tra(testing)

Hiệu suất của nó rất nhanh, hơn nữa nó được xây dựng dựa trên Twisted, một khung mạng không đồng bộ, sử dụng cơ chế không chặn trong khi gửi yêu cầu đến người dùng.Một số ưu điểm của Scrapy trong thu thập dữ liệu là:

• Scrapy có hỗ trợ tích hợp để trích xuất dữ liệu từ các nguồn html bằng cách sử dụng biểu thức XPath và biểu thức CSS

• Nó là thư viện di động, được biết bằng python

• Tốc độ nhanh hơn các thư viện thu thập khác Nó có thể giải nén các trang web với tốc độ nhanh hơn vài chục lần, hơn nữa nó tiêu tốn ít bộ nhớ và CPU

Trang 7

2.2.2 Cấu trúc scrapy

Hình C u trúc scrapy 3 ấ

Scrapy Engine: Kiểm soát luồng dữ liệu của hệ thống, kích hoạt sự kiện

khi có hành động xảy ra như click phân trang…

Scheduler: Có chức năng như một hàng đợi, sắp xếp thứ tự các url cần

download

Downloader: Thực hiện download các trang web trong Scheduler và cung

cấp cho Scrapy Engine

Spiders: Class được viết bởi lập trình viên, có chức năng bóc tách các dữ

liệu cần thiết từ trang web thông qua các selector và tạo các url mới để đưa vào Scheduler

Item Pipeline: Những dữ liệu được bóc tách từ Spiders sẽ được đưa vào

đây để lưu trữ theo định dạng mong muốn: text, json…

Các middlewares: Là các thành phần nằm giữa Engine với các thành phần

khác, chúng đều có mục địch là giúp người dùng có thể tùy biến, mở rổng khả năng xử lý cho các thành phần VD: sau khi dowload xong url, bạn muốn tracking, gửi thông tin ngay lúc đó thì bạn có thể viết phần mở rộng và sửa lại cấu hình để sau khi Dowloader tải xong trang thì sẽ thực hiện việc tracking.

o Spider middlewares: Là thành phần nằm giữa Eninge và Spiders,

chúng xử lý các response đầu vào của Spiders và đầu ra (item và các

Trang 8

o Downloader middlewares: Nằm giữa Engine và Dowloader, chúng

xử lý các request được đẩy vào từ Engine và các response được tạo ra từ Dowloader

o Scheduler middlewares: Nằm giữa Engine và Scheduler để xử lý

những requests giữa hai thành phần

2.2.3 Luồng thực hiện trong scrapy

• Khi bắt đầu crawl một website, Engine sẽ xác định tên miền và tìm vị trí của spider đó và yêu cầu spider đó tìm các urls đầu tiên để crawl

• Engine nhận danh sách các urls đầu tiên từ spider, gửi cho Scheduler để sắp xếp

• Engine yêu cầu danh sách các urls tiếp theo từ Scheduler

• Engine nhận danh sách các url tiếp theo từ Scheduler vào gửi đến Dowloader (requests)

• Downloader nhận request và thực hiện việc tải trang, sau khi tải xong sẽ tạo một response và gửi lại Engine

• Respone từ Dowloader sẽ được Engine đẩy qua Spiders để xử lý

• Tại Spiders, khi nhận được response, chúng bóc tách thông tin từ response (tilte, content, author, date publish ) và những url có khả năng để crawl và đẩy lại cho Engine (requests)

• Ở bước này, Engine nhận được kết quả từ Spiders sẽ thực hiện 2 công việc: đẩy những dữ liệu đã được bóc tách tới Item Pipeline để xử lý và lưu vào Databases, đẩy những url mới (requests) mới về Scheduler và bắt đầu lại từ bước 3(nhận các yêu cầu cho đến khi không còn request nào từ Scheduler)

2.3 Datawarehouse

trên cloud nhằm giúp các thành viên trong nhóm có thể sử dụng được data mới nhất

Trang 9

Hình Minh h a mongoDB Atlas 4 ọ

MongoDB là một hệ quản trị cơ sở dữ liệu NoSQL mã nguồn mở đa nền tảng viết bằng C++ Bản ghi trong MongoDB được lưu trữ dạng một dữ liệu văn bản (Document), là một cấu trúc dữ liệu bao gồm các cặp giá trị và trường tương tự như các đối tượng JSON MongoDB được phát triển bởi MongoDB Inc dưới dạng giấy phép Server Side Public License (SSPL)

MongoDB Atlas là cloud database của MongoDB được ra mắt vào năm 2016 chạy trên AWS, Microsoft Azure và Google Cloud Platform Dữ liệu trong mỗi Cluster ở Atlas được lưu trữ theo cơ chế Replication, với 3 nodes: 1 master (primary) và 2 slaves (secondary)

2.4 Server

-framework để lập trình cho Frontend là ReactJs và Backend nhóm sử dụng Django

ReactJS là một thư viện JavaScript mã nguồn mở được phát triển bởi Facebook nhằm tạo ra các ứng dụng web nhanh và hiệu quả với mã nguồn Mục đích chính của ReactJS là khiến cho website hoạt động mượt mà, khả năng mở rộng cao và đơn giản Thay vì làm việc trên toàn ứng dụng web, ReactJS cho phép các nhà phát triển có thể phá vỡ giao diện người dùng phức tạp một cách thuận lợi thành các thành phần đơn giản Nhóm sử dụng thư viện này vì đây là thư viện đơn giản và có cộng đồng hỗ trợ lớn

Trang 10

Hình Minh h a react.js 5 ọ

Django là một framework phát triển ứng dụng web mã nguồn mở được viết bằng Python Nó tập trung vào việc tạo ra các ứng dụng web mạnh mẽ và linh hoạt, với mục tiêu giảm thiểu công việc lặp lại và tăng năng suất phát triển Nhóm sử dụng Django vì đây là thư viện có nhiều hỗ trợ trong việc quản lý cơ sở dữ liệu Django

-tác với cơ sở dữ liệu bằng cách sử dụng các đối tượng Python thay vì viết các truy vấn SQL trực tiếp Điều này giúp giảm thiểu công việc phức tạp của việc xử lý cơ sở dữ liệu và giúp bạn tập trung vào việc phát triển ứng dụng

Trang 11

Hình Minh h a Django 6 ọ

Trang 12

CHƯƠNG 3 THU THẬP, XỬ LÝ DỮ LIỆU 3.1 Phân tích chung

Thu thập dữ liệu là một công đoạn rất quan trọng trong kiến trúc của nhóm em nói riêng và các hệ thống xử lý lớn nói chung.Do đó nhóm đã tìm hiểu khá kỹ về cách thức để thu thập được dữ liệu đủ lớn và rõ ràng

Với đề tài mà nhóm em lựa chọn thì việc tìm được các trang báo đáng tin cậy không khó khăn, chính vì vậy nhóm đã tìm được khoảng 17 trang báo khác nhau để tiến hành thu thập dữ liệu:

Với mỗi trang báo kể trên chúng em thu thập dữ liệu có các trường như nhau,gồm 10 trường dữ liệu:

Bảng 1 Các trường d li u thu thữ ệ ập

Trang 13

subcategory Thể loại bài báo phân nhỏ hơn (Ví dụ trong thể loại “Giải trí” có

Sau khi nhóm cân nhắc đã lựa chọn ra 10 trường dữ liệu như bảng trên để tiến hành thu thập dữ liệu, mỗi trường sẽ phục vụ một mục đích khác nhau

3.3 Thu thập dữ liệu 3.3.1 Các công nghệ sử dụng

thu thập dữ liệu Tổng quan về Scrapy nhóm em đã trình bày trong mục 2 chương 2

Bên cạnh đó nhóm cũng dùng thư viện Beautifulsoup để hỗ trợ quá trình bóc

các định dạng file HTML và XML Nó hoạt động cùng với các parser (trình

và chỉnh sửa trong parse tree (cây phân tích được tạo từ parser) Nhờ các parser này,BeautifulSoup đã giúp các lập trình viên tiết kiệm được nhiều giờ làm việc khi trích xuất dữ liệu

3.3.2 Quá trình thu thập dữ liệu

cấu trúc cơ bản của một spider:

Trang 14

Hình C u trúc môt spider 7 ấ

parse_page( ) Sau đó dữ liệu lấy về được phân tích cụ thể thông qua hàm

thập được và xử lý nếu cần.

Tiếp theo, chúng em thực hiện chạy cùng lúc 17 Spider để thu thập dữ liệu từ 17 trang báo, đây là ưu thế của Scrapy trong thu thập dữ liệu từ nhiều nguồn với tốc độ cao:

Trang 15

Hình Minh h a thu th p d li u b ng nhi u Spider 8 ọ ậ ữ ệ ằ ề

3.3.3 Kiểm tra trùng lặp, đẩy lên server

Với mỗi dữ liệu thu thập được, nhóm em tiến hành đối sánh với dữ liệu hiện có trên database server và nếu không có trùng lặp sẽ tiến hành đẩy dữ liệu mới lên và cập nhật:

Trang 16

Hình Minh h a th c hi n y d9 ọ ự ệ đẩ ữ liệu thu thập được lên server Hình bên dưới hiển thị dữ liệu sau khi được đưa lên server, gồm 10 trường dữ

Hình Minh h a d li10 ọ ữ ệu sau khi được đẩy lên server

Trang 17

Hình Hi n th s 11 ể ị ố lượng bài báo thu thập được

Hiện tại nhóm đã thu thập được hơn 10 000 bài báo từ 17 trang báo khác nhau,

1793, 1653 bài báo

Hình Th ng kê các bài báo theo ngu n 12 ố ồ

Hình Th ng kê các bài báo theo lo i danh m c 13 ố ạ ụ

nhau, các tin tức giải trí, thời sự, thế giới chiếm top3 số lượng, lần lượt là 975, 886, 672 bài báo

Trang 18

Hình Hi n th s lo i subcategory 14 ể ị ố ạ

Trang 19

3.4 Schema matching and maping:

Do mỗi bài báo đều có một quy chuẩn chung, từ một số bài chỉ đăng video thì các bài đều sẽ có các phần : ‘title’, ‘abstract’, ‘content’,… do đó nên việc đưa

cso quy định sẵn như vậy rồi Và ngay từ bước đó nhóm đã quy chuẩn theo đó và crawl dữ liệu theo các trường như vậy nên không cần phải matching các schema

Tuy nhiên, hệ thống cần phải phân các bài báo theo các category cho người

nhau(hình 14), như vậy cần phải nhóm các đề mục nay với nhau thành các đề mục có nội dung chung nhằm đảm bảo trải nghiệm người dùng

Danh sách các đề mục nhóm tổng hợp được:

['Hậu trường', 'Giao thông', 'Tuy n sinh', 'Tay lái', 'Giáo dểục', 'Bóng đá quố ế', 'Th ịc ttrường', 'Du l ch', 'Goft', 'Doanh nghi p', 'Th gi i', 'Bịệế ớất động sản', 'Du học', 'Giới sao', 'Tài chính', ' m th c', 'Xe', 'Quân s ', 'TiẨựựếng Anh', 'Đời sống', 'Chính trị', 'Pháp luật', 'Nh c'ạ , 'Lao động-Việc làm', 'B nh', 'Th i s ', 'Th thao', 'H ệờ ựểồ sơ', 'Phân tích', 'Gia đình', 'Pháp đình', 'Quần vợt', 'Dinh dưỡng', 'Sống kh e', 'S c kh e', 'Diỏứỏễn đàn', 'Chứng khoán', 'Các môn khác', 'Cu c sộ ống đó đây', 'Tư vấn', 'Tiêu dùng', 'Phim', 'Bóng đá Việt Nam', 'Thời trang', 'Kinh doanh', 'Gi i trí'] ả

Nhóm sử dụng pretrain PhoBERT để embedding cho nội dung của từng bài báo Coi mỗi đề mục là 1 cụm, nhóm tìm tâm cụm đó Từ 46 tâm cụm, nhóm tiến hành dùng Kmeans và độ đo “Inertia”, nếu chỉ số này không giảm đáng kể sau khi tăng số cụm trong phạm vi đó thì đấy là số cụm hợp lý:

Trang 20

Số cụm được cho là hợp lý tại vị trí 10 Khi nhóm thử phân các đề mục với số cụm là 10 được một kết quả tạm chấp nhận được:

[['Giới sao', 'Nhạc', 'Phim', 'Th i trang', 'Giờải trí'], ['Thế gi i', 'Quân s ', 'Phân tích', 'Cu c sớựộ ống đó đây'],

['Giao thông', 'Du l ch', 'Doanh nghi p', 'Bịệất động s n', 'Tài chính', ' m th c', 'Chính tr ', ảẨựị'Lao động-Việc làm', 'Th i s ', 'Ch ng khoán', 'Tiêu dùng', 'Kinh doanh'], ờ ựứ

['Tay lái', 'Thị trường', 'Xe', 'Diễn đàn'],

['Bóng đá quốc tế', 'Thể thao', 'Bóng đá Việt Nam'], ['Goft', 'Qu n v t', 'Các môn khác'], ầợ

['Đời sống', 'Bệnh', 'Gia đình', 'Dinh dưỡng', 'Sống khỏe', 'Sức khỏe', 'Tư vấn'], ['Pháp lu t', 'Hậồ sơ', 'Pháp đình'],

['Hậu trường'],

['Tuyển sinh', 'Giáo d c', 'Du h c', 'Tiụọếng Anh']]

Ta thấy nhóm các đề mục: ['Tuyển sinh', 'Giáo d c', 'Du h c', 'Tiụọếng Anh']] khá là hợp lý vì có chung chủ đề chính là trong học tập, du học Hay các nhóm khác cũng hợp lý, tuy nhiên vẫn có các đề mục bị nhóm với nhau không hợp lý lắm: ['Giao thông', 'Du l ch', 'Doanh nghi p', 'Bịệất động s n', 'Tài chính', ' m th c', 'Chính tr ', ảẨựị'Lao động-Việc làm', 'Th i s ', 'Ch ng khoán', 'Tiêu dùng', 'Kinh doanh'].ờ ựứ

Nguyên nhân có thể chỉ ra là có những đề mục số lượng tin bài rất nhỏ, có những đề mục chủ đề lại rất rộng, nhiều tin bài, điều đó có thể dẫn đến mô hình của nhóm không chính xác

Tuy vậy thì đây cũng là bước xử lý đã giúp đỡ chúng em, có thể tham khảo và tiếp tục phân cụm các đề mục một nhanh chóng thay vì ngồi đọc và gh p 46 đề émục

Sau khi thêm các bước xử lý bằng cơm thì các đề mục được phân như sau:Tư

vấn

Tư vấn Giải

trí

Giải trí

thực Giới sao

Du lịch

Thời trang

trường

Ngày đăng: 14/06/2024, 16:33

Tài liệu cùng người dùng

  • Đang cập nhật ...