ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA HỆ THỐNG THÔNG TIN
ĐỒ ÁN CUỐI KÌ
MẠNG XÃ HỘI
TÊN ĐỀ TÀI: MẠNG LIÊN KẾT GIỮA CÁC MÓN
ĂN ẤN ĐỘ DỰA TRÊN THÀNH PHẦN NGUYÊN
LIỆU
Thành phố Hồ Chí Minh, ngày 09, tháng 12 , năm 2020
1
LỜI CÁM ƠN
Lời nói đầu tiên này cho phép chúng em gửi lời cảm ơn sâu sắc
nhất đến với cô Nguyễn Thị Kim Phụng. Cảm ơn cô trong suốt thời
gian qua đã tận tình giảng dạy, truyền đạt cho chúng em những kiến
thức hữu ích trong mơn Mạng xã hội.
Qua môn học này, chúng em đã nắm được các khái niệm cơ bản
liên quan đến mạng xã hội, các đặc trưng mạng, một số nguyên tắc
xã hội và ứng dụng của mạng xã hội trong thực tế cũng như mô hình
hóa và biểu diễn mạng, tính các độ đo và ứng dụng các độ đo này
tìm tác nhân có tầm ảnh hưởng, vận dụng các phương pháp trích
xuất thơng tin chứa trong một mạng xã hội để đo lường và mơ tả
mạng, phân tích thống kê và đại diện trực quan, dự đoán hành vi
của mạng các ứng dụng cụ thể của việc phân tích mạng trong quản
lý, chiến lược phát triển, sự lan truyền những ý tưởng mới, sự đổi mới
và khám phá cộng đồng mạng xã hội. Chúng em được cô trang bị
cho một nền tảng để định hướng cho công việc sau này trong tương
lai.
Cuối lời, chúng em kính chúc cơ cùng gia đình thật nhiều sức
khoẻ, hạnh phúc và riêng cô sẽ đạt thêm nhiều thành cơng, tâm
huyết trên con đường sự nghiệp.
Thành phố Hồ Chí Minh, ngày 09 tháng 12 năm 2020
Nhóm sinh viên thực hiện
2
NHẬN XÉT CỦA GIÁO VIÊN
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
……………………………………………………………………………….
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
3
MỤC LỤC
I. Tổng quan đề tài..........................................................................6
1.1 Ý tưởng....................................................................................6
1.2 Dữ liệu.....................................................................................6
1.2.1 Mô tả bộ dữ liệu gốc........................................................6
1.2.2 Xử lý dữ liệu......................................................................7
1.2.3 Kết quả..............................................................................9
II. Thể hiện mạng lưới liên kết tổng quan giữa các node.......10
2.1. Hiển thị sơ đồ kết nối tổng quan với Python.................10
2.2. Hiển thị graph trên Gephi.................................................15
III. Tính và visualize các độ đo bằng Python và Gephi...........16
3.1 Degree Centrality (độ đo trung tâm dựa trên bậc của
nút)...............................................................................................16
3.1.1 Sử dụng Python..............................................................16
3.1.2. Sử dụng Gephi...............................................................18
3.2 Closeness Centrality (độ đo trung tâm dựa trên sự gần
gũi)................................................................................................20
3.2.1 Sử dụng Python..............................................................20
3.2.2. Sử dụng Gephi...............................................................22
3.3 Betweeness Centrality (độ trung tâm ở giữa)................24
3.3.1 Sử dụng Python..............................................................24
3.3.2 Sử dụng Gephi................................................................26
3.4 Eigenvector Centrality........................................................27
3.4.1. Sử dụng Python............................................................28
3.4.2 Sử dụng Gephi................................................................29
3.5 Pagerank...............................................................................31
3.5.1 Sử dụng Python..............................................................31
3.5.2 Sử dụng Gephi................................................................33
3.6 Harmonic (số bình qn điều hịa)...................................35
3.6.1 Harmonic Mean với Python..........................................35
3.6.2 Harmonic Closeness Centrality với Gephi.................37
4
IV. Thuật toán gom cụm, chia cộng đồng.................................38
4.1 Thuật toán Louvain.............................................................38
4.1.2 Chia cộng đồng với Python..........................................38
4.1.2 Chia cộng đồng với Gephi............................................39
4.1.3 Nhận xét các cộng đồng...............................................40
4.2 Thuật toán Girvan-Newman...............................................42
4.2.1 Chia cộng đồng với Python..........................................42
4.2.2 Chia cộng đồng với Gephi............................................43
4.2.3 Nhận xét các cộng đồng...............................................46
V. Bảng phân công công việc và đánh giá thành viên............47
VI TÀI LIỆU THAM KHẢO...............................................................47
5
I. Tổng quan đề tài
1.1 Ý tưởng
Nhóm chúng em sẽ đi tìm mạng lưới mối liên hệ giữa các món ăn
(Name) dựa trên thành phần nguyên liệu (Ingredients) của chúng.
Nhóm sử dụng các độ đo Closeness Centrality, Harmonic Means,
Page Rank, Hub, Betweenness Centrality, Eigenvector-Centrality,
Edges Betweenness Centrality để biểu diễn các mối quan hệ, từ đó,
tìm ra món ăn có số mối liên hệ về nguyên liệu nhiều nhất.
1.2 Dữ liệu
-
1.2.1 Mô tả bộ dữ liệu gốc
Tên bộ dữ liệu: Indian Food 101.
Nguồn
dữ
liệu:
/>
-
Mô tả bộ dữ liệu: Ẩm thực Ấn Độ bao gồm nhiều món ăn truyền
thống và khu vực có nguồn gốc từ tiểu lục địa Ấn Độ. Với sự đa
dạng về thổ nhưỡng, khí hậu, văn hóa, dân tộc và nghề nghiệp,
các món ăn này có sự khác biệt đáng kể và sử dụng các loại
gia vị, thảo mộc, rau và trái cây sẵn có tại địa phương. Thực
phẩm Ấn Độ cũng bị ảnh hưởng nhiều bởi tôn giáo, đặc biệt là
Ấn Độ giáo, các lựa chọn văn hóa và truyền thống. Tập dữ liệu
này bao gồm thông tin về các món ăn Ấn Độ khác nhau , thành
phần của chúng , xuất xứ của chúng , v.v
-
Thuộc tính dữ liệu:
name : tên món ăn
ingredients: thành phần chính được sử dụng
diet : loại chế độ ăn kiêng - ăn chay hoặc không
ăn chay
prep_time : thời gian chuẩn bị
cook_time : thời gian nấu
flavour_profile : hồ sơ hương vị bao gồm xem
món ăn có vị cay, ngọt, đắng, v.v.
6
course : món ăn - món khai vị, món chính, món
tráng miệng, v.v.
state : nơi nổi tiếng với món ăn đó hoặc nguồn
gốc món ăn
region : khu vực mà bang thuộc về
-
Nhận xét: Dữ liệu đầy đủ, không xuất hiện giá trị nào bị thiếu.
1.2.2 Xử lý dữ liệu
Hai thuộc tính nhóm chúng em chọn để phân tích là “Name” và
“Ingredients”. Chúng em sẽ sử dụng thuộc tính “Name” làm
nút/nodes cho sơ đồ. Cạnh/edges được hình thành dựa trên các món
ăn có cùng 1 trong những nguyên liệu giống nhau.
7
- Các bước thực hiện để tạo ra 2 tập tin nodes.csv và edges.csv
Bước 1: Cài đặt và gọi các thư viện cần thiết.
Bước 2: Upload tệp dữ liệu vào google colab.
Bước 3: Gán tệp dữ liệu excel vào tên df và đọc file df.
Bước 4: Tách nguyên liệu ra riêng lẻ bằng hàm split.
8
Bước 5: Gom nhóm các món ăn có cùng nguyên liệu.
Bước 6: Hình thành các cạnh dựa trên các món có cùng 1 trong
những nguyên liệu giống nhau.
1.2.3 Kết quả
- File Nodes.csv với 253 nodes.
9
-
File Edges.csv với 3837 cạnh.
10
II. Thể hiện mạng lưới liên kết tổng quan giữa các node
2.1. Hiển thị sơ đồ kết nối tổng quan với Python
-
Bước 1: import các thư viện cần thiết và đọc file nodes và
edges vào colab.
11
-
Bước 2: gọi graph và gán tên cho graph.
-
Bước 3: sử dụng Networkx để xem mạng lưới kết nối tổng quát
giữa các món ăn
Kết quả:
12
Nhận xét: Biểu đồ cho chúng ta thấy mạng lưới được chia
thành 2 kết nối lớn và một số cụm nhỏ.
-
Bước 4: cài đặt thư viện plotly để hiển thị sơ đồ mạng lưới qua
plotly.
13
-
Bước 5: gán list Source và Target từ file Edges.csv cho 2 biến
A, B và gọi vòng lặp for.
-
Bước 6: Lấy vị trí cho từng node.
-
Bước 7: thêm vị trí cho node vào graph.
-
Bước 8: Thêm node và edges vào plotly API.
14
-
Bước 9: Tô màu node và hiển thị plot qua Plotly Chart-studio.
Kết quả:
15
Nhận xét: các nodes được liên kết với nhau, trong đó món
“Upma” là node có nhiều liên kết nhất: 102. Tiếp đến là Sev
Tameta với 79 kết nối. Mức độ phân cấp kết nối các node trải
dài từ 0-100 (từ màu xanh-thấp nhất đến đỏ đậm-cao nhất)
Link kết quả: />#/
2.2. Hiển thị graph trên Gephi
Đọc tập dữ liệu:
-
Tập dữ liệu đã được xử lý “Indian.edges.csv” chứa các dữ liệu về cạnh (edges).
Mở Gephi, chọn Import Spreadsheet và chọn file “Indian_edges.csv” để đưa vào
Gephi.
Chọn tab Data Laboratory để xem dữ liệu đã được đọc vào Gephi.
+ Dữ liệu các nút (nodes).
+ Dữ liệu các cạnh (edges):
16
Xem visualize graph
-
Chọn tab Overview để xem hình ảnh visualize của đồ thị
III. Tính và visualize các độ đo bằng Python và Gephi
3.1 Degree Centrality (độ đo trung tâm dựa trên bậc của nút)
3.1.1 Sử dụng Python
- Chạy câu lệnh Python
17
-
Kết quả câu lệnh hiển thị bậc của các nút:
-
Trực quan hóa Degree qua hình ảnh:
-
Kết quả trực quan Degree Centrality được biểu diễn theo thứ tự tăng dần với sự
thay đổi các màu sắc tương ứng trong colorbar.
18
3.1.2. Sử dụng Gephi
- Trong mục Statistics, click “Run” Average Degree.
-
Biểu đồ thể hiện sự phân bố Degree:
19
-
Xem chi tiết Degree của từng nút.
-
Kết quả trực quan theo Degree Centrality trong gephi với colorbar tương ứng bên
trái.
20