Khảo sát hiện trạng

Một phần của tài liệu ĐÁNH GIÁ NĂNG LỰC NGHIÊN CỨU CỦA CÁ NHÂN, TỔ CHỨC DỰA TRÊN PHÂN TÍCH, TÍNH TOÁN CÁC CHỈ SỐ KHOA HỌC (Trang 78 - 118)

Nguồn dữ liệu chỉ mục các bài báo khoa học hiện nay có thể được thu thập từ trên mạng internet dùng web crawler. Việc thu thập dữ liệu ban đầu có thể được thực hiện dễ dàng nhất ở các trang web của các hệ thống thư viện điện tử. Như đã trình bày ở trên, hiện tại có rất nhiều thư viện điện tử chứa các thông tin về bài báo khoa học, sau khi đánh giá các hệ thống đó, chúng tôi quyết định chọn MAS để lấy dữ liệu đầu tiên vì các ưu điểm của nó mà chủ yếu là dữ liệu được tổ chức tốt. Trong tương lai, dữ liệu sẽ được nhập chung với dữ liệu mà DBLP10 cung cấp, sau đó chúng tôi sẽ phát triển thêm chương trình lấy dữ liệu từ các trang khác.

Trong MAS, dữ liệu được tổ chức thành sáu loại đối tượng chính, đó là tác giả (Author), bài báo khoa học (Publication), Hội nghị (Conference), Tờ báo (Journal), Tổ chức (Organization), Từ khóa (Keyword). MAS hỗ trợ nhiều cách

khác nhau để lấy được dữ liệu của các đối tượng này. Một trong các cách là duyệt qua danh sách các đối tượng lần lượt theo ba tiêu chí là: theo lĩnh vực nghiên cứu (Domain), theo lĩnh vực con của lĩnh vực nghiên cứu (Subdomain) và theo năm (Year). Ngoài ra MAS còn hỗ trợ truy cập thẳng vào trang nội dung của một đối tượng nào đó nếu biết địa chỉ url của nó trong hệ thống. Ta cũng có thể lấy danh sách các đối tượng bằng cách sử dụng chức năng tìm kiếm.

Hình 4.1 – Duyệt danh sách các đối tượng trên trang MAS.

Để duyệt qua danh sách các đối tượng, MAS sử dụng url theo phương thức get với cấu trúc nhất định, nhờ vậy có thể tự sinh ra url thích hợp để lấy danh sách này. Từ danh sách, có thể trích xuất thông tin địa chỉ của từng đối tượng để đi đến trang web về đối tượng đó. Nội dung của các trang này có cấu trúc html đặc trưng, có thể dựa vào đó để phân tích và rút trích thông tin cần thiết. Thông tin sau khi lấy được sẽ được lưu vào cơ sở dữ liệu cục bộ.

4.2.2 Phân tích thiết kế

Trong số các cách lấy dữ liệu đã đề cập ở trên thì cách duyệt qua danh sách các đối tượng theo lĩnh vực con (subdomain) là phù hợp nhất để lấy số lượng

lớn dữ liệu, vì kết quả sẽ ít bị trùng lắp, đây cũng là cách duy nhất có thể lấy thông tin về lĩnh vực của mỗi bài viết. Đối tượng chính cần duyệt qua là các bài viết, các đối tượng khác sẽ được lấy dựa trên sự liên kết đến từng bài viết, ví dụ như mối quan hệ được viết bởi, mối quan hệ xuất bản tại…

Mô hình hoạt động của chương trình như sau:

Dữ liệu cần lấy chỉ nằm trên một số trang web nhất định, vì vậy crawler được thiết kế sẽ là một dạng crawler tập trung, nó sẽ chỉ tập trung lấy về các trang web chứa dữ liệu cần thiết. Các trang web này không tồn tại sẵn mà chỉ được sinh ra như là kết quả của các câu truy vấn phù hợp, vì vậy crawler sẽ là dạng crawler cho deep web, tức là nó sẽ phải crawl theo các url truy vấn phù hợp được sinh ra chứ không phải chỉ dựa vào các liên kết giữa các trang web với nhau.

Quá trình crawl dữ liệu được tiến hành với nền tảng là một tập các lĩnh vực con cần lấy dữ liệu, chương trình sẽ dựa vào mẫu các url để sinh ra một tập các

MAS Danh sách subdomain Dữ liệu Nội dung html Các mẫu Xử lý Danh sách url URL query Phân tích html

url hạt giống (seeds). Quá trình sẽ duyệt qua các url hạt giống này để đi đến trang danh sách các bài viết, sau đó nó sẽ duyệt qua danh sách các bài viết này để đi đến trang thông tin chi tiết của bài báo, sau đó nó sẽ đi theo các liên kết ngữ nghĩa của bài báo để lấy về những thông tin liên quan đến bài báo đó. Quá trình này được tiến hành theo phương pháp duyệt theo chiều sâu (Depth-First Search), tuy nhiên độ sâu bị giới hạn bởi loại liên kết, nói cách khác về mặt logic nó giống như là duyệt qua các bài báo theo chiều rộng (Breadth-First Search).

Quá trình thu thập dữ liệu có thể chia làm 4 bước như sau:

Bước 1: Tạo danh sách url nền tảng.

Từ danh sách các subdomain, và các pattern đã định nghĩa trước, chương trình sinh ra các url nền tảng để duyệt qua các bài viết ở từng lĩnh vực. Danh sách các subdomain được lấy từ trang MAS, các pattern được định nghĩa thông qua việc nghiên cứu mẫu url của trang MAS, các pattern sẽ được liệt kê chi tiết sau đây.

Bước 2: Tải các trang html.

Đầu tiên, chương trình sẽ lấy các url từ danh sách url nền tảng, request lên trang MAS và trả về trang html tương ứng. Khi quá trình crawl đã bắt đầu, chương trình sẽ trích url từ các trang html trước đó để tiếp tục request các trang html về.

Bước 3: Phân tích các trang html.

Khi đã nhận được các trang html, chương trình sẽ tiến hành phân tích nội dung html để lấy các dữ liệu cần thiết. Quá trình phân tích được thực hiện dựa vào các pattern của trang html được xác định dựa vào việc phân tích bằng tay các trang html mẫu. Quá trình phân tích các trang html này cũng sẽ trích ra các url cần thiết, bổ sung chúng vào danh sách các url sẽ request tiếp theo.

Bước 4: Lưu dữ liệu.

Sau khi thu nhận được dữ liệu cần thiết, chương trình sẽ lưu chúng vào cơ sở dữ liệu để sử dụng lâu dài.

Trong khi crawl, chương trình cũng sẽ phải tránh sự trùng lắp dữ liệu, kiểm tran trùng lắp có thể thực hiện theo nhiều cách khác nhau, như phân biệt tài liệu bằng tên kết hợp với năm phát hành, phân biệt tác giả bằng họ và chữ cái viết tắt tên cùng với một số luật heuristic. Đối với dữ liệu thu thập từ trang MAS, để đơn giản, ta có thể sử dụng cơ chế phân biệt có sẵn của MAS. MAS phân biệt các đối tượng khác nhau bằng cách gán id duy nhất, id này được thể hiện trong địa chỉ url của đối tượng, nghĩa là url của mỗi đối tượng trong trang MAS cũng duy nhất, từ đó ta có thể so sánh url để tránh trùng lắp khi crawl.

Mẫu các url được sử dụng trong toàn bộ chương trình được cho trong bảng sau:

Bảng 4.1 – Các mẫu url được dùng trong crawler.

STT Mẫu url Giải thích

1. http://academic.research .microsoft.com

Địa chỉ gốc dùng làm nền tảng để thêm vào các tham số khác.

Ví dụ: Thêm /Publication/694811 để có địa chỉ url của một bài báo cụ thể:

http://academic.research.microsoft.com/Publi cation/694811 2. http://academic.research .microsoft.com/RankLis t?entitytype=1&topdom ainid=2&subdomainid=

Phần địa chỉ nền tảng để duyệt danh sách các đối tượng bài viết (entitytype=1), trong lĩnh vực khoa học máy tính (topdomainid=2), và lĩnh vực con sẽ được thêm vào cho phù hợp khi truy vấn (subdomainid=).

Ví dụ: Thêm subdomainid = 1 để có địa chỉ url của trang duyệt các bài báo thuộc lĩnh vực con Algorithm & Theory:

http://academic.research.microsoft.com/Rank List?entitytype=1&topdomainid=2&subdoma inid=1 3. http://academic.research .microsoft.com/Detail?s earchtype=5&entitytype =1&id=

Phần địa chỉ nền tảng để duyệt danh sách các trích dẫn (searchtype=5) của một bài viết (entitytype=1) cụ thể (id=).

Ví dụ: Thêm id = 1 để có địa chỉ url của trang duyệt các trích dẫn của bài số 1:

4. start=…&end=… Giới hạn số kết quả trả về khi duyệt danh sách các bài báo, hoặc duyệt danh sách các trích dẫn. Với start là số thứ tự bắt đầu, end là số thứ tự kết thúc, start mặc định trong các danh sách này là 1.

Để phân tích nội dung trang web và lấy các dữ liệu cần thiết, chương trình dựa trên việc phân tích html dùng các mẫu đặc trưng cho từng thẻ dữ liệu. Các mẫu được sử dụng được cho trong bảng sau:

Bảng 4.2 – Các mẫu dùng trong phân tích html để lấy dữ liệu.

STT Tên Mẫu Giải thích

1. PUBLICATION _COUNT_SPA N_ID ctl00_MainContent _SearchSummary_l blResultMessage

Id thẻ span chứa thông tin số lượng publication trong trang html danh sách các publication. 2. PUBLICATION

_ITEM_PRE_IN _LIST_A_ID

ctl00_MainContent Phần đầu của Id thẻ a của mỗi mục publication trong trang danh sách publication.

3. PUBLICATION _ITEM_POST_I N_LIST_A_ID

hypName Phần cuối của Id thẻ a của mỗi mục publication trong trang danh sách publication.

4. TITLE_SPAN_I D

ctl00_MainContent _PaperItem_title

Id thẻ span chứa thông tin tựa đề mỗi bài báo trong trang thông tin bài báo.

5. ABSTRACT_SP AN_ID

ctl00_MainContent _PaperItem_snippet

Id thẻ span chứa thông tin phần tổng quan mỗi bài báo trong trang thông tin bài báo.

6. YEAR_PUBLIS HED_SPAN_ID

ctl00_MainContent _PaperItem_lblYea r

Id thẻ span chứa thông tin năm xuất bản mỗi bài báo trong trang thông tin bài báo.

7. CONFERENCE _A_ID

ctl00_MainContent _PaperItem_HLCo nference

Id thẻ a của hội thảo của mỗi bài báo trong trang thông tin bài báo.

8. JOURNAL_A_I

rnal báo. 9. YEAR_CONFE RENCE_SPAN_ ID ctl00_MainContent _PaperItem_YearC onference

Id thẻ span năm xuất bản trong hội thảo. 10. YEAR_JOURN AL_SPAN_ID ctl00_MainContent _PaperItem_YearJo urnal

Id thẻ span năm xuất bản trong tờ báo.

11. PATTERN_PA GENUM_TO_P AGENUM

"(\\d+)-(\\d+) Pattern để lấy thông tin số trang của 1 bài báo.

12. PATTERN_YE AR

"\\d{4} Pattern để lấy thông tin năm phát hành của 1 bài báo.

13. PATTERN_RA

NGE_YEAR "(\\d{4})-(\\d{4}) Pattern để lấy thông tin khoảng năm phát hành của 1 bài báo. 14. DOI_A_ID ctl00_MainContent

_PaperItem_hypD OIText

Id thẻ a chứa thông tin số doi của bài báo.

15. DOWNLOAD_ PUBLICATION _PRE_A_ID ctl00_MainContent _PaperItem_downL oadList

Phần đầu Id thẻ a của liên kết đến trang download bài báo. 16. DOWNLOAD_

PUBLICATION _POST_A_ID

HyperLink1 Phần cuối Id thẻ a của liên kết đến trang download bài báo. 17. AUTHOR_ARE

A_DIV_ID ctl00_MainContent_PaperItem_divPap er

Id thẻ div thông tin khu vực địa lý của tác giả.

18. AUTHOR_URL

_PATTERN /Author/ Mẫu url đến tác giả trong trang nội dung bài báo. 19. AUTHOR_NA

ME_SPAN_ID

ctl00_MainContent _AuthorItem_autho rName

Id thẻ span chứa thông tin tên tác giả trong trang thông tin tác giả. 20. AUTHOR_IMA GE_SPAN_ID ctl00_MainContent _AuthorItem_imgA uthorPhoto Id thẻ span địa chỉ hình ảnh tác giả trong trang thông tin tác giả.

SITE_SPAN_ID ePage trang thông tin tác giả. 22. AUTHOR_ORG _SPAN_ID ctl00_MainContent _AuthorItem_affili ation

Id thẻ span chứa thông tin tổ chức của tác giả trong trang thông tin tác giả.

23. CITATION_A_I D

ctl00_MainContent _CitationList_ctl00 _HeaderLink

Id thẻ a liên kết đến trang danh sách trích dẫn trong trang thông tin bài báo.

24. ITEM_COUNT_ ID ctl00_MainContent _SearchSummary_ divSummary Id thẻ div đếm số trích dẫn trong trang danh sách trích dẫn. 25. ITEM_IN_LIST

_PRE_A_ID

ctl00_MainContent _ObjectList

Phần đầu Id thẻ a liên kết đến các bài báo trích dẫn trong trang danh sách trích dẫn. 26. ITEM_IN_LIST

_POST_A_ID

Title Phần cuối Id thẻ a liên kết đến các bài báo trích dẫn trong trang danh sách trích dẫn. 27. CITATION_CO NTEXT_A_ID ctl00_MainContent _PaperCitationCont extList_ctl00_Head erLink

Id thẻ a liên kết đến trang danh sách ngữ cảnh trích dẫn trong trang thông tin bài báo.

28. REF_A_ID ctl00_MainContent _PaperList_ctl00_ HeaderLink

Id thẻ a liên kết đến trang danh sách tham khảo trong trang thông tin bài báo.

29. JOURNAL_NA

ME_SPAN_ID ctl00_MainContent_JournalItem_name Id thẻ span chứa thông tin tên của tờ báo. 30. JOURNAL_WE

BSITE_A_ID

ctl00_MainContent _JournalItem_Hom ePage

Id thẻ a liên kết đến trang web của tờ báo. 31. JOURNAL_YE AR_SPAN_ID ctl00_MainContent _JournalItem_detail Info

Id thẻ span chứa thông tin năm phát hành tờ báo. 32. CONFERENCE _NAME_SPAN _ID ctl00_MainContent _ConferenceItem_n ame

Id thẻ span chứa thông tin tên của hội thảo.

33. CONFERENCE

D HomePage 34. CONFERENCE _YEAR_SPAN_ ID ctl00_MainContent _ConferenceItem_d etailInfo

Id thẻ span chứa thông tin năm phát hành hội thảo. 35. CONFERENCE _CFP_SPAN_ID ctl00_MainContent _ConferenceItem_h ypConferenceCFP

Id thẻ span chứa thông tin kêu gọi nộp bài cho hội thảo.

36. KEYWORD_H REF_PRE

/Keyword/ Mẫu url đến từ khóa trong trang nội dung bài báo.

37. KEYWORD_N

AME_SPAN_ID ctl00_MainContent_KeywodItem_nam e

Id của thẻ span chứa tên của từ khóa. 38. KEYWORD_ST EMMINGS_SP AN_ID ctl00_MainContent _KeywodItem_ltrSt emmings

Id của thẻ span chứa danh sách các từ đồng nghĩa với các từ khóa.

39. ORG_NAME_S

PAN_ID ctl00_MainContent_OrganizationItem _name

Id của thẻ span chứa tên của tổ chức.

40. ORG_WEBSIT

E_SPAN_ID ctl00_MainContent_OrganizationItem _HomePage

Id của thẻ span chứa website của tổ chức.

41. ORG_CONTIN ENT_DIV_CLA SS

continent Class của thẻ div chứa thông tin địa lý châu lục của tổ chức. 42. ORG_H_INDE

X_SPAN_ID ctl00_MainContent_OrganizationItem _detailInfo

Id của thẻ span chứa h-index của tổ chức.

Thuật giải của crawler cho trang MAS được thiết kế với mã giả như sau:

Bảng 4.3 – Mã giả thuật giải của crawler cho trang MAS.

/**

* Thuật toán chạy Crawler lấy dữ liệu trên MAS theo hướng duyệt subdomain.

* @author Nghiep

* Date created: 18-08-2011 */

- Subdomain

- URL patterns

Output:

- Dữ liệu publication, author, organization, conference, journal,

keyword với sự kết nối ngữ nghĩa với nhau và với subdomain, domain. BEGIN

Nhập subdomain.

Sinh URL request pub list.

Request pub list lan dau tien cho moi subdomain.

noPub = number of publications;

int start, end = 0;

while (start < noPub){

end = (start + 100 <= noPub)?(start + 100):noPub; // Xác định giá trị end, lấy mỗi lần 100 publication hoặc lấy đến paper cuối cùng, tùy theo cái nào nhỏ hơn.

Request pub list from start to end.

Parse pub list to get list of pub's url.

for (pub : list)

if (pub có rồi && đầy đủ)

lưu thông tin subdomain;

else {

if (pub chưa có)

sẽ lưu mới id và url;

else

sẽ cập nhật lại paper theo id và url cũ;

Request pub.

cập nhật dữ liệu "visible" cho các pub chưa đầy đủ.

//Tức là các dữ liệu có thể lưu ngay trực tiếp từ page trả về của pub;

// sẽ cập nhật những cái liên quan trước, rồi cập nhật paper, rồi cập nhật các bảng nối.

Parse author list of this pub.

for (author : author list )

crawlAuthorFunction(author);

//in this function, also call crawlOrgFunction;

Parse conference or journal or magazine of this pub.

for (item : list)

crawlItem(item);

//also call crawlPCMemberFunction;

Parse keyword of this pub.

for (keyword : list)

crawlKeywordFunction(keyword);

Parse comment of this pub.

for (comment : list)

crawlCommentFunction(comment);

Parse review of this pub.

for (review : list)

for (reviewer : list)

crawlReviewerFunction(reviewer);

//sau đây cập nhật citation

Request citation list.

Parse citation list.

for (citation : list){

if (citationPub chưa có)

lưu mới id, url;

cập nhật thông tin citation;

//lưu ý: ở đây duyệt các pub tham khảo đến pub ta đang crawl. Nhằm mục đích làm cho việc duyệt citation context thuận tiện hơn.

}

//sau đây cập nhật citation context

request citationContext list;

parse citationContext list;

for (citationContext : list)

cập nhật thông tin citationContext;

}

start = end; }

END

Dữ liệu các chỉ mục bài báo sẽ được lưu trong cơ sở dữ liệu quan hệ. Cơ sở dữ liệu dùng cho crawler sẽ chứa toàn bộ dữ liệu thu thập được, nó được thiết kế để đảm bảo có thể sử dụng khi mở rộng crawler sang các trang khác như Google Scholar, IEEEXplore… Nó sẽ lưu trữ dữ liệu chỉ mục một cách đầy đủ, súc tích và dễ sử dụng. Cơ sở dữ liệu này sẽ được mở rộng, thêm một số bảng cần thiết khi xây dựng hệ thống thư viện điện tử để chứa dữ liệu phục vụ xếp hạng, tìm kiếm… Sơ đồ ERD của cơ sở dữ liệu được thiết kế trong công cụ MySQL Workbench như sau:

Để phù hợp cho việc lưu dữ liệu crawl về, cơ sở dữ liệu này vi phạm dạng chuẩn ở một số thuộc tính, ví dụ như thuộc tính viewPublication trong bảng Paper không phải là đơn trị. Tuy nhiên những trường hợp này làm tăng tính hiệu quả khi chạy chương trình mà thực tế không ảnh hưởng xấu đến chất lượng của chương trình.

Mô tả các bảng của chương trình như sau:

Bảng 4.4 – Mô tả các bảng trong cơ sở dữ liệu của crawler.

STT Tên bảng Tên cột Kiểu dữ liệu Mô tả

1. author idAuthor INT Mã tác giả. authorName VARCHAR(1000) Tên tác giả.

image VARCHAR(1000) Địa chỉ lưu trữ hình ảnh của tác giả. emailAddress VARCHAR(1000) Email chính thức

của tác giả. website VARCHAR(1000) Trang web chính

thức của tác giả. idOrg INT Mã tổ chức tác giả

đang công tác hiện tại. Mã tổ chức là khóa ngoại liên kết đến bảng Org. h_index INT Chỉ số h-index lấy

từ nguồn crawl dữ liệu MAS.

g_index INT Chỉ số g-index lấy từ nguồn crawl dữ liệu MAS.

url VARCHAR(1000) Url của tác giả tại

Một phần của tài liệu ĐÁNH GIÁ NĂNG LỰC NGHIÊN CỨU CỦA CÁ NHÂN, TỔ CHỨC DỰA TRÊN PHÂN TÍCH, TÍNH TOÁN CÁC CHỈ SỐ KHOA HỌC (Trang 78 - 118)