Tải bản đầy đủ (.pdf) (60 trang)

Trực quan hóa mạng trích dẫn các bài báo khoa học: luận văn thạc sĩ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.75 MB, 60 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC LẠC HỒNG

ĐOÀN TẤN PHÁT

TRỰC QUAN HÓA MẠNG TRÍCH DẪN CÁC BÀI BÁO
KHOA HỌC

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Đồng Nai, năm 2017


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC LẠC HỒNG

ĐOÀN TẤN PHÁT

TRỰC QUAN HÓA MẠNG TRÍCH DẪN CÁC BÀI BÁO
KHOA HỌC
Chuyên ngành: Công nghệ thông tin
Mã số: 60.48.02.01

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Người hướng dẫn khoa học:
PGS.TS. ĐỖ PHÚC

Đồng Nai, năm 2017



LỜI CẢM ƠN
Những kiến thức căn bản trong luận văn này là kết quả của hoạt động tự
nghiên cứu trong quá trình công tác và hai năm học Cao học Công nghệ thông tin
(2015 - 2017) tại Trường Đại học Lạc Hồng. Dưới sự giảng dạy, đào tạo và dìu dắt
trực tiếp của các thầy cô trong trường.
Trước tiên, tôi xin bày tỏ sự kính trọng và lòng biết ơn chân thành, lời cảm ơn
sâu sắc nhất đối với thầy PGS.TS Đỗ Phúc, người đã trực tiếp hướng dẫn, định
hướng cho tôi giải quyết các vấn đề trong luận văn.
Tôi xin bày tỏ lời cảm ơn chân thành tới quí thầy cô trong Khoa Công nghệ
thông tin, Khoa sau đại học Trường Đại học Lạc Hồng, đã tạo điều kiện thuận lợi cho
tôi trong thời gian học tập tại trường.
Tôi xin cảm ơn đến Ban Lãnh đạo, các anh chị đồng nghiệp ở Trường Đại Học
FPT, người thân, bạn bè và các bạn đồng môn lớp cao học, đã ủng hộ và giúp đỡ tôi
trong quá trình làm luận văn tốt nghiệp.
Xin trân trọng cảm ơn!
Đồng Nai, ngày 20 tháng 10 năm 2017
Học viên

Đoàn Tấn Phát


LỜI CAM ĐOAN
Tôi cam đoan rằng Luận văn Thạc sĩ “TRỰC QUAN HÓA MẠNG TRÍCH
DẪN CÁC BÀI BÁO KHOA HỌC” là công trình nghiên cứu độc lập, do chính tôi
hoàn thành. Các nội dung nghiên cứu, kết quả trong luận văn này là trung thực và
chưa được công bố dưới bất kỳ hình thức nào trước đây. Những số liệu trong các
bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá đều được tôi thu thập từ
công việc thực tế phát sinh tại đơn vị, các tài liệu mà tôi tham khảo đều có nguồn gốc
trích dẫn rõ ràng.
Tôi xin chịu hoàn toàn trách nhiệm về lời cam đoan trên.

Đồng Nai, ngày 20 tháng 10 năm 2017
Học viên

ĐOÀN TẤN PHÁT


MỤC LỤC
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI NGHIÊN CỨU ............................................ 1
1.1 Giới thiệu về đề tài ................................................................................................ 1
1.2 Mục tiêu của đề tài ................................................................................................ 2
1.3 Đối tượng và phạm vi nghiên cứu ......................................................................... 3
1.3.1 Đối tượng nghiên cứu ......................................................................................... 3
1.3.2 Phạm vi nghiên cứu ............................................................................................ 3
1.4 Phương pháp nghiên cứu ....................................................................................... 3
1.4.1 Nội dung thực hiện .......................................................................................... 3
1.4.2 Phương pháp thực hiện ................................................................................... 3
1.5 Ý nghĩa của đề tài .................................................................................................. 4
CHƯƠNG 2: CÁC KIẾN THỨC LIÊN QUAN ............................................................ 5
2.1 Cơ sở dữ liệu đồ thị Neo4j .................................................................................... 5
2.1.1 Cơ sở dữ liệu đồ thị ......................................................................................... 5
2.1.1.1 Tổ chức quan hệ đồ thị ............................................................................. 6
2.1.1.2 Gán nhãn các Node ................................................................................... 6
2.1.1.3 Truy vấn đồ thị bằng cách duyệt............................................................... 6
2.1.1.4 Lập chỉ mục cho các Node hoặc Relationship.......................................... 7
2.1.1.5 Neo4j là một cơ sở dữ liệu đồ thị ............................................................. 7
2.1.2 Cơ sở dữ liệu Neo4j ........................................................................................ 9
2.1.2.1 Nodes ........................................................................................................ 9
2.1.2.2 Relationships ............................................................................................ 9
2.1.2.3 Properties ................................................................................................ 11
2.1.2.4 Nhãn ........................................................................................................ 12

2.1.2.5 Đường dẫn .............................................................................................. 13
2.2 Ngôn ngữ truy vấn Cypher ................................................................................. 15
2.2.1 Tổng quan về Cypher ................................................................................... 15
2.2.2 Tham số....................................................................................................... 17
2.2.3 Giao dịch (transaction) ................................................................................ 18
2.2.4 Cú pháp ........................................................................................................ 18
2.2.4.1 Toán tử .................................................................................................... 18
2.2.4.2 Biểu thức ................................................................................................. 18
2.2.5 Mệnh đề........................................................................................................ 19


2.2.5.1 Mệnh đề RETURN ................................................................................. 19
2.2.5.2 Mệnh đề ORDER BY ............................................................................. 20
2.2.5.3 Mệnh đề LIMIT ...................................................................................... 20
2.2.5.4 Mệnh đề SKIP ........................................................................................ 20
2.2.5.5 Mệnh đề WHERE ................................................................................... 21
2.3 Lý thuyết mạng trích dẫn..................................................................................... 21
2.3.1 Đặc điểm mạng trích dẫn .............................................................................. 22
2.3.2 Một số khái niệm trong mạng trích dẫn ........................................................ 22
2.3.2.1CitedSet ................................................................................................... 22
2.3.2.2 CitingSet ................................................................................................. 23
2.3.2.3 Full Graph ............................................................................................... 25
2.3.3 Lợi ích của mạng trích dẫn: .......................................................................... 22
2.4 GraphStream ........................................................................................................ 27
2.4.1 Tổng quan về GraphStream .......................................................................... 27
2.4.2 Sử dụng GraphStream ................................................................................... 28
2.4.2.1 Cài đặt ..................................................................................................... 28
2.4.2.2 Sử dụng graphStream ............................................................................. 28
CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ ỨNG DỤNG .......................................... 31
3.1 Phân tích yêu cầu ứng dụng ................................................................................ 31

3.2 Thiết kế ứng dụng ................................................................................................ 32
3.2.1 Chuẩn hóa cơ sở dữ liệu ................................................................................... 32
3.2.2 Tạo cơ sở dữ liệu đồ thị Neo4j ......................................................................... 35
3.2.3 Tìm kiếm mạng trích dẫn ................................................................................. 36
3.2.4 Trực quan.......................................................................................................... 37
CHƯƠNG 4: HIỆN THỰC HỆ THỐNG VÀ THỬ NGHIỆM.................................... 39
4.1 Yêu cầu thực nghiệm ........................................................................................... 39
4.2 Chạy chương trình ............................................................................................... 40
4.2.1 Thao tác với dữ liệu ...................................................................................... 41
4.2.2 Trực quan đồ thị ............................................................................................ 44
CHƯƠNG 5: Kết luận .................................................................................................. 50
5.1 Kết luận ............................................................................................................... 50
5.2 Những thiếu sót của luận văn .............................................................................. 50
5.3 Hướng phát triển .................................................................................................. 50


DANH MỤC HÌNH ẢNH
Hình 1.1 Mạng trích dẫn ................................................................................................. 2
Hình 2.1: Đồ thị nhiều Node và Relationship................................................................. 5
Hình 2.2: Truy vấn đồ thị bằng cách duyệt .................................................................... 6
Hình 2.3: Lập chỉ mục cho các Node hoặc Relationship ................................................ 7
Hình 2.4: Cơ sở dữ liệu đồ thị Neo4j .............................................................................. 8
Hình 2.5: Các Node ........................................................................................................ 9
Hình 2.6: Một Node có một thuộc tính ........................................................................... 9
Hình 2.7: Relationships................................................................................................. 10
Hình 2.8: Quan hệ giữa hai Node ................................................................................. 10
Hình 2.9: Quan hệ vào/ra một Node ............................................................................. 10
Hình 2.10: Quan hệ loop ............................................................................................... 11
Hình 2.11: Các kiểu của Relationship .......................................................................... 11
Hình 2.12: Properties .................................................................................................... 12

Hình 2.13: Nhãn ............................................................................................................ 13
Hình 2.14: Paths ............................................................................................................ 14
Hình 2.15: Path có chiều dài là 0 .................................................................................. 14
Hình 2.16: Path có chiều dài là 1 .................................................................................. 14
Hình 2.17: Đồ thị có nhiều quan hệ liên kết với nhau .................................................. 16
Hinh 2.18: Đồ thị đơn giản ........................................................................................... 19
Hình 2.19: Trích dẫn luôn luôn chỉ ngược với thời gian. ............................................ 22
Hình 2.20: Kết quả của CitedSet. ................................................................................. 23
Hình 2.21: Kết quả của CitingSet. ................................................................................ 24
Hình 2.22: Kết quả của Full Graph. .............................................................................. 25
Hình 2.23: Trích dẫn luôn luôn chỉ ngược với thời gian. ............................................ 26
Hình 2.24: Tác giả chính của lĩnh vực. ......................................................................... 27
Hình 2.25: Xu hướng của mạng trích dẫn .................................................................... 27
Hình 3.1: Mô tả tổng quan hoạt động của ứng dụng .................................................... 31
Hình 3.2: Bảng dữ liệu trên file csv .............................................................................. 34
Hình 4.1 Hướng dẫn mở chương trình trực quan ......................................................... 40
Hình 4.2: Giao diện ứng dụng ...................................................................................... 41
Hình 4.3: Giao diện thao tác với file text ..................................................................... 42


Hình 4.4: Giao diện nơi lưu file csv ............................................................................. 42
Hình 4.5: Giao diện chọn file csv để chuyển sang neo4j ............................................. 43
Hình 4.6: Giao diện chọn file csv để chuyển sang neo4j. ............................................ 43
Hình 4.7: Giao diện nơi lưu file database neo4j. .......................................................... 44
Hình 4.8: Kết quả trực quan của Cited set .................................................................... 45
Hình 4.9: kết quả dạng text của Cited set. .................................................................... 46
Hình 4.10: Kết quả trực quan của Citing set ................................................................ 46
Hình 4.11 Kết quả dạng text của Citingset ................................................................... 47
Hình 4.12 Kết quả trực quan của full graph ................................................................. 48
Hình 4.13 Kết quả dạng text của full graph .................................................................. 48

Hình 4.14 Kết quả trực quan mối quan hệ giữa hai bài báo ......................................... 49


DANH MỤC BẢNG BIỂU
Bảng 2.1: kết quả trả về tất cả các node của đồ thị ....................................................... 20
Bảng 4.1: Các thông số cấu hình phần cứng và hệ điều hành ...................................... 39
Bảng 4.2: Các thông số cấu hình phần mềm ................................................................ 40


1

CHƢƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI NGHIÊN CỨU
1.1 Giới thiệu về đề tài
Hiện nay, với sự phát triển vượt bậc của mạng Internet, việc tìm kiếm tài liệu trở
nên dễ dàng hơn. Tuy nhiên mỗi khi làm nghiên cứu, nhà nghiên cứu cần đọc tài liệu
rất nhiều và luôn muốn biết, trong phần mà họ nghiên cứu có những bài báo nào liên
quan với nhau và được trích dẫn ở đâu. Nhưng việc truy xuất nguồn gốc và tìm kiếm
để xác định mối liên hệ giữa các bài báo khoa học rất khó khăn.
Với số lượng bài báo khoa học mỗi năm càng nhiều, dữ liệu càng lúc càng lớn dần
theo thời gian. Điều này gây ra nhiều khó khăn trong việc lưu trữ cũng như truy xuất
mỗi khi cần.
Mạng trích dẫn của các bài báo khoa học là các đồ thị rất lớn, nên cơ sở dữ liệu đồ thị
neo4j với khả năng lưu trữ và truy vấn đồ thị sẽ được sử dụng để lưu trữ mạng trích
dẫn này.
Cơ sở dữ liệu đồ thị Neo4j là phần mềm quản trị cơ sở dữ liệu đồ thị mã nguồn mở,
viết bằng Java, và được phát hành vào năm 2010. Neo4j là một cơ sở dữ liệu đồ thị và
lưu trữ dữ liệu đồ thị.[5]
Luận văn này nhằm giải quyết việc lưu trữ dữ liệu đồ thị và biểu diễn cách truy xuất
các kết nối dữ liệu lớn một cách sinh động dễ hình dung.
o Tình hình ngoài nước:

-

Trên thế giới, hiện nay lưu trữ dữ liệu lớn với cơ sở dữ liệu đồ thị ngày
càng được nghiên cứu và sử dụng một cách rộng rãi.

-

Egghe & Rousseau (1990, p. 228), giải thích, khi một tài liệu A trích
dẫn một tài liệu B, chúng ta thể hiện điều này bằng một mũi tên đi từ
nút đại diện cho tài liệu A đến nút đại diện cho tài liệu B. Bằng cách
này các văn bản được gôm thành một đồ thị có hướng, và được gọi là
đồ thị trích dẫn hoặc mạng trích dẫn.[7]


2

Hình 1.1 Mạng trích dẫn
Hình 1.1 hiển thị như một mạng trích dẫn, ban đầu được công bố trong một bài báo
thuộc lĩnh vực thuốc gây mê(Cawkell, 1971). Mạng trích dẫn minh họa các kết nối
tham khảo giữa 19 bài báo đã được công bố trên các chủ đề giữa năm 1954 đến 1970.
Trong (Ray Ostman et al.,2003) và (Ian Robinson et al., 2016) tác giả đã giới thiệu cơ
sở dữ liệu đồ thị Neo4j và hệ thống quản lý dữ liệu để tạo cơ sở dữ liệu ban đầu của
một mạng trích dẫn. Thông qua việc sử dụng cở sở dữ liệu đồ thị, thông tin trích dẫn
và các kể nối có thể được thừa hưởng và phân tích trích dẫn. Đề tài kết hợp khả năng
CSDL với mạng trích dẫn. CSDL đồ thị có khả năng lưu trữ và tìm kiếm dữ liệu phức
tạp về các bài báo, tạp chí, tác giả.
1.2 Mục tiêu của đề tài
Phân tích các bài báo khoa học và tạo mạng trích dẫn các bài báo khoa học.
Lưu trữ mạng trích dẫn vào cơ sở dữ liệu đồ thị Neo4j.
Nghiên cứu đồ thị Neo4j để lưu mạng trích dẫn.

Trực quan hóa đồ thị mạng trích dẫn:
o Miền ảnh hưởng một bài báo.
o Mối liên hệ giữa 2 bài báo.
o Nơi thông tin về bài báo.


3
1.3 Đối tƣợng và phạm vi nghiên cứu
1.3.1 Đối tƣợng nghiên cứu
Khai thác và lưu trữ các bài báo khoa học trên citeseerx
1.3.2 Phạm vi nghiên cứu
CSDL Neo4j để lưu trữ dữ liệu các bài báo khoa học.
Tạo mạng trích dẫn các bài báo khoa học với khoảng 10.000 bài báo.
1.4 Phƣơng pháp nghiên cứu
1.4.1 Nội dung thực hiện
-

Tạo một mạng trích dẫn các bài báo khoa học.

-

Lưu mạng trích dẫn vào cơ sở dữ liệu đồ thị Neo4j.

-

Xây dựng chương trình trực quan mạng trích dẫn với truy vấn theo tầm ảnh
hưởng, mối liên hệ giữa 2 bài báo.

1.4.2 Phƣơng pháp thực hiện
Tạo mạng trích dẫn các bài báo khoa học: Tìm hiểu và thử nghiệm với các công cụ

trực quan hóa đồ thị sigma.js, vivagraph.js, gephi, D3.js, Keylines, Graphviz,
GraphStream.
Dùng cypher để lưu mạng trích dẫn, truy vấn cơ sở dữ liệu đồ thị.
-

Các dữ liệu trong CSDL đồ thị là các siêu dữ liệu (meta data), bao gồm dữ
liệu trích dẫn. Các CSDL được kết xuất như một mạng trích dẫn giữa các
bài báo. Luận văn kết hợp khả năng CSDL đồ thị với phân tích trích dẫn.
Neo4j cung cấp một phương tiện để lưu trữ và phân tích mạng trích dẫn.
Mỗi bài báo được tạo như sau: id: mã số của bài báo, Author: tác giả bài
báo, Journal: tạp chí, Các quan hệ tác giả, xuất bản, trích dẫn. Có 3 loại
nodes trong CSDL đồ thị là authors, journals, and article. Mục tiêu là:
o Phân tích trích dẫn cho các bài báo riêng biệt.
o Phân tích tầm ảnh hưởng của bài báo.

Truy Vấn & Cypher: Ngôn ngữ truy vấn Cypher để tạo và truy vấn dữ liệu trong
Neo4j [2]. CYPHER là khả năng truy vấn tương tự SQL của CSDL dữ liệu quan hệ.
Tuy nhiên, trong CSDL đồ thị, CYPHER có khả năng truy vấn đồ thị rất nhanh
chóng thông qua phép duyệt và tìm đường đi trên đồ thị.


4
Phép duyệt có thể đo lường:
-

Khoảng cách giữa các nút.

-

Sự liên thông của các node mạng.


-

Đường đi ngắn nhất giữa hai node.

Dùng java để viết chương trình trực quan hóa mạng trích dẫn.
-

Nút được biểu diễn bằng hình tròn.

-

Đường nối giữa các nút gọi là cạnh.

-

Tìm độ phủ của nút. Độ phủ là những nút nào có liên kết gần nhất theo

theo yêu cầu của người dùng.
-

Tìm mối liên hệ giữa hai nút theo cấp liên hệ.

1.5 Ý nghĩa của đề tài
Bằng việc sử dụng đồ thị Neo4j để lưu trữ khối lượng lớn dữ liệu mạng trích dẫn,
đồng thời việc thể hiện mạng trích dẫn bằng đồ thị trực quan sinh động sẽ giúp
cho người nghiên cứu dễ dàng tìm kiếm và xác định được mối quan hệ giữa các
bài báo khoa học. Từ đó rút ngắn thời gian và đem lại hiệu quả cho quá trình tìm
kiếm của nhà nghiên cứu.



5

CHƢƠNG 2: CÁC KIẾN THỨC LIÊN QUAN
2.1 Cơ sở dữ liệu đồ thị Neo4j
2.1.1 Cơ sở dữ liệu đồ thị
Cơ sở dữ liệu đồ thị lưu trữ dữ liệu dưới dạng đồ thị, một dạng cấu trúc dữ liệu, có
khả năng thể hiện bất kỳ loại dữ liệu nào theo một cách dễ tiếp cận nhất. Chúng ta
hãy khảo sát một số đồ thị, sử dụng chúng để hiểu thêm về khái niệm đồ thị. Chúng ta
sẽ “đọc” một đồ thị bằng cách lần theo từng mũi tên đường đi của đồ thi.[1]
Một đồ thị chứa nhiều Node và Relationship
Đồ thị đơn giản nhất là đồ thị chỉ có duy nhất một Node, các thông tin lưu trữ trong
Node gọi là Properties. Một Node có thể bắt đầu với một Properties và phát triển lên
hàng triệu Properties. Tại một số thời điểm nó phân tán dữ liệu vào nhiều Node và
những Node đó được tổ chức với những quan hệ rõ ràng. Hình 2.1 thể hiện các thành
phần và cách tổ chức lưu trữ đồ thị.

Hình 2.1: Đồ thị nhiều Node và Relationship


6
2.1.1.1 Tổ chức quan hệ đồ thị
Tổ chức quan hệ giữa các Node theo những cấu trúc tùy tiện, cho phép một đồ thị
tương tự như một danh sách, một cây, một bản đồ hoặc một thực thể kết hợp, … hay
bất kỳ một thứ gì có thể được kết hợp phức tạp hơn, đa dạng về cấu trúc kết nối bên
trong.
2.1.1.2 Gán nhãn các NonRelativeTo(null);
f.setVisible(true);



31

CHƢƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ ỨNG DỤNG
3.1 Phân tích yêu cầu ứng dụng
Ứng dụng hỗ trợ xem thông tin trích dẫn bài báo khoa học dạng đồ thị dựa trên cơ sở
dữ liệu đồ thị Neo4j và GraphStream. Gồm các chức năng sau:
-

Chuẩn hóa dữ liệu.

-

Tạo cơ sở dữ liệu đồ thị.

-

Tìm kiếm mạng trích dẫn.

-

Trực quan hóa mạng trích dẫn.

Hình 3.1: Mô tả tổng quan hoạt động của ứng dụng.
Hình 3.1 thể hiện các bước cần thiết để có thể lưu trữ dữ liệu vào cơ sở dữ liệu đồ thị
Neo4j và trực quan hóa được mạng trích dẫn.
-

Các nút sẽ chứa dữ liệu thông tin của bài báo.



32
o Những thông tin tương ứng với các thuộc tính của nút Index,
PaperTitle, Authors, Year, Abstract, PublicationVenue, Citation
-

Các cạnh sẽ chứa dữ liệu quan hệ giữa các nút.

-

Ứng dụng sẽ tìm mạng trích dẫn bài báo theo cấp độ với một trong những
thuộc tính của bài báo và cấp độ trích dẫn.

-

Ứng dụng sẽ trực quan mạng trích dẫn tìm được.

3.2 Thiết kế ứng dụng
3.2.1 Chuẩn hóa cơ sở dữ liệu
Với mục đích đọc file text sang csv để chuẩn hóa dữ liệu và tạo chuẩn chung cho file
dữ liệu import làm cho việc truy xuất dễ dàng hơn và có định dạng chung.
Ta có dữ liệu mẫu trong tệp Citation-Net dạng text như sau [6].
#*Information

geometry

of

U-Boost

and


Bregman

divergence

#@Noboru Murata,Takashi Takenouchi,Takafumi Kanamori,Shinto Eguchi
#t2004
#cNeural

Computation

#index436405
#%94584
#%282290
#%605546
#%620759
#%564877
#%564235
#%594837
#%479177
#%586607
#!We aim at an extension of AdaBoost to U-Boost, in the paradigm to build a
stronger classification machine from a set of weak learning machines. A
geometric understanding of the Bregman divergence defined by a generic
convex function U leads to the U-Boost method in the framework of
information geometry extended to the space of the finite measures over a label
set. We propose two versions of U-Boost learning algorithms by taking


33

account of whether the domain is restricted to the space of probability
functions. In the sequential step, we observe that the two adjacent and the
initial classifiers are associated with a right triangle in the scale via the
Bregman divergence, called the Pythagorean relation. This leads to a mild
convergence property of the U-Boost algorithm as seen in the expectationmaximization algorithm. Statistical discussions for consistency and robustness
elucidate the properties of the U-Boost methods based on a stochastic
assumption for training data.
Với các thông số được đánh dấu lần lượt là:
#index là id của bài báo
#* là tiêu đề bài báo
#@ là những tác giả
#t là năm xuất bản.
#! Là mô tả tóm tắt của bài báo.
#c là địa điểm xuất bản
#% là ID của những tài liệu tham khảo của bài báo này(có thể có nhiều dòng)
Với thông tin như trên, ta lưu dữ liệu vào file csv tương ứng với các cột Index,
PaperTitle, Authors, Year, Abstract, PublicationVenue, Citation
Với dữ liệu là một file có dung lượng lớn nên ta phải đọc từng dòng của file text, đặc
biệt không đọc một lúc hết file tránh tình trạng treo máy.
Dữ liệu “Citation Net text” được tải về từ địa chỉ và có
16.000 node
Read(Citation Net text);
do{
if(line chứa #index) là id của bài báo
if(line chứa #*) là tiêu đề bài báo
if(line chứa #@) là những tác giả
if(line chứa #t) là năm xuất bản.
if(line chứa #!) Là mô tả tóm tắt của bài báo.
if(line chứa #c) là địa điểm xuất bản



34
if(line chứa #%) là ID của những tài liệu tham khảo của bài báo này(có thể có
nhiều dòng)
if (line == null) //dòng kết thúc của một bài báo
{
insert bài báo vào csv
save(file csv)
}
}while(readlines)
Close(csv)
Để tránh tình trạng out of memory khi lưu file csv ta cần ghi từng dòng vào file csv.
Sau khi đọc và ghi sang file csv xong thì ta tiến hành đóng trình ghi file csv cũng như
trình đọc file text.

Hình 3.2: Bảng dữ liệu trên file csv
Hình 3.2 thể hiện thông tin dữ liệu sẽ được lưu trữ vào neo4j.


35
3.2.2 Tạo cơ sở dữ liệu đồ thị Neo4j
Quy trình tạo cơ sở dữ liệu đồ thị Neo4j gồm các bước sau:
Bước 1: Chọn file CSV đã được chuẩn hóa.
Bước 2: Khởi tạo Neo4j.
Bước 3: Tạo nhãn đại diện cho nút.
Bước 4: Đọc từng dòng trong file csv và ghi vào neo4j thành nút.
Bước 5: Đọc phần trích dẫn và tạo quan hệ giữa các nút. Ghi quan hệ vào neo4j
Bước 6: Lặp lại bước 4 cho tới khi đọc tới hết file csv.
Tạo hoặc mở kết nối với Neo4j Database
Read(Citation Net CSV);

do{
if(tồn tại nút line)
{
update các thông số line cho nút
}
else{
insert line vào neo4j;
}
if(column citation chứa giá trị){
if(tồn tại index citation trong Neo4j database)
{
tạo cạnh giữa line vừa insert ở trên vơi index citation
}
else{
tạo nút tạm với index citation
tạo cạnh giữa line vừa insert ở trên với index citaion
}
}
}while(readlines)


36
Ta tiến hành đọc từng dòng của file csv. Đặc biệt không đưa toàn file vào vùng nhớ
đệm để đọc, để tránh máy bị treo.
Để thuận tiện cho việc lưu trữ database, ta tiến hành tạo nút với bất kỳ index nào có
được. Khi có dữ liệu toàn nút thì ta tiến hành cập nhật lại các thông tin cho nút.
3.2.3 Tìm kiếm mạng trích dẫn
Tìm kiếm mạng trích dẫn gồm các bước sau:
Bước 1: Kết nối cơ sở dữ liệu đồ thị Neo4j.
Bước 2: Nhập các tham số của bài báo cần tìm

Bước 3: Chọn loại mạng trích dẫn cần tìm
Bước 4: Chọn độ phủ cho mạng trích dẫn cần tìm.
Bước 5: Bắt đầu tìm kiếm.
Connect(Neo4j database)
If(input là citedSet)
{
SearchCitedSet(bài báo với tham số đã nhập)}
Else if(input là citingSet){
searchCitingSet(bài báo với tham số đã nhập)
}
Else searchFullGraph(Bài báo với tham số đã nhập)
-Tìm kiếm mạng trích dẫn CitedSet:
Với hàm searchCitedSet ta tìm các thông tin bài báo với lệnh sau:
-

MATCH (n:label)<-[r*<Cấp độ bd>..<Cấp độ kt>]-(m)where n.[Tên
thuộc tính] =~ ".*[Giá trị thuộc tính].*" RETURN n,r,m;

-Tìm kiếm mạng trích dẫn CitingSet:
Với hàm searchCitingSet ta tìm các thông tin bài báo với lệnh sau:
-

MATCH (n:label)-[r*<Cấp độ bd>..<Cấp độ kt>]->(m)where n.[Tên
thuộc] =~ ".*[Giá trị thuộc tính].*" RETURN n,r,m;

-Tìm kiếm mạng trích dẫn với đầy đủ cả CitedSet và CitingSet:
Với hàm searchFullGraph ta tìm các thông tin bài báo với lệnh sau:
-

MATCH (n:label)-[r*<Cấp độ bd>..<Cấp độ kt>]-(m)where n.[Tên

thuộc tính] =~ ".*[Giá trị thuộc tính].*" RETURN n,r,m;


37
-Ý nghĩa các giá trị trong các hàm tìm kiếm:
Lable: là nhãn được gán cho nút
Cấp độ bd: là cấp độ bắt đầu tìm kiếm cho nút, luôn bắt đầu từ cấp độ 0(Tìm
duy nhất nút gốc).
Cấp độ kt: là cấp độ tối đa của mạng trích dẫn tính từ nút gốc cần tìm.
Tên thuộc tính: là tên của các thuộc tính trong một nút.
Giá trị thuộc tính: Nội dung của thuộc tính cần tìm.
N: đại diện cho nút gốc
R: đại diện cho các cạnh.
M: đại diện cho các nút có liên quan với nút gốc.
(n:lable)<-: Tìm những nút biết nút gốc(CitedSet).
->(m): Tìm những nút mà nút gốc biết(CitingSet).
(n:label)-[r*<Cấp độ bd>..<Cấp độ kt>]-(m): Tìm những nút biết nút gốc và
nút gốc biết(Tìm cả 2 hướng)
3.2.4 Trực quan
Quy trình trực quan hóa mạng trích dẫn gồm các bước sau:
Bước 1: Đọc kết quả mạng trích dẫn được tìm thấy ở mục tìm kiếm.
Bước 2: Tạo danh sách các năm trên đồ thị.
Bước 3: Xác định và tô đỏ nút gốc.
Bước 4: Vẽ nút.
Bước 5: Xác định quan hệ trích dẫn giữa nút gốc và nút trích dẫn để tạo hướng
liên kết cho 2 nút. Vẽ quan hệ.
Bước 6: Lặp lại bước 4 cho tới khi hết nút và hết quan hệ.
while(kết quả search){
if(kết quả search là nút)
{

if(bài báo là bài gốc){
thêm thuộc tính màu đỏ cho nút gốc
}
Thêm nút này vào GraphStream
}


38
else if(kết quả search là cạnh)
{
Thêm cạnh này vào graphstream
}
}

Cách thức duyệt đồ thị tìm mạng trích dẫn theo cấp độ:
 Lần lượt các đỉnh của đồ thị (Mỗi đỉnh tương ứng với một bài báo, được gọi là
nút).
 Tại mỗi đỉnh tìm tiếp đỉnh gần nhất có quan hệ trích dẫn của đỉnh đang xét và
duyệt sâu xuống theo đỉnh đó. Khi đạt được độ sâu mong muốn tiếp tục với
đỉnh gần thứ nhì có quan hệ trích dẫn của đỉnh đang xét, v.v…
 Khi gặp đỉnh không thỏa điều kiện thì nó sẽ không duyệt sâu xuống tiếp nên
loại bỏ được rất nhiều phân nhánh dư thừa dẫn đến bỏ qua được rất nhiều phép
duyệt không cần thiết nên tốc độ vẫn được đảm bảo dù có tăng độ sâu hoặc
tăng số lượng bản ghi lên.
Cần chú ý là khi ở độ sâu lớn, tốc độ Neo4j vẫn không đổi do:
 Số lượng nút tương đối thấp
 Dù tăng độ sâu lên bao nhiêu đi chăng nữa thì vẫn chỉ tìm được kết quả thấp
nhất ở độ sâu cao nhất có thể của kết quả.
 Do là duyệt theo kiểu đồ thị nên nó ảnh hưởng rất nhiều vào số lượng kết quả
trả về.

Vì thế nếu độ sâu càng lớn, lẽ ra càng phải ra nhiều kết quả, càng phải tốn thời gian
hơn thì không được phản ánh đầy đủ ở đây. Nếu số lượng nút lên đến hàng triệu nút
và độ sâu lên đến hàng nghìn thì con số sẽ phản ánh chính xác hơn.


39

CHƢƠNG 4: HIỆN THỰC HỆ THỐNG VÀ THỬ NGHIỆM
4.1 Yêu cầu thực nghiệm
Dựa trên những kiến thức đã trình bày ở trên, luân văn thực hiện viết một chương
trình ứng dụng demo. Chương trình được viết bằng ngôn ngữ java, thể hiện những
hàm thư viện mà Neo4j, Cypher, GraphStream hỗ trợ cho ngôn ngữ này. Vì thời gian
có hạn nên ứng dụng chỉ thực hiện những chức năng đơn giản như:
-

Đọc file dạng txt.

-

Đọc và lưu file csv.

-

Tạo cơ sở dữ liệu Neo4j.

-

Import dữ liệu từ file csv sang neo4j.

-


Duyệt đồ thị.

-

Trực quan đồ thị.

Để thử nghiệm một cách hiệu quả, tôi đã trích lọc tệp dữ liệu chứa khoảng 1 triệu 300
nghìn bài báo về 16000 bài báo. Trong đó có 300 bài báo gốc và toàn bộ những trích
dẫn liên quan của 300 bài báo đó.
Bảng 4.1: Các thông số cấu hình phần cứng và hệ điều hành
STT
1

Môi trường
Máy thực

Thông số
Processor

Mô tả

Ghi chú

Intel(R)
Core(TM)

i5-

4210U CPU @

1.70GHz(4
CPU),~1.7GHz
2

Ram

4Gb

sử dụng
512Mb

3

Hệ điều hành

Windows 10 Pro
64 bit


40
Bảng 4.2: Các thông số cấu hình phần mềm
STT

Tên phần mềm, thư viện hỗ trợ

Mô tả

1

Neo4j


Version 3.2.3

2

java

Version 1.8.0_144

3

GraphStream

Gs-core-1.3

4

Netbean

Version 8.2

4.2 Chạy chƣơng trình
Chương trình được xuất ra tập tin .jar. Nên hệ điều hành phải cài đặt môi trường java
mới có thể chạy được ứng dụng. Cài đặt gói jdk của java, ở đây bài báo dùng jdk
1.8.0_144.
Nhấp chuột phải lên tập tin VisualNeo4j.jar chọn open như hình:

Hình 4.1 Hướng dẫn mở chương trình trực quan



×