![đề 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ể](https://123docz.net/image/doc_normal.png)
Đang tải... (xem toàn văn)
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 2LỜ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 3MỤ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 4Hì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 5CHƯƠ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 6CHƯƠ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 72.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 8o 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 9Hì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 10Hì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 11Hình Minh h a Django 6 ọ
Trang 12CHƯƠ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 13subcategory 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 14Hì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 15Hì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 16Hì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 17Hì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 18Hình Hi n th s lo i subcategory 14 ể ị ố ạ
Trang 193.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 20Số 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
Xem thêm:
Tài liệu cùng người dùng
Tài liệu liên quan