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

1
TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM



 !
"#$%
&$''

Người hướng dẫn: ()*+,-./ 01-
.()*+,-2-)!3
Người thực hiện: $4567899:;99:
!<!=$7899:;98>
Lớp ?99:8:;:
Khoá ?98
@5ABC=:9D
TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM



 !
"#$%
&$''
Người hướng dẫn: ()*+,-./ 01-
.()*+,-2-)!3
Người thực hiện: $4567899:;99:
!<!=$7899:;98>
Lớp ?99:8:;:
Khoá ?98
@5ABC=:9D
3

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
5.d-XIL T-La/!.ef-)_g-
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
_____________________
Tp. Hồ Chí Minh, ngày tháng 05 năm 2014
(kí và ghi họ tên)
5.d-`I )0ILa/!L.O[NU0
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
______________________________________________________
_____________________
Tp. Hồ Chí Minh, ngày 30 tháng 12 năm 2014
(kí và ghi họ tên)
6

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
iLSiL
9
jB$!@k! 
k! 
API Application Programming Interface
IR Information Retrieval
SQL Structured Query Language
PDF Portable Document Format
HTML HyperText Markup Language
TF Term Frequency
IDF Inverse Document Frequency
10
jEl$Cm!nCo
jm
jE
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………………………………………………………………………
69?pq$!rm 
9c9 &YL.(s\U\/0JZtLa/N^[I+Jb[P0G[
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

(multimedia)
Hỗ trợ Hỗ trợ Hỗ trợ Không hỗ trợ
Toá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ợ
Dùng ký tự *
để thay thế
cho các ký tự
trong dấu “ ”
Không hỗ trợ Dùng ký tự * Không hỗ trợ
12
Boolean OR (chỉ dùng
cho danh từ
riêng)
AND, OR,
ANDNOT,
RANK, ()
AND, OR,
ANDNOT,
NEAR, ()
OR (chỉ dùng cho
tên riêng)
Stop words Thông thường
bỏ qua các từ
thông dụng
+ nếu muốn
tìm và phải đặt
trong cặp dấu

ngày, domain,
địa chỉ iP
Giới hạn bởi
ngày, vị trí,
ngôn ngữ
Trong tìm
nâng cao : sử
dụng sortby để
lọc và sắp xếp
kết quả.
Dùng refine để tối
ưu kết quả.
Resource để có
được các trang và
liên kết tập trung
trên chủ đề cần tìm.
Ưu điểm
chính
Rất tốt với
những trang
có độ phổ biến
cao.
Các trang tin
tức gần đây
Tốt như
Google.
Không có stop
word.
Dùng nhiều
toán tử

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à quá 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

c9 &*Lv-vSU)bz{9|
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. Ngoà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 toá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

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 toà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 toá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 Toá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 toà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.
c uRH.IJJZ0}-La/&*Lv-vz
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
6;?'
;c9.I0-0K[\].KJ.~-)STHL.•[iL?
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.
MS WORDHTML
PDF
PARSE
PARSE PARSE

phản ánh tầm quan trọng của mục từ đó trong văn bản.
;cc9 IL`Y [iLJ†JZV-)L‚*STHL.•[iL?
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 toán tần số xuất hiện
của các mục từ trong tài liệu đó.
F
ik
(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 xoá những mục từ như vậy hiếm khi xảy ra trong tập hợp mà sự

k
: 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 (nDoc
k
+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.
;cc; &THL.•[iLJR`^-)L.VJU0S0K*?
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ừ khoá, có thể đại diện cho toà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
idf
(t,d)
= 1+ [log (n) – (log (nDoc
k
+1))]
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ỏ.

−Analyzer
−Document
−Field
• -_vXwZ0JvZ
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.
• 0ZvLJVZ+
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).
• -/S+(vZ
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:

Trích đoạn Các lớp thực hiện Searching trong Lucene:
Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status