Tải bản đầy đủ (.pdf) (57 trang)

Tìm hiểu phương pháp xử lý tìm kiếm theo ký tự đại diện của 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 (1.89 MB, 57 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ

TRƢƠNG KIM TÚ

TÌM HIỂU PHƢƠNG PHÁP XỬ LÝ TÌM KIẾM THEO
KÝ TỰ ĐẠI DIỆN CỦA LUCENE

LUẬN VĂN THẠC SĨ HỆ THỐNG THÔNG TIN

Hà Nội – 2016


ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ

TRƢƠNG KIM TÚ

TÌM HIỂU PHƢƠNG PHÁP XỬ LÝ TÌM KIẾM THEO
KÝ TỰ ĐẠI DIỆN CỦA LUCENE

Ngành: Hệ thống Thông tin
Chuyên ngành: Hệ thống Thông tin
Mã số: 60.48.0104

LUẬN VĂN THẠC SĨ HỆ THỐNG THÔNG TIN

NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS. TS Nguyễn Trí Thành

Hà Nội – Năm 2016



LỜI CẢM ƠN

Tôi muốn bày tỏ lòng biết ơn sâu sắc tới những người đã giúp đỡ tôi trong
quá trình làm luận văn, đặc biệt tôi xin cám ơn PGS. TS. Nguyễn Trí Thành, với
lòng kiên trì, thầy đã chỉ bảo tôi chi tiết và cho tôi những lời nhận xét quí báu
trong từng bước làm luận văn. Đồng thời tôi cũng xin gửi lời cảm ơn tới các
thầy cô giáo khoa Công nghệ thông tin - Trường Đại học Công nghệ - Đại học
Quốc gia Hà nội đã truyền đạt các kiến thức cho tôi trong suốt thời gian học tập
và nghiên cứu vừa qua.
Tôi cũng xin chân thành cảm ơn cơ quan, bạn bè, đồng nghiệp, gia
đình và những người thân đã cùng chia sẻ, giúp đỡ, động viên, tạo mọi điều
kiện thuận lợi để tôi hoàn thành nhiệm vụ học tập và cuốn luận văn này.
Hà Nội, tháng 5 năm 2016
Học viên

Trƣơng Kim Tú


LỜI CAM ĐOAN
Tôi xin cam đoan nội dung trình bày trong luận văn này là do tôi tự
nghiên cứu tìm hiểu dựa trên các tài liệu và tôi trình bày theo ý hiểu của bản
thân dưới sự hướng dẫn trực tiếp của PGS. TS Nguyễn Trí Thành. Các nội dung
nghiên cứu, tìm hiểu và kết quả thực nghiệm là hoàn toàn trung thực.
Luận văn này của tôi chưa từng được công bố trong bất cứ công trình
nào.Trong quá trình thực hiện luận văn tôi đã tham khảo tài liệu của một số tác
giả, tất cả những thống tin liên quan đến tài liệu tham khảo đều được liệt kê
trong mục “TÀI LIỆU THAM KHẢO” ở cuối luận văn.
Tôi xin chịu trách nhiệm hoàn toàn về lời cam đoan của mình, nếu có gì
sai, tôi sẽ chịu mọi hình thức kỷ luật theo quy định.

Hà Nội, tháng 5 năm 2016
Học viên

Trƣơng Kim Tú


MỤC LỤC
MỞ ĐẦU ............................................................................................................... 1
1. Đặt vấn đề...................................................................................................... 1
2. Mục tiêu nghiên cứu ...................................................................................... 1
3. Cấu trúc luận văn........................................................................................... 1
Chương 1. TỔNG QUAN ..................................................................................... 3
1.1 Tổng quan về các phương pháp tìm kiếm ................................................... 3
1.2 Tổng quan về phương pháp xử lý tìm kiếm theo ký tự đại diện ................. 4
1.3 Ý nghĩa khoa học và thực tiễn của đề tài .................................................... 5
1.3.1 Ý nghĩa khoa học ................................................................................. 5
1.3.2 Ý nghĩa thực tiễn .................................................................................. 5
Chương 2. CÁC GIẢI PHÁP CÀI ĐẶT TÌM KIẾM THEO KÝ TỰ ĐẠI DIỆN 6
2.1 Giới thiệu cấu trúc chỉ mục ngược .............................................................. 6
2.2 Tìm kiếm theo ký tự đại diện ...................................................................... 9
2.2.1 Chỉ mục quay ..................................................................................... 10
2.2.2 Chỉ mục k-gram .................................................................................. 11
2.2.3 Giải pháp tìm kiếm dựa trên Otomat ................................................. 12
2.2.3.1 Giới thiệu một số khái niệm liên quan đến otomat ..................... 12
2.2.3.2 Biểu diễn truy vấn theo ký tự đại diện dưới dạng biểu thức chính
quy và quy tắc chuyển đổi từ biểu thức chính quy sang otomat ............. 15
2.2.3.3 Giải pháp tìm kiếm dựa trên Otomat .......................................... 16
2.2.4 Giải pháp tìm kiếm dựa trên máy chuyển đổi hữu hạn trạng thái...... 18
2.2.4.1 Giới thiệu về máy chuyển đổi hữu hạn trạng thái ....................... 18
2.2.4.2 Giải pháp tìm kiếm dựa trên máy chuyển đổi hữu hạn trạng thái

................................................................................................................. 19
Chương 3. GIỚI THIỆU LUCENE..................................................................... 21
3.1 Giới thiệu Lucene ...................................................................................... 21
3.1.1 Lập chỉ mục trong Lucene.................................................................. 23
3.1.1.1 Quy trình lập chỉ mục.................................................................. 23
3.1.1.2 Các toán tử cơ bản ....................................................................... 25
3.1.2 Tìm kiếm trong Lucene ...................................................................... 28


3.1.2.1 Quy trình tìm kiếm trong Lucene................................................ 28
3.1.2.2 Giới thiệu một số kỹ thuật tìm kiếm trong Lucene ..................... 29
3.2 Giới thiệu tìm kiếm theo ký tự đại diện trong Lucene .............................. 32
Chương 4. THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ ................................. 33
4.1 Quy trình thực nghiệm .............................................................................. 33
4.1.1 Thu thập dữ liệu và tiền xử lý ............................................................ 33
4.1.2 Tạo tài liệu.......................................................................................... 34
4.1.3 Phân tích ............................................................................................. 34
4.1.4Lập chỉ mục ......................................................................................... 35
4.1.5 Tìm kiếm ............................................................................................ 35
4.2 Xây dựng chương trình thực nghiệm ........................................................ 35
4.2.1 Thu thập dữ liệu và tiền xử lý ............................................................ 36
4.2.2Tạo tài liệu........................................................................................... 36
4.2.3 Phân tích ............................................................................................. 37
4.2.4 Lập chỉ mục ........................................................................................ 37
4.2.5 Tìm kiếm ............................................................................................ 37
4.3 Đánh giá kết quả thực nghiệm .................................................................. 38
4.3.1 Kết quả ............................................................................................... 38
4.3.2 Đánh giá kết quả................................................................................. 40
4.3.2.1 Phương pháp đánh giá ................................................................. 40
4.3.2.2 Đánh giá ...................................................................................... 42

KẾT LUẬN ......................................................................................................... 46
TÀI LIỆU THAM KHẢO ................................................................................... 47
Phụ lục: Quy tắc viết biểu thức chính quy trong Java .................................... 48


DANH MỤC CÁC BẢNG
Bảng 2.1 Một số ví dụ biểu diễn chuỗi truy vấn bằng biểu thức chính quy trong
Java ...................................................................................................................... 15
Bảng 3.1 Lịch sử phát triển của Lucene .............................................................. 21
Bảng 3.2 Các lớp được sử dụng trong quy trình tìm kiếm.................................. 29
Bảng 4.1 Các phần mềm sử dụng cho chương trình thực nghiệm ...................... 35
Bảng 4.2 Các class trong chương trình thực nghiệm .......................................... 37
Bảng 4.3 Kết quả đánh giá trước khi bổ sung tính năng tìm kiếm theo tiếng Việt
............................................................................................................................. 43
Bảng 4.4 Kết quả đánh giá sau khi bổ sung tính năng tìm kiếm theo tiếng Việt 43


DANH MỤC CÁC HÌNH VẼ

Hình 2.1 Cấu trúc của chỉ mục ngược. .................................................................. 7
Hình 2.2 Một cây tìm kiếm nhị phân. ................................................................... 7
Hình 2.3 Một B-tree. ............................................................................................ 8
Hình 2.4 Một phần của chỉ mục quay ................................................................ 10
Hình 2.5 Ví dụ về danh sách các posting trong một chỉ mục 3-gram. ................ 11
Hình 2.6 Otomat đoán nhận ngôn ngữ sinh bởi 𝐸 = 𝑎𝑏 + 𝑏 ∗ 𝑏𝑎 ..................... 16
Hình 2.7 Otomat ứng với 𝑎𝑐𝑏𝑎 + 𝑏 ∗ trong giải thuật tìm kiếm dựa trên otomat
............................................................................................................................. 17
Hình 2.8 Quá trình tìm kiếm chuỗi sử dụng giải thuật tìm kiếm dựa trên otomat
............................................................................................................................. 18
Hình 2.9𝛵𝑙𝑒𝑥 khớp các từ với đặc điểm tương ứng của từ đó ............................ 19

Hình 2.10 FST tương ứng với truy vấn “s*food” ............................................... 20
Hình 2.11 Quá trình tìm kiếm chuỗi dựa trên FST với chuỗi đầu vào seafood .. 20
Hình 3.1 Quy trình lập chỉ mục trong Lucene .................................................... 24
Hình 3.2 Cấu trúc chỉ mục ngược trong Lucene ................................................. 25
Hình 3.3 Quy trình tìm kiếm ............................................................................... 28
Hình 4.1 Sơ đồ thực nghiệm ............................................................................... 33
Hình 4.2 Giả thiết cho tính toán độ chính xác và độ bao phủ ............................. 41
Hình 4.3 Cách tính độ chính xác ......................................................................... 42
Hình 4.4 Cách tính độ bao phủ............................................................................ 42


DANH MỤC CÁC TỪ VIẾT TẮT

Từ viết tắt
API
DFA
FA
FSM
FST
HTML
ID
IDE
JDK

Giải nghĩa
Giao diện lập trình ứng dụng
(Application Programming Interface)
Automat hữu hạn đơn định
(Deterministic Finite Automata)
Automat hữu hạn

(Finite Automata)
Máy hữu hạn trạng thái
(Finite State Machine)
Máy chuyển đổi hữu hạn trạng thái
(Finite state transducer)
Ngôn ngữ đánh dấu siêu văn bản
(HyperText Markup Language)
Định danh
(Identification)
Môi trường phát triển tích hợp
(Integreted Development Environment)
Bộ công cụ phát triển ứng dụng bằng ngôn ngữ lập trình Java
(Java Development Kit)


1
MỞ ĐẦU
1. Đặt vấn đề
Ngày nay, với sự ra đời của mạng Internet và sự phát triển nhanh chóng,
vượt bậc của mạng truyền thông, một khối lượng rất lớn các thông tin được cập
nhật và đưa lên mạng thường xuyên. Các thông tin là các tập tin có cấu trúc hoặc
phi cấu trúc, nằm rải rác ở nhiều nơi. Câu hỏi đặt ra làm thế nào để tìm được
đúng thông tin một cách nhanh chóng và hiệu quả nhất. Để đáp ứng yêu cầu đó,
đã có rất nhiều phương pháp tìm kiếm thông tin cũng như các công cụ tìm kiếm
thông tin ra đời như Google, Yahoo, Altavista, Bing…
Tuy nhiên, thông tin cần tìm kiếm là rất nhiều và đa dạng và nhu cầu tìm
kiếm thông tin của người dùng ngày càng cao nên việc nghiên cứu, tìm hiểu để
khám phá và hiểu biết sâu hơn về cách thu thập, lưu trữ, biểu diễn, tổ chức tìm
kiếm thông tin hiệu quả và nhanh nhất vẫn thực sự rất cần thiết.
Dựa trên nhu cầu trên rất nhiều kỹ thuật tìm kiếm cơ bản và nâng cao đã

được đưa ra giới thiệu và được áp dụng trong rất nhiều công cụ tìm kiếm phổ
biến hiện nay. Tuy nhiên, phạm vi nghiên cứu của luận văn chỉ dừng lại ở việc
giới thiệu những nét cơ bản nhất của các phương pháp tìm kiếm phổ biến hiện
nay, sau đó tập trung vào việc tìm hiểu phương pháp tìm kiếm theo ký tự đại
diện từ khái quát, giải thuật cho đến cài đặt thực tế với một thư viện tìm kiếm
mạnh mẽ là Lucene.
2. Mục tiêu nghiên cứu
Nghiên cứu của luận văn hướng tới các mục tiêu sau:





Tìm hiểu về tìm kiếm nói chung và tìm kiếm theo ký tự đại diện nói riêng.
Tìm hiểu các giải pháp tìm kiếm theo ký tự đại diện
Tìm hiểu giải pháp tìm kiếm theo ký tự đại diện của Lucene
Tiế n hành thực nghiê ̣m tim
̀ kiế m theo ký tự đa ̣i diê ̣n của Lucene cho tiế ng
Viê ̣t

3. Cấu trúc luận văn
Luận văn được chia thành 4 phần với các nội dung như sau:
Chƣơng 1 trình bày tổng quan về các phương pháp tìm kiếm. Các kiến
thức được trình bày bao gồm các phương pháp chung được sử dụng trong tìm
kiếm, đặc biệt là phương pháp tìm kiếm theo ký tự đại diện và ý nghĩa của nó về
mặt khoa học và thực tiễn nhằm mang lại những kiến thức căn bản nhất trong
lĩnh vực tìm kiếm.


2

Chƣơng 2Trình bày sâu hơn về kỹ thuật xử lý truy vấn và các giải thuật tìm
kiếm theo ký tự đại diện. Các kỹ thuật được trình bày trong chương này sẽ là cơ
sởlý thuyết cho việc tìm hiểu và cài đặt chương trình ứng dụng ở chương tiếp
theo.
Chƣơng 3 giới thiệu thư viện Lucene và tính năng tìm kiếm theo ký tự đại
diện của Lucene, từ đó vận dụng vào việc xây dựng chương trình thử nghiệm
tính năng tìm kiếm theo ký tự đại diện của Lucene.
Phần kết luận tổng kết những kết quảđạt được của luận văn và hướng
nghiên cứu tiếp theo.
.


3
Chƣơng 1. TỔNG QUAN
Chương đầu tiên của luận văn cung cấp cái nhìn tổng quan về tìm kiếm
thông tin trên Internet và những thách thức hiện nay đối với vấn đề này. Để giải
quyết những tốt những vấn đề gặp phải trong tìm kiếm thông tin rất nhiều
phương pháp tìm kiếm từ cơ bản đến nâng cao được đề xuất, trong đó có
phương pháp tìm kiếm theo ký tự đại diện. Các khái niệm cơ bản nhất của các
phương pháp này sẽ được trình bày một cách ngắn gọn nhất trong nội dung
chương 1.
1.1 Tổng quan về các phƣơng pháp tìm kiếm
Internet có thể được xem như là một kho thông tin khổng lồ và vô tận,
được cung cấp từ hàng triệu Website trên khắp thế giới, chứa đựng hầu như toàn
bộ kiến thức của nhân loại. Trên Internet người dùng có thể tìm được vô số
thông tin bổích và các kiến thức về mọi lĩnh vực từ khoa học cho đến lịch sử,
văn học… Tuy nhiên, nguồn tri thức đó lại không được sắp xếp theo một trật tự.
Vì vậy, trước một kho thông tin như thế nếu người dùng chưa có mục đích
tìm kiếm rõ ràng thì sẽ mất thời gian vì lượng thông tin quá nhiều. Thêm nữa
nếu không thành thạo, người dùng sẽ rất khó khăn trong việc tìm thấy thông tin

cần thiết trong lượng lớn kết quả tìm kiếm.
Chính vì thế phương pháp tìm kiếmthông tin trên Internet được xem là
một kỹ năng vô cùng quan trọng và cần thiết.
Các phương pháp tìm kiếm cơ bản cần phải kể đến ở đây gồm: Tìm kiếm
chính xác, tìm kiếm theo ký tự đại diện, tìm kiếm theo mệnh đề, tìm kiếm xấp xỉ
và tìm kiếm cụm từ. Trong tìm kiếm chính xác, chỉ những tài liệu chứa chính
xác từ khóa người dùng nhập vào được hiển thị. Còn trong trường hợp người
dùng không nhớ được chính xác từ khóa tìm kiếm, tìm kiếm theo ký tự đại diện
là một những giải pháp phù hợpđược sử dụng vì nó sử dụng các ký tự như “?”
hoặc “*” để đại diện cho không hoặc một ký tự bất kỳ hay một chuỗi ký tự bất
kỳ (gồm cả chuỗi có độ dài bằng 0). Tìm kiếm theo mệnh đề có sử dụng các toán
tử logic như AND, OR để liên kết các câu truy vấn đơn tạo thành một mệnh đề
tìm kiếm phức tạp hơn. Để tăng tính liên quan của các tài liệu được trả về thì tìm
kiếm cụm từ là một kỹ thuật hữu ích. Tìm kiếm xấp xỉ cũng là một kỹ thuật tìm
kiếm hay được sử dụng trong tìm kiếm thông tin, phương pháp này sẽ trả về kết
quả chứa thuật ngữ gần giống với thuật ngữ truy vấn đưa ra bởi người sử dụng.
Ngoài các phương pháp tìm kiếm cơ bản được trình bày ở trên, một số
phương pháp tìm kiếm nâng cao cũng được các công cụ tìm kiếm sử dụng nhằm


4
làm mịn hơn kết quả tìm kiếm: Tìm kiếm tập hợp, tìm kiếm theo trường xác
định.... Trong tìm kiếm theo tập hợp, kết quả tìm kiếm được hiển thị như các tập
hợp, và có thể kết hợp với các tìm kiếm khác hay các từ khóa khác. Tìm kiếm
theo trường cụ thể cho phép người dụng lựa chọn một trường cụ thể để thực hiện
tìm kiếm thay vì thực hiện tìm kiếm với tất cả các trường.
1.2Tổng quan về phƣơng pháp xử lý tìm kiếm theo ký tự đại diện
Truy vấn theo ký tự đại diện được sử dụng trong những tình huống sau
đây: (1) người dùng không chắc chắn về cách viết của một thuật ngữ truy vấn (ví
dụ, Sydney với Sidney, sẽ dẫn đến truy vấn theo ký tự đại diện S*dney); (2)

người dùngbiếtcó nhiều biến thể trong cách viết của một thuật ngữ (ví dụ,
colorvới colour); (3) người dùng tìm kiếm các tài liệu chứa các biến thể của một
thuật ngữ có thể nhận được thông qua giải thuật stemming, nhưng không chắc
chắn các công cụ tìm kiếm có thực hiện giải thuật stemming hay không (ví dụ,
judicial, với judiciary, sẽ dẫn đến truy vấn theo ký tự đại diện judicia*); (4)
người dùng không chắc chắn về cách viết đúng của một từ hay cụm từ nước
ngoài (ví dụ, truy vấn Universit* Stuttgart).
Các cơ sở dữ liệu, công cụ tìm kiếm khác nhau sẽ sử dụng các ký tự khác
nhau làm ký tự đại diện. Tuy nhiên, dấu * và dấu ? là các ký tự đại diện được sử
dụng phổ biến nhất. Trong phạm vi nghiên cứu của luận văn hai ký tự đại diện
phổ biến là dấu * và dấu ? sẽ được tìm hiểu.
 Dấu * đại diện cho chuỗi ký tự bất kỳ, gồm chuỗi có độ dài bằng 0. Ví
dụ:
o s*food tìm kiếm: seafood hoặc soyfood
o enzym* tìm kiếm: enzymehoặc enzymeshoặc enzymatichoặc enzymic
o Hof*man*tìm kiếmHofman hoặc Hofmann hoặc Hoffmanhoặc
Hoffmann
 Dấu ? đại diện cho không hoặc một ký tự bất kỳ. Ví dụ:
wom?n tìm kiếm: woman hoặc women.
 Trong một truy vấn tìm kiếm có thể sử dụng kết hợp các ký tự đại diện
khác nhau. Ví dụ:
organi?ation* tìm kiếm:organisation hoặc organisations hoặc
organisational hoặc organization hoặc organizations hoặc organizational
Các cơ sở dữ liệu, công cụ tìm kiếm khác nhau sẽ có những quy tắc khác
nhau trong việc tìm kiếm theo ký tự đại diện, sao cho việc thực hiện tìm kiếm
đạt hiệu quả nhất. Tuy nhiên, để có thể tận dụng tối đã những lợi ích mà kỹ thuật


5
tìm kiếm này mang lại có một số lưu ý khi thực hiện tìm kiếm theo ký tự đại

diện:




Nếu không chắc chắn về ký tự đại diện được sử dụng trong một cơ sở dữ
liệu hay một công cụ tìm kiếm, người dùng nên sử dụng phần trợ giúp
trong cơ sở dữ liệu hay công cụ tìm kiếm đang sử dụng để biết chính xác.
Các ký tự đại diện * có thể được sử dụng bên trong hay cuối truy vấn –
nhưng không nên sử dụng ở đầu truy vấn vì nó có thể làm chậm đáng kể
tốc độ tìm kiếm. Ví dụ, có thể dùng sul*ur nhưng không nên dùng *ploid.

1.3Ý nghĩa khoa học và thực tiễn của đề tài
1.3.1 Ý nghĩa khoa học
 Tìm kiếm theo ký tự đại diện là bài toán cổ điển,được nhiều tác giả trên
thế giới quan tâm và nghiên cứu như: GS.TS. Christopher D. Manning
của trường Đại học Stanford, Prabhakar Raghavan làm việc tại Google, và
GS. TS. Hinrich Schützecủa trường Đại học Munich…
 Luận văn đã đi sâu tìm hiểu về các giải thuật tìm kiếm theo ký tự đại diện
và cho thấy hiệu quả của kỹ thuật tìm kiếm này.
 Đề tài cung cấp cơ sở, nền tảng khoa học cho việc tiếp tục nghiên cứu và
xây dựng một công cụ tìm kiếm hoàn chỉnh.
1.3.2 Ý nghĩa thực tiễn
Với các công cụ tìm kiếm hiện nay, người dùng sẽ nhập từ khóa tìm kiếm,
sau khi đối sánh các công cụ sẽ trả về các kết quả có liên quan đến từ khóa.
Trong trường hợp người dùng nhập chính xác từ khóa thì kết quả tìm kiếm có
thể không bao gồm tất cả các tài liệu như ý muốn của người dùng (do vấn đề từ
đồng nghĩa, ví dụ color và colour). Thậm chí, có những trường hợp người dùng
không thể nhớ chính xác từ khóa mình cần nhập (reluctanthayreluctent), hoặc
muốn mở rộng kết quả tìm kiếm xuất phát từ một số ký tự ban đầu (ví dụ, muốn

tìm các từ computer, computing, computation xuất phát từcomput), đặc biệt là
trong các ngôn ngữ đa âm như tiếng Anh…Trong những trường hợp này tìm
kiếm theo ký tự đại diện là một phương pháp hiệu quả.
Viê ̣c không nhớ đươ ̣c chính xác mô ̣t từ là điề u rấ t hay xảy ra khi người
dùng tìm kiếm các tài liệu tiếng nước ngoài.


6
Chƣơng 2. CÁC GIẢI PHÁP CÀI ĐẶT TÌM KIẾM THEO KÝ TỰ ĐẠI
DIỆN
Chương 2 tiếp tục nghiên cứu sâu hơn những nội dung mặt lý thuyết về
tìm kiếm theo ký tự đại diện đã trình bày trong chương 1 của luận văn. Nội dung
chương 2 giới thiệu cấu trúc chỉ mục ngược và cấu trúc hỗ trợ lưu trữ và tìm
kiếm thuật ngữ trong từ điển của chỉ mục ngược một cách hiệu quả, dựa trên
những cấu trúc này các giải pháp tìm kiếm theo ký tự đại diện được trình bày
bao gồm: chỉ mục quay, chỉ mục k-gram, và các giải pháp dựa trên otomat.
2.1 Giới thiệu cấu trúc chỉ mục ngƣợc
Chỉ mục (index) là một cách bố trí có hệ thống của các chủ đề hay các mô
tả của các tài liệu để tạo điều kiện thuận lợi cho tìm kiếm tài liệu hay một phần
của tài liệu. Chỉ mục bao gồm các thành phần chính: (a) các thuật ngữ (term) đại
diện cho các chủ đề hay các mô tả của các đơn vị tài liệu; (b) một cú pháp
(syntax) kết hợp các thuật ngữ trong các tiêu đề hay các mệnh đề tìm kiếm để
đại diện cho các chủ đề, các mô tả hay các truy vấn phức tạp; (c) các tham chiếu
chéo (cross-reference) hay các phương thức liên kết giữa các thuật ngữ đồng
nghĩa, tương đương, mở rộng, các thuật ngữ có nghĩa hẹp hơn hay các thuật ngữ
có liên quan khác; (d) một thủ tục liên kết phần tiêu đềhay các mệnh đề tìm
kiếm với các đơn vị tài liệu cụ thể hay các đại diện tài liệu; và (e) một thứ tự hệ
thống của các tiêu đề hay một thủ tục tìm kiếm.
Chỉ mục ngược (inverted index) là chỉ mục trong đó các thuật ngữ có liên
kết với các phần tài liệu chứa nó. Ý tưởng chính của chỉ mục ngược được giới

thiệu trong hình 2.1. Một từ điển (dictionary) là một cấu trúc dữ liệu được sử
dụng để lưu các thuật ngữ. Mỗi thuật ngữ sẽ có một danh sách để lưu lại các tài
liệu (thường là định danh Identification(ID) của tài liệu) có chứa thuật ngữ đó
gọi là danh sách các posting (postings list). Mỗi phần tử trong danh sách được
gọi là một posting.Từ điển cho chỉ mục ngược thường được lưu trong bộ nhớ
trong, gồm một số thông tin quan trọng như: các thuật ngữ, số lượng tài liệu
chứa thuật ngữ và danh sách các posting…, với các con trỏ trỏ đến các danh
sách posting được lưu trên ổ đĩa. Hình 2.1 được sắp xếp theo thứ tự từ điển và
mỗi danh sách các posting được sắp xếp theo ID của tài liệu.
Bởi vì có nhiều biến thể của các chỉ mục ngược sẽ phát triển trong chương
này, nêncụm từ chỉ mục ngược tiêu chuẩn được dùng để chỉ cấu trúc chỉ mục
được đề cập trong mục 2.1. Chi tiết về chỉ mục ngược và các biến thể của chỉ
mục ngược được trình bày trong [3,12].


7
brutus

1

2

4

11 31 45 173 174

caesar

1


2

4

5

2

calpurina

6

16

57

132



31 54 101

.
.

.
Dictionary

Postings
Hình 2.1 Cấu trúc của chỉ mục ngược.


Với một chỉ mục ngược và một truy vấn cho trước,nhiệm vụ đầu tiên là
xác định xem mỗi thuật ngữ truy vấn có tồn tại trong từ điển hay không, nếu có
xác định các con trỏ đến các posting tương ứng.
Một giải phápcho phép lưu trữ và tìm kiếm các thuật ngữ trong từ điển
hiệu quả sẽ góp phần cải thiện hiệu quả tìm kiếm nói chung. Có hai lớp giải
pháp mở rộng được đề xuất là bảng băm và cây tìm kiếm, tuy nhiên nếu số
lượng các thuật ngữkhông ngừng tăng lên thì kích thước của bảng băm là một
hạn chế, do đó cây tìm kiếm là một giải pháp tối ưu hơn khi tìm kiếm các thuật
ngữ trong từ điển.
Root
a-m
a-hu

n-z

hy-m

. . .

n-sh

si-z

.

Hình 2.2 Một cây tìm kiếm nhị phân.Trong ví dụ này nhánh tại gốc phân chia từ
vựng thành hai cây con, cây con thứ nhất gồm các chữ cái từ a đến m, cây con
thứ hai là phần còn lại.
Cây tìm kiếm được dùng phổ biến nhất là cây nhị phân, trong đó mỗi nút

bên trong của cây có hai con. Việc tìm kiếm một thuật ngữ bắt đầu ở gốc của
cây. Mỗi nút bên trong (bao gồm cả gốc) đại diện cho một điều kiện nhị phân,


8
tùy theo kết quả trả về mà việc tìm kiếm được tiếp tục thực hiện đối với một
trong hai cây con bên dưới nút đó. Hình 2.2 đưa ra ví dụ về một cây tìm kiếm
nhị phân được sử dụng cho một từ điển. Một tìm kiếm được đánh giá là hiệu quả
(có độ phức tạp về thời gian là O(log M)) khi cây được duy trì cân bằng trong
suốt quá trình tìm kiếm. Một cây nhị phân được gọi là cân bằng khi số các nút
dưới hai cây con của nút bất kỳ hoặc là bằng nhau hoặc chỉ sai khác nhau một.
Vấn đề chính ở đây là việc tái cân bằng: khi các thuật ngữ được chèn vào hoặc
bị xóa từ các câytìm kiếm nhị phân, nó cần phải được tái cân bằng để duy trì độ
cân bằng thích hợp.
Một giải pháp để giảm thiểu sự tái cân bằng là cho phép số lượng cây con
dưới một nút trong thay đổi trong một khoảng cố định. Một cây tìm kiếm thường
được sử dụng cho một từ điển là B-tree–là cây tìm kiếm trong đó mỗi nút
trongcó số cây con nằm trong khoảng [a, b], trong đó a và b là các số nguyên
dương thích hợp; Hình 2.3 cho thấy một ví dụ với a = 2 và b = 4. Mỗi nhánh
của một nút trong đại diện cho một dãy các chuỗi ký tự, như trong ví dụ cây nhị
phân của hình 2.2. Một B-tree có thể được xem như là sự "thu gọn" nhiều mức
của cây nhị phân thành một mức; Trong trường hợp các từ điển được lưu trên
đĩa thìviệc thu gọncây nhị phân sẽ giúp tìm nạp trước các điều kiện nhị phân sắp
xảy ra. Trong trường hợp như vậy, các số nguyên a và b được xác định bởi kích
thước của các khối đĩa.

Hình 2.3 Một B-tree. Trong ví dụ này mỗi nút trong có từ 2 đến 4 con.
Tìm kiếm thuật ngữ trong từ điển là hoạt động tất yếu trong quá trình tìm
kiếm, trong phần tiếp theo, cây tìm kiếm trình bày ở trên sẽ làcấu trúc hiệu quả
giúp tìm kiếm các thuật ngữ truy vấn khác nhau tương ứng với truy vấn chứa ký

tự đại diện ban đầu trong từ điển. Sau đó, quá trình tìm kiếm trên cấu trúc chỉ
mục ngược tiêu chuẩn mới được thực hiện.


9
2.2Tìm kiếm theo ký tự đại diện
Phần này nghiên cứu các ý tưởng của một truy vấn theo ký tự đại diện: một
truy vấn như * a * e * i * o * u *, tìm các tài liệu có chứa tất cả năm nguyên âm
theo thứ tự như trên. Các dấu * thể hiện cho các chuỗi ký tự bất kỳ (bao gồm
chuỗi có độ dài bằng 0). Người dùngđưa ra các câu truy vấntheo ký tự đại diện
khi họ không chắc chắn về cách đánh vần một thuật ngữ truy vấn, hoặc tìm kiếm
các tài liệu có chứa các biến thể của một thuật ngữ truy vấn; Ví dụ, truy vấn
automat* sẽ tìm kiếm các tài liệu có chứa bất kỳ các thuật ngữ, automatic,
automation and automated.
Trong tìm kiếm theo ký tự đại diện, ký tự đại diện có thể nằm ở cuối truy
vấn (trailing wildcard query), có thể nằm đầu truy vấn (leading wildcard query),
và trong trường hợp tổng quát, ký tự đại diện có thể nằm ở vị trí bất kỳ trong
truy vấn. Tùy theo vị trí của ký tự đại diện, các kỹ thuật xử lý sẽ được giới thiệu
trong các nội dung tiếp theo.
Truy vấn mon*, ký tự * xuất hiện chỉ một lần, ở cuối truy vấn. Một cây
tìm kiếm trên từ điển là một cách hiệu quả để xử lý các truy vấn có ký tự đại
diện theo sau: thực hiện duyệt cây từ gốc lần lượt theo các ký tự m, o và n, để có
thể liệt kê tập Wchứa các thuật ngữ trong từ điển có tiền tố là mon. Cuối cùng, |
W | được sử dụng để tìm kiếm trên chỉ mục ngược tiêu chuẩn giúptìm được tất
cả các tài liệu có chứa bất kỳ thuật ngữ nào trong W.
Đối với các truy vấn có ký tự đại diệnnằm đầu truy vấn, ví dụ *mon. Một
B-tree ngược (reverse B-tree) với từ điểnlà cây trong đó mỗi đường đi từ gốc tới
lá của B-tree tương ứng với một thuật ngữ trong từ điển được viết ngược. Theo
đó, thuật ngữ lemon, trong B-tree, được đại diện bởi đường đi: gốc-n-o-m-e-l.
Để liệt kê tất cả các thuật ngữR trong từ vựng với một tiền tố đã cho cần thực

hiện duyệt cây B-tree ngượcbắt đầu từ gốc.
Trong thực tế, ta có thể xử lý các truy vấn theo ký tự đại diện tổng quát,
có một ký tự * duy nhất, như se*monbằng việc sử dụng kết hợp một B-tree
thường với một B-tree ngược. Trong trường hợp tổng quát này, một B-tree
thường được sử dụng để liệt kê tập Wcác thuật ngữ của từ điển bắt đầu với tiền
tố se, sau đó, một B-tree ngược sẽ được sử dụng để liệt kê tập R các thuật ngữ
kết thúc với hậu tốmon. Tiếp theo, lấy kết quả phép giao W ∩ Rcủa hai tập hợp,
để thu được tập các thuật ngữ bắt đầu với tiền tố sevà kết thúc với hậu tốmon.
Cuối cùng, một chỉ mục ngược tiêu chuẩn được sử dụng để tìm tất cả các tài liệu
có chứa các thuật ngữ trong tập hợp là kết quả của phép giao này.


10
Ngoài cách sử dụng kết hợp một B-tree thường và một B-tree ngược để
xử lý các truy vấn theo ký tự đại diện tổng quát, còn có những kỹ thuật xử lý các
truy vấn theo ký tự đại diện tổng quát hiệu quả khác như sử dụng cấu trúc chỉ
mục quay và chỉ mục k-gram. Cả hai kỹ thuật này đều chia sẻ một chiến lược
chung: biểu diễn truy vấn theo ký tự đại diện đã cho qw như một truy vấn logic
(Boolean query) Q trên một chỉ mục có cấu tạo đặc biệt, vì thế mà câu trả lời
cho Q là một tập bao gồm cả tập các thuật ngữ là kết quả của truy vấn qw, sau
đó, thực hiện kiểm tra từng thuật ngữ trong câu trả lời của Qđể loại bỏ các thuật
ngữ không phù hợp với qw. Khi đó, thu được các thuật ngữ phù hợp với qwđể có
thể tìm kiếm với chỉ mục ngược tiêu chuẩn.
2.2.1 Chỉ mục quay
Chỉ mục đặc biệt đầu tiên cho các truy vấn theo ký tự đại diện tổng quát là
chỉ mụcquay (permuterm index), một dạng của chỉ mục ngược [3]. Đầu tiên, một
ký tự đặc biệt $ được thêm vào cuối truy vấn, để đánh dấu sự kết thúc của một
thuật ngữ. Ví dụthuật ngữ hellosẽ thànhhello$. Tiếp theo, thực hiện xây dựng
một chỉ mục quay, trong đó tất cả các phép quay khác nhau của mỗi thuật ngữ
(đã được thêm $) đều được liên kết đến thuật ngữ gốc. Hình 2.4cung cấp một ví

dụ về chỉ mục quay với thuật ngữ hello.
hello$
ello$h
llo$he

hello

lo$hel

...
.

Hình 2.4 Một phần của chỉ mục quay
Tập hợp các thuật ngữ đã được quay trong chỉ mục quay được gọi là từ
điển hoán vị.
Xét truy vấn theo ký tự đại diện m*n. Thực hiện quaytruy vấn (sau khi đã
thêm $) sao cho ký tự * xuất hiện ở cuối của chuỗi. Theo đó,truy vấn ban đầu sẽ
trở thành n$m*. Tiếp theo, thực hiện tìm kiếm chuỗi n$m* trong chỉ mục
quay(thông qua một cây tìm kiếm), kết quả tìm kiếm dẫn đến các phép quaycủa
các thuật ngữ man và moron.
Các thuật ngữ gốc phù hợp với truy vấn theo ký tự đại diện ban đầu sẽ
được xác định trong chỉ mục quay, và sau đó được tìm kiếm trong chỉ mục


11
ngược tiêu chuẩn để xác định các tài liệu phù hợp.Nội dung phía trên trình bày
cách xử lý truy vấn theo ký tự đại diện tổng quát với duy nhất một ký tự * trong
câu truy vấn. Tuy nhiên,trong câu truy vấn có thể chứa nhiều hơn một ký tự*
như fi*mo*er. Trong trường hợp này, việc đầu tiên là thực hiện liệt kê các thuật
ngữ có trong từ điển ứng với er$fi*. Không phải tất cả các thuật ngữnày đều có

chuỗi mo ở giữa. Việc lọc ra những thuật ngữ này có thể thực hiệnbằng
phươngpháp liệt kê vét cạn, kiểm tra sự xuất hiện của mo trong mỗi thuật ngữ
đó. Trong ví dụ này, thuật ngữ fishmongerlà phù hợpcònfilibustersẽ bị loại. Các
thuật ngữ phù hợp được tìm kiếm trongchỉ mục ngược tiêu chuẩn để có được kết
quả tìm kiếm cuối cùng. Một nhược điểm củachỉ mục quayđó là từ điển của nó
quá lớn, vì nó thực hiện tất cả các phép quayđối với mỗi thuật ngữ.
2.2.2 Chỉ mục k-gram
Mặc dùchỉ mục quay đơn giản, nhưng nó có thể dẫn đến một sự bùng nổ
đáng kể về số lượng phép quay trên một thuật ngữ.Ví dụ, với từ điển chứa các
thuật ngữ tiếng Anh, sự gia tăng không gian lưu trữ có thể lên tới gần mười lần.
Nội dung tiếp theo sẽ trình bày kỹ thuật thứ hai, đó là chỉ mụck-gram (k-gram
index) [3], dành cho việc xử lý các truy vấn theo ký tự đại diện. Một k-gram là
một chuỗi gồmk ký tự. Do đó, cas, astvà stl đều là 3-gram xuất hiện trong castle.
Ký tự đặc biệt $ đượcsử dụng để biểu thị sự khởi đầu hay kết thúc một thuật
ngữ, do đó, tập hợp đầy đủ của 3-gram được phát sinh từ castlelà: $ca, cas, ast,
stl, tle, le$.
Từ điển trong một chỉ mụck-gramsẽ chứa tất cả các k-gram xuất hiện
trong bất kỳ thuật ngữ nào trong từ điển của chỉ mục ngược tiêu chuẩn. Mỗi
danh sách postingtrỏ từ một k-gram tới tất cả các thuật ngữ từ vựng chứa k-gram
đó. Ví dụ, 3-gram etr sẽ trỏ tới các thuật ngữ từ vựng như metric và retrieval.
Một ví dụ được đưa ra trong hình 2.5về danh sách các posting trong một chỉ
mục 3-gram.
etr

beetroot

metric

petrify


retrieval

Hình 2.5 Ví dụ về danh sách các posting trong một chỉ mục 3-gram.
Ví dụ được trình bày bên dưới cho thấy ưu điểm của chỉ mục k-gram trong
việc xử lý các truy vấn theo ký tự đại diện. Xét truy vấn theo ký tự đại diện re*ve,
để tìm kiếm các tài liệu có chứa bất kỳ thuật ngữ nào bắt đầu bằng re và kết thúc
bằng ve. Theo đó, thực hiện truy vấn logic$re AND ve$. Truy vấn này được tìm
kiếm trong chỉ mục 3-gram và trả lại một danh sách các thuật ngữ phù hợp như


12
relive, remove và retrieve. Mỗi thuật ngữ phù hợp sau đó sẽ được tìm kiếm trong
chỉ mục ngược tiêu chuẩn để trả lại các tài liệu phù hợp với truy vấn ban đầu.
Tuy nhiên, có một khó khăn trong việc sử dụng chỉ mục k-gram, đó là nó
đòi hỏi thêm một bước xử lý. Xem xét việc sử dụng chỉ mục 3-gram đã được mô
tả ở trên cho truy vấn red*. Theo quá trình mô tả ở trên, đầu tiên một truy vấn
logic$re AND reddược đưa ra với chỉ mục 3-gram. Điều này cho phép tìm ra các
thuật ngữ phù hợp như retired, các thuật ngữ này chứa sự kết hợp của cả hai 3gram là $revàred, nhưng không phù hợp với truy vấn theo ký tự đại diện
red*ban đầu.
Vấn đề này được giải quyết bằng cách bổ sung một bước gọi là postfiltering, theo đó từng thuật ngữ được liệt kê bởi truy vấn logic trên chỉ mục 3gram sẽ được kiểm tra tính phù hợp so với truy vấn red* ban đầu. Đây là một
hoạt động so khớp chuỗi đơn giảngiúploại bỏ các thuật ngữ như retiredvì không
phù hợp với truy vấn ban đầu. Các thuật ngữ còn lại được tìm kiếm trong chỉ
mục ngược tiêu chuẩn.
Có thể thấy rằng, các kỹ thuật được trình bày ở mục này có thể xử lý hiệu
quả các truy vấn theo ký tự đại diện. Tuy nhiên, chi phí cho việc xử lý lại khá
tốn kém do phải sử dụng các toán tử logic để kết hợp các truy vấn hay phải tìm
kiếm bổ sung trong chỉ mục đặc biệt, lọc và cuối cùng là tìm kiếm trong chỉ mục
ngược tiêu chuẩn.
Nội dung phần tiếp theo sẽ trình bày giải thuật tìm kiếm nhanh đối với các
truy vấn (thường được đại diện bởi các chuỗi tìm kiếm). Giải thuật tìm kiếm sử

dụng otomat và máy chuyển đổi hữu hạn trạng thái cho phép thực hiện tìm kiếm
nhanh chóng đối với cả những chuỗi tìm kiếm có chứa ký tự đại diện.
2.2.3Giải pháp tìm kiếm dựa trên Otomat
Trong phần này, một giải thuật tìm kiếm chuỗi sẽ được trình bày, theo đó
chuỗi tìm kiếm ban đầu (gồm cả chuỗi có chứa ký tự đại diện) sẽ được biểu diễn
bởi một biểu thức chính quy, sau đó từ biểu thức chính quy, một otomat hữu hạn
sẽ được xây dựng, từ đó có thể xác định các từ phù hợp với chuỗi truy vấn ban
đầu.
2.2.3.1 Giới thiệu một số khái niệm liên quan đến otomat
Trước khi tìm hiểu cách biểu diễn một truy vấn bằng biểu thức chính quy,
cũng như cách chuyển đổi từ biểu thức chính quy sang otomat, một số khái niệm
liên quan đến biểu thức chính quy và otomat sẽ được trình bày [1]:


13
 Bảng chữ cái: Tập Σ khác rỗng gồm hữu hạn hay vô hạn các ký hiệu được
gọi là bảng chữ cái. Mỗi phần tử𝑎 ∈ Σđược gọi là một chữ cái hay một
ký hiệu.
 Từ: Giả sử có bảng chữ cái Σ = {𝑎1 , 𝑎2 , … , 𝑎𝑚 }, một dãy các chữ cái
𝛼 = 𝑎𝑖1 𝑎𝑖2 … 𝑎𝑖𝑡 , với 𝑎𝑖𝑗 ∈ Σ(1 ≤ 𝑗 ≤ 𝑡) được gọi là một từ hay một xâu
trên bảng chữ cái Σ. Xâu không có chữcái nào được gọi là từrỗng (xâu
rỗng) và được ký hiệu là 𝜀.
Tập mọi từ trên bảng chữ cáiΣđược ký hiệu là Σ ∗ , còn tập mọi từ khác
rỗng trên bảng chữ cái Σ được ký hiệu là Σ +.
 Ngôn ngữ: Cho bảng chữ cái 𝛴, mỗt tập con 𝐿 ⊆ 𝛴 ∗ được gọi là một ngôn
ngữ hình thức (hay ngôn ngữ) trên bảng chữ cái 𝛴.
Tập rỗng, ký hiệu ∅, là một ngôn ngữ không gồm một từ nào và được gọi
là ngôn ngữ rỗng.
 Phép ghép tiếp:
o Phép ghép tiếp của hai từ𝛼 = 𝑎1 𝑎2 … 𝑎𝑚 và từ𝛽 = 𝑏1 𝑏2 … 𝑏𝑛 trên

bảng chữ cái 𝛴, là từ𝛾 = 𝑎1 𝑎2 … 𝑎𝑚 𝑏1 𝑏2 … 𝑏𝑛 trên bảng chữ cái 𝛴. Kí
hiệu: 𝛾 = 𝛼. 𝛽 (hay 𝛾 = 𝛼𝛽). Theo định nghĩa ta có:
𝜀 𝑘ℎ𝑖 𝑛 = 0,
𝑛
𝜔 =
𝜔 𝑘ℎ𝑖 𝑛 = 1,
𝑛−1
𝜔 𝜔 𝑘ℎ𝑖 𝑛 > 1.
o Cho hai ngôn ngữtrên bảng chữ𝛴1 và 𝐿2 trên bảng chữ𝛴2 .Ghéptiếp
hay tích của hai ngôn ngữ𝐿1 và 𝐿2 là một ngôn ngữ trên bảng chữ
𝛴1 ∪ 𝛴2 , ký hiệu 𝐿1 𝐿2 , đuợc xác định bởi: 𝐿1 𝐿2 = {𝛼𝛽 | 𝛼 ∈
𝐿1 𝑣à 𝛽 ∈ 𝐿2 }.
 Phép hợp: Hợp của hai ngôn ngữ𝐿1 và 𝐿2 trên bảng chữ cái Σ, ký hiệu𝐿1 ∪
𝐿2 , là một ngôn ngữ trên bảng chữ cái Σ, đó là tập từ:
𝐿 = 𝜔 ∈ Σ ∗ 𝜔 ∈ 𝐿1 ℎ𝑜ặ𝑐 𝜔 ∈ 𝐿2
 Phép lặp: Cho ngôn ngữ𝐿 trên bảng chữ cái 𝛴, khi đó:
𝑛
o Tập từ{𝜀} ∪ 𝐿 ∪ 𝐿2 ∪ … ∪ 𝐿𝑛 ∪ … = ∞
𝑛=0 𝐿 được gọi là ngôn ngữ
lặp của ngôn ngữ𝐿, (hay bao đóng ghép của ngôn ngữL), ký hiệu 𝐿∗ .
𝑛
o Tập từ𝐿 ∪ 𝐿2 ∪ … ∪ 𝐿𝑛 ∪ … = ∞
𝑛 =1 𝐿 được gọi là ngôn ngữ lặp cắt
của ngôn ngữ𝐿, ký hiệu 𝐿+ .
Ví dụ: Xét hai ngôn ngữ trên bảng chữ𝛴 = {𝑎}:
𝐿1 = {𝑎2𝑛 | 𝑛 ≥ 1},
𝐿2 = {𝑎5𝑛+3 | 𝑛 ≥ 0}.
Khi đó, ta có 𝐿1 = {𝑎2 }+ , 𝐿2 = {𝑎5 }∗ {𝑎3 }.



14
 Ngôn ngữ chính quy
Cho bảng chữ cái 𝛴 = {𝑎1 , 𝑎2 , … , 𝑎𝑛 }, khi đó ngôn ngữ chính quy
(regular languages)được định nghĩa đệ quy như sau:
i) Các ngôn ngữ∅ và {𝑎𝑖 }(𝑖 = 1, 2, … , 𝑛)được gọi là các ngôn ngữ chính
quy trên bảng chữ cái 𝛴.
ii) Nếu 𝑅 và 𝑆 là hai ngôn ngữ chính quy trên bảng chữ cái 𝛴thì 𝑅 ∪ 𝑆;
𝑅. 𝑆; 𝑅∗ (hay 𝑆 ∗ ) là các ngôn ngữ chính quy trên bảng chữ cái 𝛴.
iii) Không có các ngôn ngữ chính quy nào khác trên bảng chữ cái 𝛴 ngoài
các ngôn ngữ chính quy được định nghĩa như trên.
 Biểu thức chính quy
Cho bảng chữ cái Σ = {𝑎1 , 𝑎2 , … , 𝑎𝑚 }, khi đó biểu thức chính quy
(regular expresions)được định nghĩa đệ quy như sau:
i) ∅ và 𝑎 (với 𝑎 ∈ 𝛴) là các biểu thức chính quy trên bảng chữ cái 𝛴 biểu
diễn ngôn ngữ∅ và ngôn ngữ{𝑎}
ii) Nếu 𝑟 và 𝑠 là hai biểu thức chính quy biểu diễn các ngôn ngữ chính
quy 𝑅 và 𝑆 trên bảng chữ cái𝛴 thì:
o 𝑟 + 𝑠 là biểu thức chính quy trên bảng chữ cái 𝛴 biểu diễn ngôn
ngữ𝑅 ∪ 𝑆
o 𝑟. 𝑠 là biểu thức chính quy trên bảng chữ cái 𝛴 biểu diễn ngôn
ngữ𝑅. 𝑆
o 𝑟 ∗ (hay 𝑠 ∗ ) là biểu thức chính quy trên bảng chữ cái 𝛴 biểu diễn
ngôn ngữ𝑅∗ (hay 𝑆 ∗ )
iii) Không có các biểu thức chính quy nào khác trên bảng chữ cái 𝛴 ngoài
các biểu thức chính quy được định nghĩa như trên.
Thứ tự của ba phép toán trong biểu thức chính quy là : *, . , +
 Otomat hữu hạn trạng thái
Một Otomat được sử dụng để đoán nhận ngôn ngữ, có thể được định
nghĩa là một bộ năm:
𝐴 =< 𝑄, Σ , 𝛿, 𝑞0 , 𝐹 >,

trong đó:
o 𝑄 là tập khác rỗng các trạng thái;
o Σ là một bảng chữ cái, gọi là bảng chữ cái đầu vào;
o 𝛿 được gọi là hàm chuyển trạng thái (hay hàm chuyển);
o 𝑞0 ∈ 𝑄, được gọi là trạng thái bắt đầu;
o 𝐹 ⊆ 𝑄, được gọi là tập các trạng thái kết thúc.


15
Nếu số trạng thái trong 𝑄 là hữu hạn thì otomat được gọi là một otomat
hữu hạn trạng thái Finite Automaton(FA) hay máy hữu hạn trạng thái
Finite State Machine(FSM).
Otomat hữu hạn trạng thái đơn định Deterministic Finite Automata(DFA),
trong đó, ứng với mỗi ký hiệu vào có thể xác định duy nhất phép chuyển,
khi đó hàm chuyển có dạng 𝛿: 𝐷 → 𝑄, là một ánh xạ từ 𝐷 vào 𝑄, trong đó
𝐷 ⊆ 𝑄 × Σ.
Một FA nói chung có thể được biểu diễu bằng một đồ thị có hướng (đồ thị
chuyển) với vòng tròn đại diện cho các trạng thái, trạng thái bắt đầu được biểu
thị bằng một cung vào không có nhãn, trạng thái kết thúc được biểu thị bằng một
vòng tròn kép, nhãn của cung là một ký hiệu vào đại diện cho một phép chuyển,
tức là nếu 𝑎 ∈ Σ và từ trạng thái 𝑞1 chuyển sang trạng thái 𝑞2 theo hàm chuyển
𝛿(𝑞1 , 𝑎) = 𝑞2 thì sẽ có một cung từđỉnh 𝑞1 tới đỉnh𝑞2 được gán nhãn a.
2.2.3.2 Biểu diễn truy vấn theo ký tự đại diện dƣới dạng biểu thức chính
quy và quy tắc chuyển đổi từ biểu thức chính quy sang otomat
Dựa trên những khái niệm đã trình bày ở trên, một biểu thức chính quy có
thể được xem là trường hợp tổng quát của một truy vấn theo ký tự đại diện trên
cùng một bảng chữ cái. Do đó, một truy vấn chứa ký tự đại diện hoàn toàn có
thể được biểu diễn bằng một biểu thức chính quy, trong đó các ký tự đại diện sẽ
tương ứng với phép lặp, phép hợp,…trong biểu thức chính quy.Bảng 2.1 đưa ra
một số ví dụ về biểu thức chính quy biểu diễn cho các truy vấn theo ký tự đại

diện với ngôn ngữ lập trình Java.
Bảng 2.1 Một số ví dụ biểu diễn chuỗi truy vấn bằng biểu thức chính quy trong
Java
STT
1
2
3
4
5
6
7

Chuỗi truy vấn
gcagagag (𝑔𝑐(𝑎𝑔)3 )
aaabb
aaaab
abbba
me*el
automat*
colo?r

Biểu thức chính quy
𝑔𝑐 𝑎𝑔 {3}
𝑎 3 𝑏{2}
𝑎+𝑏
𝑎𝑏 + 𝑏 ∗ 𝑏𝑎
𝑚𝑒.∗ 𝑒𝑙
^𝑎𝑢𝑡𝑜𝑚𝑎𝑡.∗
𝑐𝑜𝑙𝑜? 𝑟


Sau khi truy vấn theo ký tự đại diện được biểu diễn bằng biểu thức chính
quy, một otomattương ứng có thể được xây dựng từ biểu thức chính quy dựa
theo một số giải thuật, giải thuật củaBrzozowski[4] là một giải thuật có thể được


16
sử dụng trong trường hợp này. Giải thuật của Brzozowski dựa trên khái niệm về
dẫn xuất của một biểu thức chính quy 𝐸 từ một ký tự vào 𝑎, ký hiệu là 𝑎−1 𝐸 để
xây dựng trực tiếp một otomat hữu hạn đơn định 𝐷 đoán nhận 𝐿(𝐸).
Cuối cùng, otomat sẽ được sử dụng để tìm kiếm các từ phù hợp với truy vấn
theo ký tự đại diện ban đầu.
Ví dụ: Cho chuỗi truy vấn𝑝 = 𝑎𝑏𝑎𝑏𝑏𝑎
 Biểu thức chính quy tương ứng: 𝐸 = 𝑎𝑏 + 𝑏 ∗ 𝑏𝑎
 Otomat tương ứng được xây dựng dựa trên giải thuật của Brzozowski
đoán nhận ngôn ngữ 𝐿(𝐸).
𝑏
q1
𝑎

q0
𝑏

𝑏

q2

q3
𝑎

𝑏

Hình 2.6 Otomat đoán nhận ngôn ngữ sinh bởi 𝐸 = 𝑎𝑏 + 𝑏 ∗ 𝑏𝑎
trong đó, 𝑞0 = 𝐸, các trạng thái khác là dẫn xuất của 𝐸(trong đó, 𝑞1 =
𝑏 𝑎𝑏 + 𝑏 ∗ 𝑏𝑎, 𝑞2 = 𝑎𝑏 + 𝑏 ∗ 𝑏𝑎 + 𝑎, 𝑞3 = 𝑏 𝑎𝑏 + 𝑏 ∗ 𝑏𝑎 + 1).
Hiện nay, rất nhiều giải thuật đã được thiết kế cho nhiệm vụtìm kiếm các
chuỗi (từ, xâu) phù hợp với một chuỗi tìm kiếm cho trước dựa trên otomat. Phần
tiếp theo sẽ trình bàyvề giải thuật tìm kiếm dựa trên otomatvà cho thấy hiệu tìm
kiếm của giải thuật này.
Giải thuật được trình bày dưới đây sẽ tìm kiếm và đưa ra tất cả những lần
xuất hiện của một chuỗi (string) (tổng quan hơn được gọi là mẫu (pattern))
trong một văn bản (text). Một mẫu tìm kiếm được biểu diễn bởi 𝑥 = [0. . 𝑚 − 1],
với chiều dài là 𝑚. Một văn bản được biểu diễn bởi 𝑦 = [0. . 𝑛 − 1], với chiều
dài là 𝑛. Cả hai chuỗi đều được xây dựng trên một tập hữu hạn các ký tự được
gọi là một bộ chữ cái (alphabet) ∑ có kích thước là 𝜎.
2.2.3.3Giải pháp tìm kiếm dựa trên Otomat
Mô tả
Trong giải thuật tìm kiếm dựa trên otomat [2], một otomat được xây dựng
dựa trên chuỗi tìm kiếm𝑥. Quá trình tìm kiếm bắt đầu từ trạng thái bắt đầu, tùy


×