Phân tích chi tiết hệ thống CiteSeerX

Một phần của tài liệu Xây dựng hệ thống thu thập, quản lý tài liệu khoa học dựa trên CiteSeerX. (Trang 50)

Ta sẽ phân tích chi tiết về kiến trúc của CiteSeerX dựa theo đặc tả về kiến trúc đã nêu ở trên.

3.1 Mô hình cơ sở dữ liệu – Storage Layer

Tài liệu khoa học là những tài liệu có cấu trúc: phần header, phần nội dung chính, phần citations và được người dùng tìm kiếm theo những thành phần cấu trúc đó. Vì thế hệ thống cần tổ chức lưu trữ cho phù hợp. Những đối tượng dữ liệu được

quan tâm chính là :

Người dùng (user): Người đăng nhập vào hệ thống, cập nhật dữ liệu, tìm

kiếm thông tin.

Bài viết (paper) : Đối tượng xử lý chính, bao gồm tất cả các thông tin đặc

trưng về bài viết.

Tác giả (author) : Bao gồm những thông tin về tên, địa chỉ, email, nơi xác

nhận tư cách tác giả (affiliation). Mỗi tác giả đều có liên kết tới một hay nhiều bài viết.

Tài liệu tham khảo (citations): Bao gồm những thông tin về tài liệu được bài

viết tham khảo tới. Những thông tin này là tiêu đề, tác giả, số chương, số trang, nhà xuất bản, năm xuất bản,… Mỗi tài liệu tham khảo có liên kết tới một hay nhiều bài viết.

Ngoài ra còn một số đối tượng dữ liệu cần lưu trữ như url (đường link Web được dùng trong bài viết), keyword (từ khóa bài viết), checksum (mã kiểm tra tài liệu),

textsource(nội dung chính tài liệu), citationcontexts(đoạn ngữ cảnh tham chiếu của

bài viết),…

Theo đó CiteSeerX có mô hình cơ sở dữ liệu như sau

PK : khóa chính FK : khóa ngoài

Hình 17: Các bảng cơ sở dữ liệu của hệ thống

Table Paper: Bao gồm các trường chứa thông tin metadata của bài viết: tiêu đề bài viết (title), nội dung tóm tắt (abstract), nhà xuất bản (publisher), năm xuất bản (Year), số trang, số chương (pages,volume), phiên bản cập nhật (VersionName),… 3 trường xác định thông tin về tài liệu tham khảo là :

Ncite: số tài liệu tham khảo của bài viết.

SelfCite: số tài liệu tham khảo có cùng tên tác giả với bài viết.

Ncited: số tài liệu tham khảo đên bài viết có metadata tương ứng. Đây là cơ

sở để đánh giá chất lượng bài viết, giúp tác giả thấy được mức độ quan tâm của cộng đồng đến bài viết của mình.

Những table liên kết với với table Paper theo quan hệ một-nhiều bao gồm Author, Url, Keyword, Citations.

Table Author: Chứa thông tin về tác giả : tên, địa chỉ, email, nơi xác nhận tư cách tác giả.

Table Url : Chứa các địa chỉ url có trong bài viết, giúp hệ thống crawler dữ

liệu hoặc xác định địa chỉ web cá nhân của tác giả.

Table Keywords : Từ khóa thể hiện nội dung bài viết, giúp hệ thống tìm kiếm theo từ khóa.

Table Citations : Thông tin về tài liệu tham khảo của bài viết : tên, tác giả, số

trang, nhà xuất bản, đoạn ngữ cảnh tham khảo đến tài liệu. Table còn có trường kiểm tra tài liệu tham khảo đó có cùng tên tác giả với bài viết không (Self).

Table User : Chứa tất cả những thông tin về người dùng đăng nhập vào hệ

thống để cập nhật, tìm kiếm tài liệu. Những thông tin đó là: userID, password, họ, tên, email, địa chỉ, thời gian thay đổi thông tin cá nhân(updated), quyền xử lý tài liệu (Authority): thêm/sửa lỗi, xóa,.. Quyền này sẽ do người quản trị cấp.

Table UserCorrection: Nếu User được quyền chỉnh sửa tài liệu thì khi tài liệu

cập nhật hệ thống sẽ lưu lại sự thay đổi đó. Bảng UserCorrection cung cấp thông tin về phiên bản(version) tài liệu, thời gian sửa đổi của user với một bài viết. Bảng này liên kết với 2 bảng User và Paper theo quan hệ 1-1.

Table Collection : Khi người dùng muốn lưu lại những thông tin mình cần

như tài liệu , đường link , thông tin metadata ,… người dùng có thể tạo ra bộ sưu tập cho riêng mình. Bảng Collection sẽ chứa những thông tin đó. Mỗi người dùng có một bộ sưu tập riêng nên bảng này sẽ liên kết với bảng User theo quan hệ 1-1.

Table TextSource : Lưu tên file tài liệu và nội dung tài liệu.

Table PaperInfo : Liên kết với 2 bảng TextSource và Paper theo quan hệ 1-1 Thông tin về thời gian thu thập tài liệu, đường dẫn tới file tài liệu có metadata và tên file tương ứng.

Table Checksum: Chứa thông tin vật lý của file tài liệu tương ứng với metadata. Đó là kiểu file (pdf, ps,.. ) và mã SHA1(Secure Hash Algorithm) kiểm tra tình trạng file được sinh ra khi convert file sang dạng text. Bảng này liên kết với bảng Paper theo quan hệ 1-1.

3.2 Các service sử dụng trong CiteSeerX - Application Layer

3.2.1 Heritrix – Tiện ích để crawl dữ liệu – Crawling Server3.2.1.1 Giới thiệu về Heritrix 3.2.1.1 Giới thiệu về Heritrix

Heritrix là một web crawler của Internet Archive – một thư viện số phi lợi nhuận, được thành lập vào năm 1996 bởi Brewster Kahle, với mục tiêu: “mở rộng tri thức cho tất cả mọi người”.

Với mục tiêu ấy, Internet Archieve đã cố gắng để tìm kiếm, lưu trữ và cho phép mọi người truy cập đến các dữ liệu đã được tìm kiếm, số hóa và lưu trữ trên server của nó, bao gồm website, nhạc, ảnh, sách. Chính vì thế, nó cần một web crawler đủ mạnh và phù hợp với nhu cầu của mình, đấy cũng là lý do ra đời của Heritrix.

Heritrix là bộ mã nguồn mở và được viết trên Java. Nó được giới thiệu bởi Internet Archive và Nordic National libraries từ năm 2003. Phiên bản đầu tiên được giới thiệu đến người dùng vào tháng 1 năm 2004 và nó vẫn đang được phát triển và hoàn thiện bới đội ngũ nhân viên của Internet Archieve và các cộng tác viên.

Đặc điểm chính của nó là cho phép thao tác thông qua web-GUI hoặc thao tác qua lệnh.

3.2.2.2 Hoạt động

Về cơ bản, Heritrix được thiết kế dựa trên nền tảng của một crawler tiêu chuẩn để có thể linh hoạt trong việc thêm các class hỗ trợ nhằm đa dạng hóa tính năng cũng như chuẩn bị cho việc tương thích với các chức năng sẽ có trong tương lai. Cài đặt các thông số cho việc chạy 1 crawl đòi hỏi người dùng phải tùy chỉnh một tập các thuộc tính. Trên thực tế, việc chạy 1 crawl chỉ bao gồm các bước – sẽ được lặp lại nhiều lần như sau:

1. Chọn một URI trong danh sách. 2. Lấy giá trị từ URI.

3. Phân tích kết quả.

4. Lấy ra những đường dẫn từ URI và đưa nó vào danh sách.

5. Kiểm tra lại lần nữa để chắc chắn là URI đã được chạy xong và lặp lại các bước trên.

Ba thành phần quan trọng của Heritrix là Scope, Frontier, Processor Chains. Chúng là thành phần không thể thiếu để định nghĩa 1 crawl.

• Scope xác định những URI nào sẽ được thêm vào crawl hiện hành. Scope bao gồm các seed được người dùng thêm vào lúc khởi tạo crawl và các URI có được ở bước 4.

• Frontier làm nhiệm vụ chọn ra URI tiếp theo để xử lý. Nó bao gồm các giá trị lấy ra từ URI ở bước 2 và tránh tình trạng xử lý lại các URI đã từng được xử lý.

• Processor Chains bao gồm các module Processors đảm nhiệm chức năng xử lý các tác vụ ở mỗi URI ở mỗi lượt. Nó bao gồm việc lấy kết quả về từ URI ở

bước 2, phân tích kết quả vừa lấy về ở bước 3, và trả các giá trị mới tìm thấy về Frontier ở bước 4.

Hình 18: Hoạt động của Heritrix 3.2.2 Các dịch vụ hỗ trợ cho việc vào ra dữ liệu

Đây là những class nằm ở tầng ứng dụng, hỗ trợ cho việc xử lý dữ liệu sau khi bộ crawler tải dữ liệu về. Nó nhận đầu vào là tài liệu ở dạng pdf, doc, ps…

Hình 19: Hoạt động của các dịch vụ hỗ trợ vào ra dữ liệu

3.2.2.1 Các dịch vụ phân tách văn bản

Các dịch vụ hướng phân tách dữ liệu là những dịch vụ hỗ trợ cho việc chuyển định dạng (converter), trích rút các phần header, citations, phân tách lấy ra các thông tin đặc trưng (metadata) hay tham chiếu ( refenrences ) của tài liệu khoa học cung cấp đầu vào cho việc lưu trữ, phân loại, tìm kiếm tài liệu.

Tài liệu sau khi được thu thập trên web qua bộ crawler sẽ được lưu vào trong

kho dữ liệu hệ thống và được các dịch vụ hệ thống trích rút phân tách lấy ra thông

tin cần thiết. Các dịch vụ - module bao gồm :

File Converter : chuyển định dạng file.

ParsCit : trích rút thông tin của phần tài liệu tham khảo (citations)

SVM HeaderParser : trích rút thông tin phần header của tài liệu.

Đầu ra của các dịch vụ này là các file .body, .cite, .xml, .txt, .pdf lưu trữ nội dụng tài liệu, các header, các citation.

Đây là phần rất quan trọng cần nghiên cứu sâu để có thể tạo ra hệ thống hỗ trợ tốt tiếng Việt.

Hình 20: Mô hình hoạt động của bộ phân tách văn bản A. File Converter

Tài liệu thu thập được trên web thường có các định dạng số như pdf, ps, … hoặc được nén (zip, gzip). Để giúp cho việc xử lý thông tin được hiệu quả các file tài liệu này sẽ được chuyển sang định dạng text (txt) và module file converter sẽ đảm nhiệm vai trò này.

Module sử dụng trình bao (wrapper) là bộ chuyển đổi định dạng chính. 2 bộ Converter được sử dụng là PDFLib TET (có trả phí, bản free chỉ convert được tối đa 10 trang) và PDFBox (mã nguồn mở, miễn phí)

PDFLib TET: http://www.pdflib.com/products/tet/

PDFBox: http://www.pdfbox.org/

Bộ converter được cài đặt riêng và tham chiếu vào module file converter thông qua các file config nên rất linh hoạt và dễ dàng thay đổi khi cần thiết.

Trong tương lai có thể cài đặt thêm các trình chứa khác để module hỗ trợ chuyên đổi được nhiều định dạng file hơn nữa.

extractText.pl textFile Các tham số của modun :

Tham số đầu vào: textfile - Đường dẫn đến file tài liệu cần chuyển đổi dạng pdf, ps

Tham số đầu ra: File text cùng tên file tài liệu gốc và mã SHA1- mã

checksum để kiểm tra tình trạng file. File text sau đó sẽ được các module dịch

vụ còn lại xử lý trích rút thông tin.

B. ParsCit

Module trích rút phần tài liệu tham khảo của bài viết và đưa ra các thông tin về tài liệu tham khảo. Các thông tin đó là author (tên tác giả), title (tiêu đề bài viết),

date (ngày xuất bản), year(năm xuất bản), pages (số trang), context (đoạn văn bản

của bài viết tham chiếu đến tài liệu tham khảo) ,…

Module sử dụng bộ tookit CRF++ thực thi mô hình trạng thái tuyến tính vô hướng Conditional Random Fields để phân loại gán nhãn dữ liệu vào các trường tương ứng (author, title, year,pages, context ).

Để hỗ trợ cho xử lý tìm kiếm, với file text tài liệu phân tích abc.txt thì ParsCit sẽ phân tách thành 2 file abc.cite chứa phần tham chiếu và abc.body chứa phần còn lại tài liệu cùng với file xml miêu tả thành phần các trường thông tin của tài liệu tham

<algorithm name=”ParsCit” version=”VERSION”>

<citationList> <!- Danh sách các tài liệu tham khảo

<citation valid=”ISVALID” <!-Thông tin của mỗi tài liệu tham khảo -->

<authors>

<author>NAME</author> <!- Tên tác giả -->

</authors>

<title>TITLE</title> <!- tiêu đề bài viết-->

<date>DATE</date>

<journal>JOURNAL</journal> <!- Tập san đăng bài viết -->

<booktitle>BOOKTITLE</booktitle> <!- Bài báo hội nghị -->

<tech>TECHREPORT #</tech> <!- Báo cáo khoa học -->

<volume>VOLUME</volume> <!- Số chương bài viết-->

<pages>START—END</pages> <!- Trang bắt đầu–kết thúc bài viết -->

<editor>EDITORS</editor> <!- Người biên tập bài viết -->

<publisher>PUBLISHER</publisher> <!- Nhà xuất bản -->

<institution>INSTITUTION</institution> <!- Tên viện nghiên cứu -->

<location>LOCATION</location> <!- Địa chỉ viện nghiên cứu -->

<note>NOTE</note> <!- Những ghi chú -->

<contexts> <!- Đoạn văn bản bài viết tham chiếu đến tài liệu, bao gồm một hay nhiều dòng tham chiếu -->

<context>CONTEXT</context> …

</contexts>

<marker>MARKER</marker> <!- Dấu hiệu đánh dấu một citation -->

<rawString>RAW CITATION STRING</rawString> <!- Đoạn văn bản chứa tất cả các thông tin về một tài liệu được tham khảo -->

</citation> …

</citationList> </algorithm>

File Xml sau đó được hệ thống xử lý, nạp giá trị các tag vào đối tượng lưu trữ :

author, citations, … dùng cho tìm kiếm sau này. Chạy Module ở dạng Command Line :

citeExtract.pl textfile [outfile] Tham số vào- textfile: Đường dẫn tới file cần phân tích.

Đầu ra -outfile: Tên file xml chưa thông tin. Nếu không xác định outfile ,module sẽ tự động ghi ra STDOUT.

C. SVM Header Parse

Module trích rút phần header của bài viết, đưa ra các thông tin đặc trưng

(metadata) của tài liệu. Những thông tin đó là tiêu đề bài viết (title), thông tin về tác giả (author) bao gồm :tên (name), địa chỉ (address), nơi chứng nhận tư cách tác giả (affiliation), địa chỉ mail (email); từ khóa thể hiện nội dung bài viết (keyword), thông tin tóm tắt bài viết (abstract), thời gian công bố (date).

Mỗi thông tin tương ứng với một lớp phân loại và được module đưa vào file xml mà mỗi thành tố (element) của nó đại diện cho một lớp. File xml có dạng :

<algorithm name=”SVMHeaderParse” version=”VERSION”> <title>TITLE</title> <authors> <author> <name>NAME1</name> <affiliation>AFFILIATION1</affiliation> <address>ADDRESS1</address> <email>EMAIL1</email> </author> <author> <name>NAME2</name> <affiliation>AFFILIATION2</affiliation> <address>ADDRESS2</address> <email>EMAIL2</email> </author> … </authors> <keywords> <keyword>KEYWORD1</keyword> <keyword>KEYWORD2</keyword> … </keywords> <abstract>ABSTRACT</abstract> <date>DATE</date> </algorithm>

File Xml sau đó được hệ thống xử lý, nạp giá trị các tag vào đối tượng lưu trữ tương ứng: author, keywords, … dùng cho tìm kiếm sau này.

Chạy Module ở dạng Command Line :

extractHeader.pl textfile [outfile] Đầu vào- textfile : Đường dẫn tới file text cần trích chọn.

Đầu ra- outfile: file xml lưu thông tin. Nếu không miêu tả đầu ra, module tự động ghi ra STDOUT.

3.2.2.2 Các class xử lý dữ liệu thô

Đây là các class JAVA hỗ trợ việc đưa dữ liệu vào cơ sở dữ liệu. Nó nhận đầu vào là file xml chứa các thông tin đặc trưng của văn bản như : header, citation, abstract… Sau khi tách riêng các trường trong file xml, các class này thông qua Storage Access and

Management Interface : lưu dữ liệu vào MySql, đồng thời đưa dữ liệu lên Solr để cập nhật dữ liệu cho search engine Solr.

3.2.3 Các chức năng thêm vào để hoàn thiện hệ thống

3.2.3.1 Chức năng Upload từ máy người dùng

Bộ mã nguồn mở được cung cấp bởi IST chỉ chú trọng đến việc thu thập dữ liệu dựa vào Heritrix mà không hỗ trợ người dùng upload các tài liệu của mình. Nhưng trên thực tế, một số website lớn đều hạn chế hoạt động của bộ crawler, đồng thời nhu cầu của các nhà nghiên cứu, các nhà khoa học - muốn đưa các nghiên cứu khoa học của mình lên server và chia sẻ với mọi người – là thực tế và rất lớn.

Điều này đặc ra vấn đề cần có chức năng hỗ trợ người dùng tải các tài liệu khoa học của mình. Nó không chỉ tạo ra sự tiện lợi cho người dùng mà còn là một nguồn để thu thập tài liệu cho hệ thống.

Hình 21: Hoạt động của trang upload

Upload.jsp : hỗ trợ việc truyền từng bite của file từ client lên server, sau đấy build lại file từ các bite đã nhận được.

Run.bat : chạy các service phân tách văn bản. Citeseerx.jar : chạy các class xử lý dữ liệu thô.

3.2.3.2 Chức năng Auto Suggestion

A. Đặt vấn đề

Rất nhiều trường hợp,người dùng không có chính xác định nghĩa về những gì mình sẽ tìm kiếm. Ví dụ như trên thực tế người dùng muốn tìm “xml parsing using DOM” nhưng họ chưa có khái niệm về DOM mà chỉ muốn tìm một cách để parse file xml. Khi sử dụng chức năng Auto Suggestion, chỉ cần người dùng nhập vào “xml parsing” sẽ có một loạt kết quả hiện ra để hỗ trợ người dùng tìm kiếm tốt hơn.

B. Cơ sở dữ liệu

Cấu trúc của file xml lưu trữ các query phổ biến

<?xml version="1.0" encoding="UTF-8"?> <citeseerx>

<csdl name=”abc” count=”1”></csdl>

<csdl name=”solr indexing” count=”1”></csdl> </citeseerx>

name : query được gửi tới máy chủ. count : số lần đã được gửi tới máy chủ.

C. Hoạt động

Bước 1: khi người dùng nhập một từ khóa, JavaScript sẽ được gọi để lấy ra

10 giá trị trùng với những từ vừa gõ và có độ tin cậy cao nhất. Độ tin cậy được đánh giá dựa vào số lần kết quả đó được gọi trong truy vấn.

Bước 2: sau khi người dùng chọn 1 giá trị trong số các từ khóa gợi ý và gửi

Một phần của tài liệu Xây dựng hệ thống thu thập, quản lý tài liệu khoa học dựa trên CiteSeerX. (Trang 50)

Tải bản đầy đủ (DOC)

(69 trang)
w