Tải bản đầy đủ (.docx) (53 trang)

xây dựng bộ máy tìm kiếm tiếng việt dựa trên mã nguồn mở lucene

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 (825.55 KB, 53 trang )

1

TỔNG LIÊN ĐỒN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TƠN ĐỨC THẮNG
KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN 2

XÂY DỰNG BỘ MÁY TIẾNG VIỆT
DỰA TRÊN MÃ NGUỒN MỞ
LUCENE
Người hướng dẫn: Ts Nguyễn Thanh Hiên
Ths Nguyễn Hồng Vũ
Người thực hiện: NGUYỄN KHÁNH PHƯƠNG - 51103110
VÕ VĂN TRUNG - 51103156
Lớp

: 11050302
Khoá : 15

THÀNH PHỐ HỒ CHÍ MINH, NĂM 2014


TỔNG LIÊN ĐỒN LAO ĐỘNG VIỆT NAM
TRƯỜNG ĐẠI HỌC TƠN ĐỨC THẮNG
KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN 2

XÂY DỰNG BỘ MÁY TIẾNG VIỆT
DỰA TRÊN MÃ NGUỒN MỞ


LUCENE

Người hướng dẫn: Ts Nguyễn Thanh Hiên
Ths Nguyễn Hồng Vũ
Người thực hiện: NGUYỄN KHÁNH PHƯƠNG - 51103110
VÕ VĂN TRUNG - 51103156
Lớp

: 11050302

Khoá : 15
THÀNH PHỐ HỒ CHÍ MINH, NĂM 2014


3

LỜI CẢM ƠN
Trước tiên chúng em xin được gửi lời cảm ơn chân thành tới các thầy cô giáo
trong khoa Công nghệ thông tin - Trường đại học Tôn Đức Thắng đã tận tình giúp
đỡ và giảng dạy cho chúng em trong học kì này.
Đặc biệt, chúng em xin gửi lời cảm ơn chân thành nhất tới thầy TS Nguyễn
Thanh Hiên và Nguyễn Hồng Vũ đã tận tình hướng dẫn, giúp đỡ chúng em hoàn
thành đề tài nghiên cứu khoa học này.
Trong thời gian vừa qua mặc dù chúng em đã cố gắng rất nhiều để hoàn
thành tốt đề tài nghiên cứu khoa học của mình. Song chắc chắn kết quả nghiên cứu
sẽ khơng tránh khỏi những thiếu sót, vì vậy kính mong nhận được sự chỉ bảo và góp
ý của quý thầy cô.
Chúng em xin chân thành cám ơn!
Ký tên
Phương

Nguyễn Khánh Phương

Trung
Võ Văn Trung


4

ĐỒ ÁN ĐƯỢC HỒN THÀNH
TẠI TRƯỜNG ĐẠI HỌC TƠN ĐỨC THẮNG
Tôi xin cam đoan đây là sản phẩm đồ án của riêng tôi chúng tôi và được sự
hướng dẫn của TS Nguyễn Thanh Hiên và Nguyễn Hồng Vũ. Các nội dung nghiên
cứu, kết quả trong đề tài này là trung thực và chưa 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á được chính tác giả thu thập từ các nguồn khác nhau có ghi rõ trong
phần tài liệu tham khảo.
Ngoài ra, trong đồ án còn sử dụng một số nhận xét, đánh giá cũng như số
liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn và chú thích nguồn
gốc.
Nếu phát hiện có bất kỳ sự gian lận nào tơi xin hồn tồn chịu trách
nhiệm về nội dung đờ án của mình. Trường đại học Tơn Đức Thắng khơng liên
quan đến những vi phạm tác quyền, bản quyền do tơi gây ra trong q trình thực
hiện (nếu có).
TP. Hồ Chí Minh, ngày 30 tháng 12 năm 2014
Tác giả
(ký tên và ghi rõ họ tên)

Nguyễn Khánh Phương



5

Võ Văn TrungPHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN
Phần xác nhận của GV hướng dẫn

______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
_____________________
Tp. Hồ Chí Minh, ngày

tháng 05 năm 2014

(kí và ghi họ tên)

Phần đánh giá của GV chấm bài

______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
_____________________
Tp. Hồ Chí Minh, ngày 30 tháng 12 năm 2014

(kí và ghi họ tên)


6

TĨM TẮT
Với sự phát triển nhanh chóng của Internet, đặc biệt là world wide web, giúp
cho người dùng chia sẻ các thông tin với nhau dễ dàng hơn. Ngày trước để tìm kiếm
một thứ gì đó thì mọi người phải vào thư viện và tìm kiếm rất lâu mới ra được nội
dung cần tìm. Ngày nay, chỉ cần một cú click chuột thì mọi thứ thơng tin của tất cả
mọi nơi trên thế giới đều có hết. Vì thế, có thể nói, thơng tin trong thế giới world
wide web là rất phong phú và đa dạng. Chính sự phát triển mạnh mẽ và đa dạng này
đã gây khó khăn cho người dùng trong việc tìm kiếm thơng tin liên quan đến lĩnh
vực cần tìm. Để đáp ứng được nhu cầu thì cần phải có một cơng cụ trợ giúp người
dùng trong q trình tìm kiếm và đó chính là bộ máy tìm kiếm (search engine).
Hiện nay, các bộ máy tìm kiếm được phát triển nhằm hỗ trợ người dùng
trong quá trình tìm kiếm thơng tin như Google, Yahoo,... Các máy tìm kiếm này đã
và đang hỗ trợ đắc lực trong việc tìm kiếm thơng tin người dùng quan tâm và kết
quả có độ chính xác và độ bao phủ cao. Tuy nhiên, nó chỉ hỗ trợ tốt cho các ngơn
ngữ mà khoảng trống là dấu hiệu để nhận dạng từ (Tiếng Việt là một trong những
ngôn ngữ mà khoảng trống khơng phải là dấu hiệu để nhận dạng từ). Chính điều này
đã làm ảnh hưởng rất lớn đến độ chính xác và độ bao phủ tài liệu liên quan.
Mặc dù, các máy tìm kiếm này vẫn hỗ trợ cho Tiếng Việt trong việc tìm kiếm
thơng tin, nhưng vẫn cịn nhiều thách thức như kết quả trả về chứa nhiều tài liệu mà
người dung khơng quan tâm. Do đó, người dùng phải tốn nhiều thời gian trong q
trình chọn lọc thơng tin liên quan. Các máy tìm kiếm hỗ trợ tiếng Việt như Google,
Yahoo thì mã nguồn khơng được cơng bố. Do vậy, các tổ chức muốn sử dụng chức
năng tìm kiếm phục vụ cho mục đích riêng của mình thì hầu như đều phải tự xây
dựng và phát triển từ đầu.
Trong bài đồ án này chúng em giới thiệu những nghiên cứu về mã nguồn mở

Lucene và chỉ ra cách thức ứng dụng nó trong hệ thống tìm kiếm. Lucene là dự án
mã nguồn mở được cung cấp và quản lý bởi tổ chức Apache Software Foundation,
đây là công cụ lập chỉ mục cho văn bản, sử dụng trong hệ thống tìm kiếm. Lucene


7

cho phép xử lý các văn bản đầu vào ở dạng văn bản (text) để tạo ra tập chỉ mục và
cung cấp phương thức tìm kiếm trên tập chỉ mục đó.
Do đó, chúng em đề xuất mơ hình ứng dụng Lucene để phát triển hệ thống
tìm kiếm trên các văn bản lưu trữ word, excel, powerpoint. Trong mơ hình này, mã
nguồn của Lucene được xây dựng dựa trên ngôn ngữ tiếng Việt. Đầu tiên, chúng em
tiến hành tách nội dung của các loại văn bản, sau đó thực hiện một số xử lý cho
tiếng Việt và lập chỉ mục cho các văn bản, cuối cùng chúng em dùng Luke tìm tới
tập chỉ mục này để truy vấn và lấy về tài liệu liên quan.


8

Mục lục


9

DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT

CÁC CHỮ VIẾT TẮT
API
IR
SQL

PDF
HTML
TF
IDF

Application Programming Interface
Information Retrieval
Structured Query Language
Portable Document Format
HyperText Markup Language
Term Frequency
Inverse Document Frequency


10

DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ, ĐỒ THỊ
DANH MỤC HÌNH

DANH MỤC BẢNG
Bảng 1.1 : Bảng hướng dẫn nhanh về cách sử dụng các search engine phổ biến trên
thế giới………………………………………………………………………..

CHƯƠNG 1: TỞNG QUAN VỀ BỢ MÁY TÌM KIẾM
1.1 Lịch sử và vai trị của bộ máy tìm kiếm
Với sự phát triển nhanh chóng của Internet, đặc biệt là world wide web, giúp
cho người dùng chia sẻ các thông tin với nhau dễ dàng hơn. Ngày trước để tìm kiếm
một thứ gì đó thì mọi người phải vào thư viện và tìm kiếm rất lâu mới ra được nội
dung cần tìm. Ngày nay, chỉ cần một cú click chuột thì mọi thứ thông tin của tất cả
mọi nơi trên thế giới đều có hết. Vì thế, có thể nói, thơng tin trong thế giới world

wide web là rất phong phú và đa dạng. Chính sự phát triển mạnh mẽ và đa dạng này
đã gây khó khăn cho người dùng trong việc tìm kiếm thơng tin liên quan đến lĩnh
vực cần tìm. Để đáp ứng được nhu cầu thì cần phải có một cơng cụ trợ giúp người
dùng trong q trình tìm kiếm và đó chính là bộ máy tìm kiếm.


11

Trong suốt 1993-1994, những máy tìm kiếm đầu tiên đã ra đời bao gồm
Excite, AltaVista và Yahoo!. Số lượng các trang web và người dùng tăng lên mạnh
mẽ đến mức mà những trang web hub trở nên quá tải và khơng cịn hiệu quả.
Năm 1996, Google ra đời. Đây là máy tìm kiếm đầu tiên nhận ra sức mạnh
và vai trò của liên kết và sử dụng chúng để đánh giá độ uy tín của trang web. Đây
chính là bước đột phá giúp tăng chất lượng bảng kết quả tìm kiếm.
Vài nét về các đặc trưng của một số search engine thơng dụng trên thế giới [3]
Search

Google

AlltheWeb

AltaVista

Teoma

Engine
Database

google.com


alltheweb.com altavista.com

Kích thước Khoảng 4 tỉ (1 Khoảng 3 tỉ,
(# trang)

teoma.com

Khoảng 1 tỉ

Khoảng 1 tỉ

Hỗ trợ

Không hỗ trợ

tỉ không đánh chỉ mục trên
chỉ mục trên

tồn văn bản.

tồn văn bản)
Đa phương Hỗ trợ

Hỗ trợ

tiện
(multimedia)
Tốn tử
Mặc định


AND

AND

AND

AND

Loại trừ

-

-

-

-

Cụm từ

Dùng dấu “ ”

Dùng dấu “ ”

Dùng dấu “ ”

Dùng dấu “ ”

Rút gọn


Không hỗ trợ

Không hỗ trợ

Dùng ký tự *

Không hỗ trợ

Dùng ký tự *
để thay thế
cho các ký tự
trong dấu “ ”


12

Boolean

OR (chỉ dùng AND, OR,

AND, OR,

OR (chỉ dùng cho

cho danh từ

ANDNOT,

ANDNOT,


tên riêng)

riêng)

RANK, ()

NEAR, ()

Stop words Thông thường

Dùng dấu “ “

Thông thường bỏ

bỏ qua các từ

trong search

qua các từ thông

thông dụng

cơ bản

dụng

+ nếu muốn

Bỏ qua trong


+ nếu muốn tìm

tìm và phải đặt

search nâng

trong cặp dấu

cao

““
Danh từ

Không hỗ trợ

Không hỗ trợ

Hỗ trợ

Không hỗ trợ

riêng
Các đặc tính Tìm từ đồng

Dùng refine để tối

nghĩa

URL


ngày, vị trí,

ưu kết quả.

Giới hạn bởi

Trong tìm

ngơn ngữ

Resource để có

ngơn ngữ

đặc biệt

Duyệt qua các Giới hạn bởi

nâng cao:

Trong tìm

được các trang và

nâng cao : sử

liên kết tập trung

Nhiều kiểu file giới hạn bởi
: pdf, doc, …


ngày, domain, dụng sortby để trên chủ đề cần tìm.

Caches : trang địa chỉ iP

lọc và sắp xếp

web khi đánh

kết quả.

chỉ mục
Ưu điểm
chính

Rất tốt với

Tốt như

Dùng nhiều

Tính độ phổ biến

những trang

Google.

tốn tử

tốt, dựa vào số


có độ phổ biến Khơng có stop Boolean trong lượng trang web
cao.

word.

tìm kiếm.

cùng chủ đề với các

Các trang tin

Trong tìm

trang đang xét.

tức gần đây

nâng cao hỗ

Thường đạt kết quả

trợ hiển thị kết đáng khích lệ.
quả theo độ


13

phổ biến của
từ.


Bảng 1.1 : Bảng hướng dẫn nhanh về cách sử dụng các search engine
phổ biến trên thế giới
1.2 Các thành phần cấu thành bộ máy tìm kiếm
− Bộ thu thập thơng tin-Robot:
Robot là một chương trình tự động duyệt qua các cấu trúc siêu liên kết để thu
thập tài liệu và một cách đệ quy, nó nhận về tất cả tài liệu có liên kết với tài liệu
này. Robot được biết đến dưới nhiều tên gọi khác nhau: spider, web wanderer hoặc
web worm, …
Những tên gọi này đôi khi dễ gây nhầm lẫn, như từ “spider”, “wanderer” làm
người ta nghĩ rằng robot tự nó di chuyển và từ “worm” làm người ta liên tưởng đến
virus. Về bản chất robot chỉ là một chương trình duyệt và thu thập thông tin từ các
site theo đúng giao thức web. Những trình duyệt thơng thường khơng được xem là
robot do thiếu tính chủ động, chúng chỉ duyệt web khi có sự tác động của con
người.
− Bộ lập chỉ mục- Index:
Hệ thống lập chỉ mục hay còn gọi là hệ thống phân tích và xử lý dữ liệu, thực
hiện việc phân tích, trích, chọn những thơng tin cần thiết (thường là các từ đơn, từ
ghép, cụm từ quan trọng) từ những dữ liệu mà robot thu thập được và tổ chức thành
cơ sở dữ liệu riêng để có thể tìm kiếm trên đó một cách nhanh chóng, hiệu quả. Hệ
thống chỉ mục là danh sách các từ khoá, chỉ rõ các từ khoá nào xuất hiện ở trang
nào, địa chỉ nào.
Lập chỉ mục là q trình phân tích và xác định các từ, cụm từ thích hợp cốt
lõi có khả năng đại diện cho nội dung của tài liệu. Như vậy, vấn đề đặt ra là phải rút
trích ra những thơng tin chính, có khả năng đại diện cho nội dung của tài liệu.


14

Thông tin này phải “vừa đủ”, nghĩa là không thiếu để trả ra kết quả đầy đủ so với

nhu cầu tìm kiếm, nhưng cũng phải khơng dư để giảm chi phí lưu trữ và chi phí tìm
kiếm và để loại bỏ kết quả dư thừa không phù hợp. Việc rút trích này chính là việc
lập chỉ mục trên tài liệu. Trước đây, quá trình này thường được các chuyên viên đã
qua đào tạo thực hiện một cách “thủ công” nên có độ chính xác cao. Nhưng trong
mơi trường hiện đại ngày nay, với lượng thơng tin khổng lồ thì việc lập chỉ mục
bằng tay khơng cịn phù hợp, phương pháp lập chỉ mục tự động mang lại hiệu quả
cao.
Một thủ tục lập chỉ mục tự động cơ bản cho các tài liệu tiếng Anh có thể được xử
lý như sau:
• Step of tokenization: tách văn bản ra thành các chuỗi nhờ vào
khoảng trắng, mỗi chuỗi xem như là một từ.
• Step of removal of stop words: bỏ những từ thường xuyên xuất
hiện trong hầu hết các tài liệu nhưng lại khơng quan trọng trong
các tài liệu như tính từ, đại từ.
• Step of stemming: loại bỏ các hậu tố (suffixes) để đưa về các từ
gốc.
Các từ thu được sẽ được lập chỉ mục. Tuy nhiên hai bước đầu cũng cần cho
quá trình lập chỉ mục cho các tài liệu tiếng Việt, bước thứ ba khơng cần vì tiếng
Việt thuộc dịng ngơn ngữ đơn thể.
− Bộ máy tìm kiếm- Search Engine
Search engine là cụm từ dùng chỉ toàn bộ hệ thống bao gồm bộ thu thập
thông tin, bộ lập chỉ mục và bộ tìm kiếm thơng tin. Nó sẽ hoạt động liên tục từ lúc
khởi động hệ thống, chúng phụ thuộc lẫn nhau về mặt dữ liệu nhưng độc lập với
nhau về mặt hoạt động. Search engine tương tác với user thơng qua giao diện, có
nhiệm vụ tiếp nhận và trả về những tài liệu thoả yêu cầu của user.
Nói chung, tìm kiếm từ là tìm kiếm các trang mà những từ trong câu truy vấn
(query) xuất hiện nhiều nhất, ngoại trừ stopword (các từ quá thông dụng như mạo từ


15


a, an, the,…). Một từ càng xuất hiện nhiều trong một trang thì trang đó càng được
chọn để trả về cho người dùng.
Ngày nay, hầu hết các search engine đều hỗ trợ chức năng tìm cơ bản và
nâng cao, tìm từ đơn, từ ghép, cụm từ, danh từ riêng, hay giới hạn phạm vi tìm kiếm
như trên đề mục, tiêu đề, đoạn văn bản giới thiệu về trang web,…. .
Ngoài chiến lược tìm chính xác theo từ khố, các search engine còn cố gắng
“hiểu” ý nghĩa thực sự của câu hỏi thông qua những câu chữ do người dùng cung
cấp. Điều này được thể hiện qua chức năng sửa lỗi chính tả, tìm cả những hình thức
biến đổi khác nhau của một từ.
1.3 Nguyên lý hoạt động của bộ máy tìm kiếm:
Search engine điều khiển robot đi thu thập thơng tin trên mạng thông qua các
siêu liên kết (hyperlink). Khi robot phát hiện ra một site mới, nó gởi tài liệu (web
page) về cho server chính để tạo cơ sở dữ liệu chỉ mục phục vụ cho nhu cầu tìm
kiếm thơng tin. Bởi vì thơng tin trên mạng ln thay đổi nên robots phải liên tục cập
nhật các site cũ. Mật độ cập nhật phụ thuộc vào từng hệ thống search engine. Khi
search engine nhận câu truy vấn từ user, nó sẽ tiến hành phân tích, tìm trong cơ sở
dữ liệu chỉ mục và trả về những tài liệu thoả yêu cầu.


16

CHƯƠNG 2: TÌM HIỂU VỀ LUCENE
2.1 Lucene là gì?[1]
Lucene là dự án mã nguồn mở hiện thực bằng ngôn ngữ JAVA và là một
thành viên của dòng họ Apache Jakarta nổi tiếng và là một thư viện Information
Retrieval (IR) có hiệu suất tìm kiếm cao, đáng tin cậy và dễ mở rộng. Nó cho phép
chúng ta đánh chỉ mục và thực hiện việc tìm kiếm thơng tin trở nên nhanh hơn bao
giờ hết. Ngồi ra, Lucene có thể tìm kiếm thông tin trên bất cứ định dạng nào, bất
cứ loại tài liệu nào và hoạt động trên mọi nền từ Window, Linux cho đến Unix.

Nếu khơng có Lucene việc viết các ứng dụng tìm kiếm trên Database thật sự
cực nhọc cho lập trình viên. Bạn lưu dữ liệu trong SQL, mỗi lần viết ứng dụng tìm
kiếm chúng ta phải kết hợp nhiều tốn tử như AND, OR, NOT. Đó là chưa kể
những yêu cầu tìm kiếm phức tạp cần sự két hợp của nhiều bảng và nhiều field. Có
Lucene mọi việc trở nên dễ dàng cho lập trình viên và cho cả người dùng.
Lucene không quan tâm đến nguồn dữ liệu, định dạng dữ liệu hoặc ngôn
ngữ của dữ liệu, miễn là chúng ta chuyển đổi nó sang được dạng text. Điều này có
nghĩa là chúng ta sử dụng Lucene để đánh chỉ mục và tìm dữ liệu đã lưu trong
những file như: Web pages, các document lưu trữ trong hệ thống file cục bộ, các
file text thông thường, các file Word, các file PDF hoặc các loại định dạng khác mà
chúng ta có thể xuất ra dạng Text. Với sự giúp đỡ của Lucene, chúng ta có thể đánh
chỉ mục cho Database. Sau đó, ngưịi dùng chỉ việc đánh câu query mà họ cần vào.
Lucene được sáng tạo bởi Doug Cutting, và được công bố tại SourceForge
web site. Lucene đã gia nhập vào Apache Jakarta vào tháng 9/2001. Từ đó Lucene


17

được nhiều sự quan tâm của nhiều lập trình viên đặc biệt là những người theo đuổi
JAVA. Có thể nói rằng: “Biết java là biết Lucene”. Vào tháng 7 năm 2004, Lucene
version 1.4 ra đời đã đánh dấu một bước phát triển vượt bậc của bộ library
Information Retrieval hữu ích này. Người tạo ra Lucene, Doug Cutting có đóng góp
rất lớn về mặt xây dựng nền tảng lý thuyết và ứng dụng trong lĩnh vực Information
Retrieval. Nhiều cuốn sách về IR của Doug Cutting đã được xuất bản, đồng thời
ông cũng làm việc ở nhiều công ty như: Excite, Apple và Grand Central.
Gần đây nhất, vì lo ngại về sự gia tăng của số lượng các Web search engine
và sự xuất hiện những thế lực độc quyền, Doug Cutting đã tạo ra Nutch, một World
Wide Web search engine mã nguồn mở đầu tiên. Thư viện lucene cung cấp các hàm
cơ bản hỗ trợ cho việc đánh chỉ mục và tìm kiếm. Để có thể sử dụng Lucene, bạn
cần phải có sẵn dữ liệu. Dữ liệu có thể là tập hợp các tập tin dạng PDF, Word hay là

các trang web HTML; hoặc là dữ liệu lưu trong các hệ quản trị cơ sở dữ liệu như
MS SQL Server hay MySQL. Dùng Lucene, bạn có thể tiến hành đánh chỉ mục trên
dữ liệu hiện có để sau này có thể thực hiện thao tác tìm kiếm tồn văn trên dữ liệu đó.
Các bước sử dụng Lucene bao gồm:
− Mơ tả đối tượng cần đánh chỉ mục:

Lucene coi mỗi đối tượng cần đánh chỉ mục là một Document. Mỗi
Document có thể có nhiều Field, mỗi Field tương ứng một thuộc tính của đối tượng
cần đánh chỉ mục. Ví dụ, bạn muốn tìm kiếm các trang web ở dạng HTML. Như
vậy đối tượng cần đánh chỉ mục là trang HTML, các thuộc tính có thể là nơi lưu trữ
(host), đường dẫn, tiêu đề, metadata và nội dung của chính trang web.
Với mỗi Field, bạn có thể chọn giữa đánh chỉ mục hay khơng đánh chỉ mục.
Nếu chọn đánh chỉ mục, bạn có thể tìm kiếm trên Field đó. Các Field khơng đánh
chỉ mục thường là các Field khơng quan trọng trong q trình tìm kiếm và phục vụ
chủ yếu cho nhu cầu trình bày kết quả trả về.
− Đánh chỉ mục:

Bạn cần phải tự xây dựng các hàm công cụ để chuyển đổi dữ liệu ban đầu
thành dữ liệu mô tả trong Document. Ví dụ, nếu dữ liệu ban đầu của bạn là tập tin


18

PDF hay Word, bạn phải có các hàm để đọc hiểu các định dạng này và chuyển về
dạng chuỗi văn bản tương ứng. Thao tác đánh chỉ mục khá phức tạp. Trước hết
dữ liệu văn bản sẽ được phân tích thành các từ khóa, đồng thời loại bỏ các từ
khơng dùng đến (stop words, trong tiếng Anh các từ như a, an, the là các stop
words), sau đó các từ khóa sẽ được dùng để tạo inverted index (chỉ mục nghịch
đảo) và lưu thành các phân đoạn (segments) dạng thuận tiện cho việc tìm kiếm
sau này.

− Tìm kiếm

Sau khi dữ liệu đã được đánh chỉ mục, bạn có thể thực hiện tìm kiếm trên
chúng. Tìm kiếm tồn vẹn cho phép bạn có thể tìm kiếm theo danh sách các từ
khóa cùng với các tốn tử luận lí (AND, OR, NOT).
Ví dụ, bạn có thể chỉ định: “Đại học Tơn Đức Thắng” NOT (“Khoa Cơng
Nghệ Thơng Tin” AND “Khoa Tốn Ứng Dụng”) cho câu truy vấn. Ngoài ra điểm
nổi bật khác của tìm kiếm tồn văn là cho phép xếp hạng các kết quả trả về tùy vào
độ tương đồng (relevance) giữa câu truy vấn và kết quả tìm kiếm.
2.2 Sự phát triển của Lucene?
Có thể nói rằng nếu bạn biết được lợi ích mà Lucene mang lại thì bạn sẽ
muốn dùng Lucene vào các project của mình là khơng sai vì có rất nhiều tổ chức nổi
tiểng trên thế giới đã và đang sử dụng Lucene. Ví dụ như cơng ty FedEX- một tập
đoàn chuyển phát nhanh nổi tiếng nhất nước Mỹ, NewScientist-một tờ báo nổi tiếng
trên toàn thế giới.
Một cách để người dùng phán xét sự thành công của phần mềm mã nguồn
mở là dựa vào số lần nó được chuyển thể sang các ngơn ngữ lập trình khác. Như
vậy nếu căn cứ trên cách vừa nói, Lucene đã thành công. Thông qua Lucene nguyên
thủy viết bằng JAVA, hàng triệu lập trình viên thuộc nhiều lĩnh vực khác nhau đã
chuyển thể nó sang .NET, Python, C ++. , Perl. Như vậy ta có thể nhận ra rằng:
Lucene khơng những được sự quan tâm của các Java developer mà còn được sự
mến mộ của các developer khác.


19

CHƯƠNG 3: INDEX
3.1 Khái niệm về hệ thống lập chỉ mục:
Các trang Web sau khi thu thập về sẽ được phân tích, trích chọn những thơng
tin cần thiết (thường là các từ đơn, từ ghép, cụm từ quan trọng) để lưu trữ trong cơ

sở dữ liệu nhằm phục vụ cho nhu cầu tìm kiếm sau này.

HTML

PARSE

PDF

MS WORD

PARSE

PARSE

ANALYSIS

INDEX


20

Hình 3.1.1: Qui trình đánh chỉ mục

− Chuyển đổi dữ liệu
Để tiến hành index được trong Lucene, thì trước hết ta phải chuyển đổi dữ
liệu thành dạng văn bản thuần túy (plain text, như file .txt chẳng hạn). Điều này là
quan trọng, bởi vì dữ liệu được lưu trữ dưới nhiều dạng file khác nhau (pdf, word,
excel, powerpoint, html…), trong khi đó Lucene chỉ hỗ trợ bạn index các Field dạng
String, Date hoặc đối tượng Reader mà thơi.
− Phân tích

Mỗi khi bạn chuẩn bị cho việc index và tạo ra đối tượng Document với các
Field, thì Lucene sẽ phân tích dữ liệu này sao cho phù hợp nhất với việc index. Để
làm điều này, Lucene sẽ phân chia dữ liệu thành các chuỗi hoặc là các kí tự thơng
qua việc lựa chọn các toán tử thực thi trên chúng. Chẳng hạn như việc bạn phân tích
thành các kí tự thường, hoặc bỏ đi các từ ngữ khơng có nghĩa…
− Đánh chỉ mục
Sau khi dữ liệu được phân tích, nó sẽ sẵn sàng cho việc index. Lucene sẽ
chứa dữ liệu này theo cấu trúc inverted index (chỉ mục có thể nghịch đảo). Cấu trúc
này sẽ có hiệu quả để tiết kiệm dung lượng ổ đĩa và cho phép tìm kiếm nhanh hơn
các từ khóa trong q trình search. Ngun tắc của nó là thay vì phải tìm kiếm các
từ nào chứa trong tài liệu đó thì với cấu trúc này sẽ tối ưu hóa việc tìm ra câu trả lời
“tài liệu nào chứa từ khóa này”.

3.2

Tổng quan về phương pháp lập chỉ mục:

Phương pháp lập chỉ mục gồm 2 phần chính yếu sau:


21

− Đầu tiên là xác định các mục từ, khái niệm mà có khả năng đại diện
cho văn bản sẽ được lưu trữ (bao gồm cả việc tách từ, loại bỏ stopword, xử lý hậu tố…)
− Thứ hai là xác định trọng số cho từng mục từ, trọng số này là giá trị
phản ánh tầm quan trọng của mục từ đó trong văn bản.
3.2.1 Xác định mục từ trong câu lập chỉ mục:
Mục từ hay còn gọi là mục từ chỉ mục, là đơn vị cơ sở cho quá trình lập chỉ
mục. Mục từ có thể là từ đơn, từ phức hay một tổ hợp từ có nghĩa trong một ngữ
cảnh cụ thể. Ta xác định mục từ của một văn bản dựa vào chính nội dung của văn

bản đó, hoặc dựa vào tiêu đề hoặc tóm tắt nội dung của văn bản đó.
Hầu hết việc lập chỉ mục tự động bắt đầu với việc khảo sát tần số xuất hiện
của từng loại từ riêng rẽ trong văn bản. Nếu tất cả các từ xuất hiện trong tập tài liệu
với những tần số bằng nhau, thì khơng thể phân biệt các mục từ theo tiêu chuẩn
định lượng. Tuy nhiên, trong văn bản ngôn ngữ tự nhiên, tần số xuất hiện của từ có
tính thất thường. Do đó những mục từ có thể được phân biệt bởi tần số xuất hiên
của chúng.
Một đề xuất dựa theo sự xem xét chung sau:
− Cho một tập hợp n tài liệu, trong mỗi tài liệu tính tốn tần số xuất hiện
của các mục từ trong tài liệu đó.
Fik (Frequency): tần số xuất hiện của mục từ k trong tài liệu i
− Xác định tổng số tập tần số xuất hiện TF k (Total Frequency) cho mỗi
từ bằng cách cộng những tần số của mỗi mục từ duy nhất trên tất cả n
tài liệu.
− Sắp xếp những thứ tự giảm theo tập tần số xuất hiện của chúng. Quyết
định giá trị ngưỡng cao và loại bỏ tất cả những từ có tập tần số xuất
hiện cao trên ngưỡng này. Những từ bị loại bỏ là những từ xuất hiện
phổ biến ở hầu hết các tài liệu. Đó chính là các stop-word.


22

− Tương tự, loại trừ những từ được xem là có tần số xuất hiện thấp.
Việc xố những mục từ như vậy hiếm khi xảy ra trong tập hợp mà sự
mặt của chúng không làm ảnh hưởng lớn đến việc thực hiện truy vấn.
− Những từ xuất hiện trung bình còn lại bây giờ được dùng cho việc ấn
định tới những tài liệu như những mục từ chỉ mục.
Chú ý: một khái niệm xuất hiện ít nhất hai lần trong cùng một đoạn thì được
xem là một khái niệm chính. Một khái niệm xuất hiện trong hai đoạn văn liên tiếp
cũng được xem là một khái niệm chính mặc dù nó chỉ xuất hiện duy nhất một lần

trong đoạn đang xét. Tất cả những chú giải về những khái niệm chính được liệt kê
theo một tiêu chuẩn nhất định nào đó.
Thực tế cho thấy rằng ý tưởng trên khá cứng nhắc, vì nếu lọai bỏ tất cả
những từ có tần số xuất hiện cao sẽ làm giảm giá trị recall (độ tương tự), tức giảm
hiệu quả trong việc trả về số lượng lớn của những mục tin thích đáng. Ngược lại, sự
loại bỏ những mục từ có tần số xuất hiện thấp có thể làm giảm giá trị của độ chính
xác. Một vấn đề khác là sự cần thiết để chọn những ngưỡng thích hợp theo thứ tự để
phân biệt những mục từ hữu ích có tần số xuất hiện trung bình trong phần cịn lại.
3.2.2 Một sớ hàm tính trọng số mục từ:
Trọng số của mục từ là sự tần xuất xuất hiện của mục từ trong toàn bộ tài
liệu. Phương pháp thường được sử dụng để đánh giá trọng số của từ là dựa vào
thống kê, với ý tưởng là những từ thường xuyên xuất hiện trong tất cả các tài liệu
thì “ít có ý nghĩa hơn” là những từ tập trung trong một số tài liệu.
(3.1)
Trong công thức 3.1 là cơng thức tính tần số xuất hiện của thuật ngữ:
tf: trọng số xuất hiện của thuật ngữ
f (t,d): số từ xuất hiện trong tập d


23

Ví dụ: Trong tập d từ phương xuất hiện 2 lần thi ta có tf= =1, 4142

Biểu thức tổng hợp :
idf(t,d) = 1+ [log (n) – (log (nDock +1))]

(3.2)

Trong công thức 3.2 là tần số nghịch đảo của tài liệu:
n


: tổng số tài liệu.

nDock : tổng số tài liệu mà mục từ k xuất hiện.
Ví dụ với 4 tài liệu trong đó có 2 tài liệu xuất hiện từ Trung thì idf sẽ được tính:
idf = 1+ [log (n) – (log (nDock +1))] =1+ [log (4) – (log (3))] =1,12
Không ai muốn kết quả của việc tìm kiếm lại trả về tập tất cả các tài liệu có
trong tập hợp (nghĩa là tập chỉ mục của các tài liệu chứa nhiều từ giống nhau). Độ
phân biệt của mục từ là giá trị phân biệt mức độ tương đương giữa các tài liệu. Nếu
một mục từ có trong chỉ mục mà làm cho độ tương tự của các tài liệu cao thì nó có
độ phân biệt kém (nghĩa là từ này thường xuyên xuất hiện trong các tài liệu) và
ngược lại. Như vậy các mục từ có độ phân biệt cao nên được chọn để lập chỉ mục.
Thực chất việc sử dụng độ phân biệt này cũng cho kết quả tương đương với việc sử
dụng tần số nghịch đảo và tỉ lệ tín hiệu nhiễu.
3.2.3 Lập chỉ mục tự động cho tài liệu:
Vấn đề chính của lập chỉ mục tự động là xác định tự động mục từ chỉ mục
cho các tài liệu. Trong các ngôn ngữ gốc Ấn – Âu thì tách từ có thể nói là đơn giản
vì khoảng trắng là ký tự để phân biệt từ. Vấn đề cần quan tâm là xác định những từ
này là từ khố, có thể đại diện cho tồn bộ nội dung của tài liệu. Loại bỏ các từ
stop-word có tần số xuất hiện cao, những từ này thường chiếm đến 40-50% trong số
các từ của một văn bản. Những từ này có độ phân biệt kém và khơng thể sử dụng để
xác định nội dung của tài liệu. Trong tiếng Anh, có khoảng 250 từ. Số lượng từ này


24

không nhiều lắm nên giải pháp đơn giản nhất là lưu các từ này vào trong một tự
điển, và sau đó chỉ cần thực hiện so sánh từ cần phân tích với từ điển để loại bỏ.
Bước tiếp theo là nhận ra các chỉ mục tốt. Để giảm bớt dung lượng lưu trữ,
các mục từ cần được biến đổi về nguyên gốc (step of stemming đối với tiếng Anh),

Phải loại bỏ đi các tiền tố, hậu tố, các biến thể số nhiều, quá khứ…Giải pháp là sử
dụng một danh sách các hậu tố. Trong khi loại bỏ hậu tố thì những hậu tố dài được
ưu tiên loại bỏ trước, rồi sau đó mới loại bỏ những hậu tố ngắn hơn. Sau đây là một
số vấn đề khi loại bỏ trong tiếng Anh: [1]
- Chỉ rõ chiều dài tối thiểu của một từ gốc sau khi loại bỏ hậu tố. Ví dụ: việc
loại bỏ hậu tố “ability” ra khỏi “computability” hay loại bỏ “ing” ra khỏi
“singing” là hợp lý. Tuy nhiên, những hậu tố đó khơng cần phải loại bỏ
trong các từ “ability” và “sing”.
− Nếu nhiều hậu tố được kết hợp vào một gốc thì ta sẽ áp dụng đệ quy cho
quá trình loại bỏ hậu tố vài lần hoặc lập từ điển hậu tố rồi loại bỏ những
hậu tố dài hơn trước rồi đến các hậu tố ngắn sau. Ví dụ: “effectiveness”
 “effective”  “effect”.
− Trong tiếng Anh, từ gốc có thể bị biến đổi sau khi đã loại bỏ hậu tố. Do
đó, ta cần phải có những luật nhất định để phục hồi từ gốc. Chẳng hạn
loại bỏ một trong hai kí tự trùng nhau của những từ có sự xuất hiện b, d,
d, l, m, n, p, r, s, t ở cuối của các từ gốc sau khi đã loại bỏ hậu tố. Ví du
như “beginning”  “beginn”  “begin”.
− Một số ngoại lệ phụ thuộc vào ngữ cảnh đặc biệt phải được chú ý, sử
dụng các quy tắc cảm ngữ cảnh. Ví dụ: một quy tắc cho hậu tố “allic” chỉ
rõ chiều dài cực tiểu của từ gốc là ba và không loại bỏ hậu tố sau “met”
hoặc “ryst”, hoặc quy tắc chỉ loại bỏ hậu tố “yl” sau “n” hoặc “r”.


25

Tóm lại, giải quyết vấn đề hậu tố khơng q khó nếu chúng ta có sẵn một
danh sách chứa các hậu tố, một danh sách chứa các luật thêm các hậu tố và phục hồi
từ gốc sau khi thêm hậu tố.

3.3


Các lớp thực hiện Indexing trong Lucene:

− IndexWriter
− Directory
− Analyzer
− Document
− Field
• Index Writer
IndexWriter là thành phần trung tâm của quá trình đánh chỉ mục - indexing.
Class này tạo ra một index mới và sau đó thêm các document vào Index đã tạo.
IndexWriter như là một Object cho phép ta ghi vào index nhưng khơng cho phép ta
đọc hay tìm kiếm trên index.
• Directory
Lớp Directory thể hiện vị trí lưu trữ của một Index. Nó là một lớp trừu tượng
cho phép các lớp con có thể lưu trữ Index. Trong lớp Indexer sử dụng một đối
tượng File nằm trong Package Java.io để tạo mới một IndexWriter chứ không sử
dụng lớp Directory.
Một lớp con khác của lớp Directory là lớp RAMDirectory, lớp này giữ tất cả
dữ liệu của nó trong bộ nhớ. Vì thế lớp này rất hữu dụng cho các index có dung
lượng nhỏ, Index được tạo ra trong loại RAMDirectory sẽ bị hủy ngay sau khi ứng
dụng kết thúc. Tuy nhiên việc thực hiện tìm kiếm đối với loại RAMDirectory sẽ
nhanh hơn so với FSDirectory (file system directory).
• Analyser
Trước khi text được index, thì nó phải thơng qua một tiến trình gọi là
Analyser. Analyser này được chỉ định ngay trong Constructor của lớp IndexWriter.
Lớp Analyser này có nhiệm vụ trích lọc những ký tự ra khỏi text.
Lucene cung cấp 4 loại Analyser như sau:



×