Kết quả đạt được chỉ mới dừng lại ở phạm vi nhỏ với số lượng văn bản còn hạn
chế. Kết quả lớn nhất đạt được là chúng tôi đã nghiên cứu một cách hệ thống các tính
năng và hoạt động của mã nguồn mở Lucene và ứng dụng thành công mã nguồn này
trong công tác tìm kiếm thông tin trên văn bản. Hệthống được kế thừa toàn bộ thư viện
mã nguồn mở Lucene.NET nên tính hiệu quả rất lớn và không phải mất chi phí cho bản
quyền sử dụng.
Việc xây dựng một số tính năng xử lý cho tiếng Việt tuy còn ít nhưng đã mởra
khả năng kế thừa và phát triển mã nguồn này. Trên cơ sở đó, chúng ta có thể tùy chỉnh,
mở rộng chức năng, hay đóng góp để phát triển cho Lucene.
10 trang |
Chia sẻ: lylyngoc | Lượt xem: 2755 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Nghiên cứu ứng dụng mã nguồn mở lucene để xây dựng phần mềm tìm kiếm thông tin trên văn bản, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 4(39).2010
307
NGHIÊN CỨU ỨNG DỤNG MÃ NGUỒN MỞ LUCENE ĐỂ
XÂY DỰNG PHẦN MỀM TÌM KIẾM THÔNG TIN TRÊN VĂN BẢN
A CASE STUDY ON USING OPEN SOURCE LUCENE TO BUILD THE FULL
TEXT SEARCH ENGINE
Huỳnh Đức Việt
Trung tâm Công nghệ Phần
mềm, Trường Đại học Duy Tân
Võ Duy Thanh
Trường Cao đẳng Công nghệ
Thông tin Hữu nghị Việt – Hàn
Võ Trung Hùng
Trường Đại học Bách khoa,
Đại học Đà Nẵng
TÓM TẮT
Trong bài báo này chúng tôi 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 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 đó. Nó cũng cho
phép người dùng kế thừa và phát triển để phù hợp với nhiều ngôn ngữ khác nhau. Chúng tôi đề
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ữ. Trong
mô hình này, chúng tôi sử dụng mã nguồn của Lucene và xây dựng một số xử lý cho ngôn ngữ
tiếng Việt. Đầu tiên, chúng tôi 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 tôi xây dựng các ứng
dụng tìm kiếm sử dụng tập chỉ mục này để truy vấn và lấy về tài liệu liên quan.
ABSTRACT
In this paper, we introduce our research on open- source Lucene and how to apply it to
a search engine. Lucene is the open source project which is supplied and managed by Apache
Foundation Organization. This is a tool applied to create an index for the text used in search
engine. Lucene helps to process on input documents for plain text to create an index and supply
search mode based on this index. It also helps users inherit and develop in appropriation to
different languages. We propose applied Lucene to develop a search engine on stored
documents. In this model, we use the source code of Lucene and build some processing
functions for Vietnamese. First, we begin to extract kinds of documents, and then perform some
processing for Vietnamese and create the index for the documents. Finally, we build search
applications using this index to query and retrieve similar documents.
1. Giới thiệu
Cùng với sự phổ biến của công nghệ thông tin, số lượng các tài liệu điện tử cũng
gia tăng từng ngày. Đến nay, số lượng các tài liệu được lưu trữ lên đến hàng tỷ trang.
Trong khi đó, nhu cầu khai thác trong kho tài liệu khổng lồ này để tìm kiếm những
thông tin cần thiết đang là nhu cầu thường ngày và thiết thực của người sử dụng. Tuy
nhiên, một trong những khó khăn con người gặp phải trong việc khai thác thông tin là
khả năng tìm chính xác thông tin họ cần trong kho tài liệu. Để trợ giúp công việc này,
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 4(39).2010
308
các hệ thống tìm kiếm đã lần lượt được phát triển nhằm phục vụ cho nhu cầu tìm kiếm
của người sử dụng.
Những hệ thống tìm kiếm bắt đầu phát triển và đưa vào ứng dụng, phổ biến là
các hệ thống tìm kiếm theo từ khóa. Nhiều hệ thống hoạt động hiệu quả trên Internet
như Google, Bing, Yahoo!… Tuy nhiên, phần lớn các công cụ tìm kiếm này là những
sản phẩm thương mại và mã nguồn được giữ bí mật. Hoặc các hệ thống tìm kiếm trên
máy cá nhân như Windows Search, Google Desktop… đã đáp ứng phần nào nhu cầu
của người sử dụng, miễn phí cho cá nhân, tuy nhiên cũng chỉ đáp ứng được trên phạm
vi nhỏ. Điều này dẫn tới kết quả là nhiều nhà phát triển riêng biệt hoặc các tổ chức sử
dụng sẽ phải tự mình xây dựng từ đầu một công cụ tìm kiếm nếu hệ thống của họ cần
chức năng tìm kiếm này. Một cách tiếp cận hiệu quả để giải quyết vấn đề này là sử dụng
các thư viện mã nguồn mở để xây dựng hệ thống tìm kiếm.
Trong bài báo này, chúng tôi giới thiệu những những tính năng nổi bật nhất của
Lucene, cùng những kết quả thử nghiệm trên hệ thống này và đưa ra những phát triển
mở rộng cho văn bản tiếng Việt.
2. Tìm kiếm thông tin
Tìm kiếm thông tin (Information Retrieval – IR) là tìm kiếm tài nguyên (thường
là các tài liệu - documents) trên một tập lớn các dữ liệu phi cấu trúc (thường là văn bản
– text) được lưu trữ trên các máy tính nhằm thỏa mãn nhu cầu về thông tin [2].
Mục đích của IR là trả lại cho người dùng một tập các thông tin thỏa mãn nhu
cầu của họ. Chúng ta định nghĩa rằng thông tin cần thiết là “câu truy vấn” (query) và
các thông tin được chọn là “tài liệu” (documents). Mỗi cách tiếp cận trong IR bao gồm 2
thành phần chính: một là các kỹ thuật để biểu diễn thông tin (câu truy vấn, tài liệu) và
hai là phương pháp so sánh các cách biểu diễn này. Mục đích là để thực hiện tự động
qui trình kiểm tra các tài liệu bằng cách tính toán độ tương quan giữa các câu truy vấn
và tài liệu. Qui trình tự động này thành công khi nó trả về các kết quả giống với các kết
quả được con người tạo ra khi so sánh câu truy vấn với các tài liệu.
Hình 1. Mô hình biểu diễn và so sánh thông tin
Không gian
tài liệu D
Không gian
truy vấn Q
Hàm biểu diễn tài liệu d Hàm biểu diễn truy vấn q
Truy vấn Tài liệu
Biểu diễn 1 Biểu diễn 2 Không gian
biểu diễn R
Hàm so sánh c
Xử lý của con người j [0,1]
[0,1]
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 4(39).2010
309
Gọi miền xác định của hàm biểu diễn câu truy vấn q là Q, tập hợp các câu truy
vấn có thể có; và miền giá trị của nó là R, không gian thống nhất biểu diễn thông tin.
Gọi miền xác định của hàm biểu diễn tài liệu d là D, tập hợp các tài liệu; và miền giá trị
của nó là R. Miền xác định của hàm so sánh c là R × R và miền giá trị của nó là [0,1],
tập các số thực từ 0 đến 1. Trong một hệ thống tìm kiếm lý tưởng:
c(q(query), d(doc)) = j(query, doc) , query Q, doc D
với j: Q × D Æ [0,1] biểu diễn việc xử lý của người dùng về mối quan hệ của
thông tin trên câu truy vấn và thông tin trong tài liệu.
Có nhiều cách đo lường khác nhau cho việc đánh giá mức độ xử lý trả về kết quả
của một hệ thống tìm kiếm thông tin. Các cách đo lường đều đòi hỏi một tập tài liệu và
một câu truy vấn trên tập tài liệu đó, giả sử rằng mỗi tài liệu có thể liên quan hoặc
không liên quan đến câu truy vấn.
o Độ chính xác (Precision): được đo bởi tỉ lệ của tài liệu trả về chính xác trên
tổng các tài liệu nhận được
o Độ bao phủ (Recall): được đo bởi tỉ lệ tài liệu trả về chính xác trên tổng các tài
liệu có liên quan
o Kết quả sai (Fall-out): được đo bởi tỉ lệ các tài liệu không có liên quan tả về
trên tổng các tài liệu không liên quan
Ví dụ trong tập 1000 tài liệu được sử dụng cho tìm kiếm với 200 tài liệu liên
quan đến thông tin “tin học”, một hệ thống tìm kiếm thông tin “tin học” trả về được 150
tài liệu, trong đó có 130 tài liệu chính xác. Khi đó:
Độ chính xác =
}150{
}150{}200{ ∩ =
}150{
}130{ ~ 87%
Độ bao phủ =
}200{
}150{}200{ ∩ =
}200{
}130{ ~ 65%
Kết quả sai =
}800{
}150{}800{ ∩ =
}800{
}20{ ~ 2.5%
Các mô hình tìm kiếm thông tin thường sử dụng:
- Mô hình so khớp (Boolean retrieval model): là một mô hình mà chúng ta có thể
xem mỗi câu truy vấn là một biểu thức logic các mục từ, trong đó gồm các mục từ kết
hợp với các toán tử logic (AND, OR, và NOT). Mô hình sẽ xem mỗi tài liệu là một tập
Độ chính xác =
{Tài liệu liên quan} ∩ {Tài liệu nhận được}
{Tài liệu nhận được}
Độ bao phủ =
{Tài liệu liên quan} ∩ {Tài liệu nhận được}
{Tài liệu liên quan}
Kết quả sai =
{Tài liệu không liên quan} ∩ {Tài liệu nhận được}
{Tài liệu không liên quan}
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 4(39).2010
310
hợp các mục từ. Mỗi mục từ sẽ chứa một danh sách các tài liệu có chứa nó, danh sách
này gọi là posting, việc so khớp sẽ duyệt qua danh sách posting để kiểm tra các tài liệu
có chứa mục từ hay không.
- Phương pháp tính điểm: Mô hình so khớp chỉ trả về giá trị chân lý là có hoặc
không có trong tài liệu tìm kiếm, kết quả trả về không có thứ hạng. Điều này đã dẫn đến
kết quả tìm kiếm không được như mong muốn của người dùng. Để cải tiến mô hình này,
người ta áp dụng cách tính điểm cho kết quả trả về, dựa trên trọng số của mục từ trên tài
liệu.
Tần suất xuất hiện của mục từ t trên tài liệu d được ký hiệu là tft,d . Tần suất
nghịch đảo của tài liệu d trên tập N tài liệu ký hiệu là idft =log(N / dft ), khi đó, trọng số
mục từ t trên tài liệu d sẽ là tf-idft,d = tft,d × idft, điểm số của tài liệu d sẽ là tổng điểm
các mục từ trong câu truy vấn có mặt trong d:
Score (q,d) =∑
∈
−
qt
dtidftf ,
Ví dụ với 1000 tài liệu có 100 tài liệu chứa mục từ “tin” và 150 tài liệu chứa
mục từ “học”, giả sử tài liệu thứ nhất d có 3 lần xuất hiện mục từ “tin” và 4 lần xuất
hiện mục từ “học”, khi đó điểm số của câu truy vấn q=tin học trên tài liệu d sẽ là:
Score(q,d) = tftin,d- idftin + tfhọc,d- idfhọc = tftin,d × log (N/dftin) + tfhọc,d × log
(N/dfhọc)
= 3 × log (1000/100) + 4 × log (1000/150) ~ 6.23
- Mô hình không gian vec-tơ (The vector space model): Mô hình so khớp và cả
phương pháp tính điểm số ở trên chưa xét vai trò của các mục từ trong câu truy vấn. Ví
dụ hai tài liệu chứa câu “Mary is quicker than John” và “John is quicker than Mary”, số
lượng các mục từ như nhau nhưng vai trò khác nhau hoàn toàn. Để giải quyết vấn đề
này người ta đưa ra mô hình không gian vec-tơ, mô hình này sẽ biểu diễn tài liệu d như
một vec-tơ tần suất các mục từ )(V d .Với hai tài liệu trên thì tuy có các mục từ giống
nhau, nhưng biểu diễn vec-tơ của chúng thì lại khác nhau, khi đó chúng ta có thể tính
mức tương quan giữa hai tài liệu:
sim (d1, d2) =
)(dV)(dV
)(dV).(dV
21
21
×
Đối với truy vấn q chúng ta cũng xem đây là một vec-tơ )(V q biểu diễn tần
suất các mục từ truy vấn. Mức độ tương quan giữa hai vector được tính theo hàm cosin
của góc giữa chúng:
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 4(39).2010
311
Ví dụ, với truy vấn best car insurance trên tập dữ liệu với N=1.000.000 tài liệu
với tần số xuất hiện của 4 mục từ auto, best, car, insurance lần lượt là 5.000, 50.000,
10.000, 1.000. Chúng ta có bảng tính điểm số sau:
Mục từ Truy vấn q tf df idf wt,q
Tài liệu d
(ngẫu nhiên)
tf wf wt,d
Điểm số
auto 0 5000 2.3 0 1 1 0.41 0
best 1 50000 1.3 1.3 0 0 0 0
Car 1 10000 2.0 2.0 1 1 0.41 0.82
insurance 1 1000 3.0 3.0 2 2 0.82 2.46
Như vậy, điểm số Score (q,d) = 0 + 0 + 0.82 + 2.46 = 3.28
3. Mã nguồn mở Lucene
Năm 1998, Doug Cutting – từng là nhân viên của Excite, Yahoo, và đang làm
việc tại Apache Software Foundation - đã bắt đầu tiến hành xây dựng thư viện tìm kiếm
thông tin mã nguồn mở Lucene với mục tiêu phát triển nó thành một thư viện tìm kiếm
tài liệu hoàn chỉnh, cho phép các nhà phát triển ứng dụng dễ dàng tích hợp chức năng
tìm kiếm vào hệ thống của mình.
Lucene là một thư viện tìm kiếm thông tin có khả năng xử lý và khả năng mở
rộng ở mức cao, cho phép chúng ta có thể tích hợp vào các ứng dụng. Lucene là một dự
án mã nguồn mở và nguyên thuỷ được phát triển bằng ngôn ngữ Java, ngày nay Lucene
được phát triển bằng nhiều ngôn ngữ khác nhau như Delphi, Perl, C#, C++, Python,
Ruby và PHP…
Thành phần chức năng chính của Lucene bao gồm hai phần: Thành phần tạo chỉ
mục và thành phần tìm kiếm. Đây là hai thành phần quan trọng cho một hệ thống tìm
kiếm.
sim(di,q)= cosθ =
(q)V)(dV
(q)V).(dV
i
i
× ≈ )().( qvdv i
Với : )(/)()( dVdVdv = , )(/)()( qVqVqv =
là các vec-tơ đơn vị.
Length(d)=M, Length(q)=N
∑
=
=
M
i
i dVdV
1
2
)()( , ∑
=
=
N
i
i qVqV
1
2
)()(
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 4(39).2010
312
Hình 2. Các thành phần Lucene hỗ trợ cho hệ thống Tìm kiếm
- Thành phần Tạo chỉ mục: bao gồm các phần chức năng xử lý tạo chỉ mục, từ
văn bản đầu vào để cho ra kết quả là một tập chỉ mục. Lucene chỉ hỗ trợ trên văn bản
sau khi được tách nội dung ở dạng ký tự thuần, nó cho phép lập chỉ mục trên từng
trường thông tin của văn bản và cho phép thiết lập hệ số cho từng trường thông tin để
nâng cao vai trò lúc tìm kiếm.
• Directory: cho phép định nghĩa vùng nhớ, xác định nơi lưu trữ trên bộ nhớ
ngoài và bộ nhớ trên RAM trong quá trình tạo chỉ mục
• Document và Field: định nghĩa tài liệu và các trường thông tin của tài liệu sử
dụng cho lập chỉ mục, nó cũng sử dụng cho việc lấy kết quả trả về cho thành
phần Tìm kiếm
• Analyzer: thực hiện chức năng xử lý và tách văn bản để lấy nội dung, chuẩn
hóa, loại bỏ mục từ không cần thiết,… để chuẩn bị cho việc lập chỉ mục
• IndexWriter: là phần chính trong thành phần Tạo chỉ mục, nó thực hiện việc
tạo mới hoặc mở chỉ mục, sau đó thực hiện thêm mới hoặc cập nhật nội dung
của chỉ mục
- Thành phần Tìm kiếm: bao gồm các phần chức năng cho xử lý tìm kiếm, từ
yêu cầu của người dùng, thông qua biên dịch và so khớp để lấy về kết quả tốt nhất.
Lucene hỗ trợ nhiều loại truy vấn thuận tiện cho người sử dụng, nó cho phép tìm theo
trường thông tin hay các thiết lập nâng cao như sắp xếp kết quả, giới hạn thời gian hoặc
số lượng kết quả, phân trang…
• Term: Term là một đơn vị cơ bản của tìm kiếm, tương tự như thành phần
Field, Term cũng bao gồm tên và giá trị tương ứng.
• Query: bao gồm nhiều loại truy vấn khác nhau, nó chứa nhiều phương thức,
nhưng hầu hết đều quan tâm đến việc thiết lập chỉ số Boost, cho phép Lucene
hiểu truy vấn con nào là quan trọng hơn.
• IndexSearcher: cho phép tìm kiếm trên tập chỉ mục do IndexWriter tạo ra,
đây là thành phần chỉ thực hiện nhiệm vụ mở tập chỉ mục, không cho phép
chỉnh sửa hay thay đổi. Có nhiều phương thức tìm kiếm, một trong số đó là
lớp thành phần thực thi Searcher, với cách đơn giản là cung cấp một Query
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 4(39).2010
313
truy vấn, số lượng các liên kết cần trả về, và kết quả trả về sẽ là tập các đối
tượng TopDoc.
• TopDoc: là một lớp đơn giản, dùng cho việc chứa các thứ hạng cao nhất của
N tài liệu có liên quan đến truy vấn. Với mỗi đối tượng trong danh sách này
sẽ cho một docID dùng để liên kết đến tài liệu nhận về.
Lucene không phải là một ứng dụng hay một máy tìm kiếm hoàn chỉnh để người
dùng có thể sử dụng ngay, đây chỉ là một thư viện, nó cung cấp các thành phần quan
trọng nhất của một máy tìm kiếm đó là tạo chỉ mục và truy vấn. Chính vì chỉ cung cấp
các thành phần quan trọng trong việc tạo chỉ mục nên người dùng rất linh hoạt trong
việc ứng dụng vào sản phẩm của mình, cũng như có một số cải tiến cho phù hợp hơn.
4. Xây dựng hệ thống tìm kiếm công văn
Trên cơ sở nghiên cứu, chúng tôi đề xuất một hệ thống tìm kiếm trên các tài liệu
và công văn lưu trữ. Trong đó, chúng tôi kế thừa mã nguồn từ Lucene.NET để xây dựng
hệ thống tìm kiếm với hai thành phần chính là Tạo chỉ mục và Tìm kiếm. Do chỉ xây
dựng hệ thống tìm kiếm nhỏ với dữ liệu là văn bản công văn đã lưu sẵn trên máy và bổ
sung một cách thủ công từ phía người dùng nên hệ thống không có thành phần thu thập
thông tin. Các thành phần xây dựng bao gồm:
− Thành phần tạo chỉ mục: bao gồm các chức năng chính như chỉ định dữ liệu lập
chỉ mục, thực hiện phân tích tài liệu, tạo chỉ mục và lưu trữ xuống tập chỉ mục,
cập nhật chỉ mục trong trường hợp bổ sung hay thay đổi, theo dõi và quản trị nội
dung chỉ mục… Thành phần này dựa trên những lớp có sẵn của Lucene, ngoài ra
có phát triển một số lớp bổ sung cho việc đọc nội dung các loại tài liệu, phân tích
hỗ trợ ngôn ngữ Tiếng Việt, giao diện người dùng…
− Thành phần tìm kiếm: bao gồm các chức năng chính như: nhận thông tin truy
vấn, biên dịch và tìm kiếm, trình bày kết quả và liên kết đến tài liệu gốc… trong
đó các lớp biên dịch truy vấn và tìm kiếm dựa trên các thành phần có sẵn của
Lucene.
Do đặc trưng của các văn bản lưu trữ là được thu thập từ nhiều đơn vị và do
nhiều người dùng tạo ra, nên tồn tại rất nhiều loại tệp tin văn bản cũng như sự thiếu
đồng nhất về bảng mã tiếng Việt. Về cơ bản, Lucene chỉ hỗ trợ cho văn bản Text và
ngôn ngữ tiếng Anh, do vậy số lượng văn bản lập chỉ mục được là rất ít (chỉ có tệp tin
dạng .txt), các mục từ trên tiếng Việt không được chuẩn hoá nên có thể dẫn đến tình
trạng dư thừa và tìm kiếm thiếu chính xác. Ví dụ với mục từ "trường" thì có thể tồn tại
đến 3-4 mục từ trong chỉ mục, mỗi mục từ là một bảng mã như Vni, Abc, Unicode,…
và nghiêm trọng hơn mục từ này không được tách chính xác do ký tự dấu làm cho thành
phần phân tích của Lucene không thể tách đúng từ vựng.
Trên cơ sở tạo chỉ mục của Lucene, chúng tôi đã kế thừa và xây dựng thành
phần tách nội dung các loại tệp tin văn bản, trong đó có hỗ trợ cho ngôn ngữ tiếng Việt
như xây dựng lại danh sách từ loại bỏ (stopword), thực hiện chuẩn hoá bảng mã Tiếng
Việt (stemming)…
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 4(39).2010
314
− VietnameseAnayzer: Chức năng chính là định nghĩa lại danh sách từ cần loại bỏ
stopword, thay vì loại bỏ một số từ tiếng Anh, chúng tôi định nghĩa lại danh sách
các từ loại bỏ trong tiếng Việt, đây là các từ ít nghĩa như:
"à","ạ","ấy","bây","bấy","bỗng",…
− VietnameseStemFilter: Chức năng chính là lọc các mục từ đọc ra từ thành phần
phân tích và thực hiện đưa sang thành phần chuyển mã.
− AutoGetFont: Thực hiện nhận diện các bảng mã tiếng Việt như ABC, Vni,
Vietware, Unicode Dựng sẵn hay Tổ hợp…
− AutoConvert: thực hiện chuyển đổi các bảng mã Tiếng Việt về dạng TCVN
6909.
− ExtractFile: Thực hiện việc lấy văn bản ký tự thuần từ các loại tệp tin khác nhau
như MS Word, MS Excel, MS PowerPoint, Pdf, Html… Trong đó có sử dụng các
thư viện hỗ trợ của MS Office, PDF Box, HTML Parse để tách văn bản và lấy nội
dung.
Hệ thống xây dựng gồm hai ứng dụng chính: ứng dụng thứ nhất là Tạo chỉ mục,
cho phép thực thi trên máy chủ, dành cho người quản trị với các chức năng chính là chỉ
định dữ liệu lập chỉ mục, tạo và cập nhật nội dung chỉ mục, quản lý người dùng… Ứng
dụng thứ hai là tìm kiếm, cho phép thực thi trên các máy người dùng cuối, hoạt động cả
trên môi trường LAN và Internet với chức năng chính là nhận yêu cầu tìm kiếm và trả
về danh sách tài liệu liên kết cho người dùng.
Hình 3. Mô hình hệ thống tìm kiếm công văn
5. Thử nghiệm
Với mô hình hệ thống như trên, chúng tôi đã xây dựng và thử nghiệm với khoảng
15.000 văn bản, đa số là các thông báo, quyết định và công văn thu thập ở Trường Đại
Tách nội dung văn bản
Tập chỉ
mục
Yêu cầu tìm kiếm
Người sử dụng
Công văn lưu trữ
- Loại bỏ stopword
- Nhận dạng bảng mã
- Chuyển mã
- Thiết lập thông tin
- Lập chỉ mục
- Ứng dụng/Website tìm kiếm
- Lấy về kết quả
- Phân tích truy vấn
-Tìm kiếm
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 4(39).2010
315
Học Duy Tân, đây là nguồn tài liệu chưa lớn nhưng đầy đủ các loại văn bản thông dụng
như doc, docx, xls, xlsx, ppt, pptx, pdf, html,… và chứa đựng nhiều bảng mã tiếng Việt.
Hệ thống đã thực hiện thành công trên máy tính cá nhân với cấu hình Intel Core
2 Duo T6600 2.2GHz, 2GB RAM và kết quả thống kê như sau:
S
T
T
Loại tài liệu,
số lượng
Tổng tệp
tin, Kích
thước
Thời
gian lập
Kích
thước
tệp chỉ
mục
Số
lượng
mục từ
Truy
vấn
Kết quả và
thời gian tìm
kiếm Trung
Bình
1
(.doc): 6
(.xls): 1
TS : 7
(216 KB)
00:00:0
7
12 KB 645
"văn
bản"
3kq ~ 0.031s
2
(.doc): 144
(.xls): 27
(.pdf): 7
(.ppt): 1
TS : 179
(23.1
MB)
00:02:1
0
302 KB 6262 văn bản
110kq ~
0.047s
3
(.doc): 1053
(.xls): 216
(.pdf): 19
TS : 1288
(167 MB)
00:21:1
9
1.5 MB 25388 nh* 881kq ~ 0.062s
4
(.doc):
11392
(.docx): 121
(.xls): 3753
(.pdf): 146
(.ppt): 10
(.pptx): 6
TS :
15428
(2.1 GB)
04:15:4
8
26.8 MB 302117 văn bản 4821kq ~ 0.42s
Qua kết quả thống kê trên thực tế tài liệu gốc (thực hiện thủ công đối với trường
hợp ít tài liệu) cho thấy thử nghiệm cho kết quả tương đối chính xác và hiệu quả:
− Khoảng 3% tài liệu bị sai sót trong quá trình tách văn bản và chuyển mã.
− Kích thước chỉ mục trung bình giảm 20-30 lần cho văn bản ký tự, trên 30 lần cho
văn bản có chèn hình ảnh.
− Thời gian tách văn bản, chuyển mã và lập chỉ mục tương đương 1 giây cho mỗi
tài liệu (các văn bản thông dụng, kích thước không quá 10 trang).
− Tỉ lệ cập nhật và chỉnh sửa chính xác 100%.
Như vậy, hệ thống tìm kiếm văn bản và công văn đã đáp ứng những yêu cầu cơ
bản của người quản trị và người dùng. Hệ thống đã hỗ trợ cho hầu hết các loại văn bản
phổ biến hiện có và bước đầu hỗ trợ cho xử lý trên ngôn ngữ tiếng Việt.
6. Kết luận
Kết quả đạt được chỉ mới dừng lại ở phạm vi nhỏ với số lượng văn bản còn hạn
chế. Kết quả lớn nhất đạt được là chúng tôi đã nghiên cứu một cách hệ thống các tính
năng và hoạt động của mã nguồn mở Lucene và ứng dụng thành công mã nguồn này
trong công tác tìm kiếm thông tin trên văn bản. Hệ thống được kế thừa toàn bộ thư viện
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 4(39).2010
316
mã nguồn mở Lucene.NET nên tính hiệu quả rất lớn và không phải mất chi phí cho bản
quyền sử dụng.
Việc xây dựng một số tính năng xử lý cho tiếng Việt tuy còn ít nhưng đã mở ra
khả năng kế thừa và phát triển mã nguồn này. Trên cơ sở đó, chúng ta có thể tùy chỉnh,
mở rộng chức năng, hay đóng góp để phát triển cho Lucene.
Chúng tôi nhận thấy rằng, với việc phát triển nhanh chóng của công nghệ thông
tin cũng như nhu cầu tìm kiếm thông tin của người dùng ngày một nhiều thì hệ thống rất
có khả năng để phát triển. Trong thời gian đến, chúng tôi hy vọng sẽ kết hợp với xử lý
ngôn ngữ tiếng Việt để xây dựng được một hệ thống tìm kiếm hoàn chỉnh hơn.
TÀI LIỆU THAM KHẢO
[1] C.J. van Rijsgergen, “Information Retrieval”, Information Retrieval Group,
University of Glasgow, LonDon, United Kingdom, 1979.
[2] Christopher D. Manning, Prabhakar Raghavan and Hinrich
Schütze: “Introduction to Information Retrieval”, Cambridge University Press,
2008.
[3] Erik Hatcher, Michael McCandless, Otis Gospodnetic: “Lucene in Action”,
Apache Jakarta Project Management Committee, 2008.
[4] Grant Ingersoll, Ozgur Yilmazel, Niranjan Balasubramanian, Steve Rowe,
Svetlana Smoyenko, “Advanced Lucene”, Center for Natural Language
Processing, 2005.
[5] Peter Ingwersen, “Information Retrieval Interaction”, Taylor Graham Publishing,
LonDon, United Kingdom, 1992.
[6] Đỗ Phúc, Đỗ Hoàng Cường, Nguyễn Tri Tuấn, Huỳnh Thụy Bảo Trân, Nguyễn
Văn Khiết, “Phát triển một Hệ thống S.E Hỗ trợ Tìm kiếm Thông tin, thuộc lãnh
vực CNTT trên Internet qua từ khóa bằng tiếng Việt”, Đại Học Khoa Học Tự
Nhiên, TP.HCM.
[7] Ricardo Baeza-Yates, Berthier Ribeiro-Neto, “Modern Information Retrieval”, A
Division of the Association for Computing Machinary, New York, 2008.
[8] The Apache Software Foundation: “Apache Lucene.Net Class Library API”,
[9] Tổng cục tiêu chuẩn đo lường chất lượng: “Xử lý văn bản Tiếng Việt qua mạng”,
Các file đính kèm theo tài liệu này:
- so39bai42_2319.pdf