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
Trang 1ĐẠ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
Trang 2ĐẠ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
Trang 3LỜ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ú
Trang 4LỜ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ú
Trang 5MỤ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
Trang 63.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
Trang 7DANH 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
Trang 8DANH 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
Trang 9DANH MỤC CÁC TỪ VIẾT TẮT
API Giao diện lập trình ứng dụng
(Application Programming Interface)
DFA Automat hữu hạn đơn định
(Deterministic Finite Automata)
FA Automat hữu hạn
(Finite Automata)
FSM Máy hữu hạn trạng thái
(Finite State Machine)
FST Máy chuyển đổi hữu hạn trạng thái
(Finite state transducer)
HTML Ngôn ngữ đánh dấu siêu văn bản
(HyperText Markup Language)
(Identification)
IDE Môi trường phát triển tích hợp
(Integreted Development Environment)
JDK Bộ công cụ phát triển ứng dụng bằng ngôn ngữ lập trình Java
(Java Development Kit)
Trang 10MỞ ĐẦ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 tìm 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
Trang 11Chươ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
Trang 12
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
Trang 13là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
Trang 14tì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
Trang 15Chươ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]
Trang 16Hì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
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,
n-z
n-sh si-z
Root
Trang 17tù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
Trang 182.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
Trang 19Ngoà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
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
hello$
ello$h llo$he lo$hel
hello
Trang 20
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
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ư
beetroot metric petrify retrieval etr
Trang 21relive, 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 3- gram 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à filtering, theo đó từng thuật ngữ được liệt kê bởi truy vấn logic trên chỉ mục 3- gram 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
post-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]:
Trang 22 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ó:
Phép hợp: Hợp của hai ngôn ngữ𝐿1và 𝐿2trê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 đượ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}
Trang 23 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
Trang 24Nế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 𝑞1chuyển sang trạng thái 𝑞2theo 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
Trang 25sử 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ữ 𝐿(𝐸)
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
Trang 26theo ký tự vào trong văn bản 𝑦mà trạng thái của otomat sẽ thay đổi, vàkhi đạt được trạng thái kết thúc thì thông báo tìm thấy x
Giai đoạn tìm kiếm
Trạng thái bắt đầu là𝑞0.Nếu không có sự chuyển đổi trạng thái thì trở về trạng thái 𝑞0
Hình 2.7Otomat ứng với 𝑎𝑐𝑏 𝑎 + 𝑏 ∗ trong giải thuật tìm kiếm dựa trên otomat Thực hiện tìm kiếm chuỗi 𝑥 = 𝑎𝑐𝑏𝑎𝑏 trong văn bản 𝑦 = 𝑏𝑐𝑎𝑏𝑐𝑐𝑎𝑐𝑏𝑎𝑏𝑏𝑐𝑏
Trang 27Hì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
Trong ví dụ trêndo trạng thái cuối cùng đạt được là q0 nên kết quả cuối cùng là không tìm thấy chuỗi tìm kiếm trong văn bản
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
2.2.4.1Giới thiệu về máy chuyển đổi hữu hạn trạng thái
Nếu DFA là một FA cho biết chuỗi dữ liệu vào có thuộc ngôn ngữ được đoán nhận bởi DFA hay không thì máy chuyển đổi hữu hạn trạng thái Finite State Transducer (FST) tổng quát hơn vì FST cho phép đọc tập các chuỗi đầu vào và sinh tập các chuỗi đầu ra tương ứng
MộtFST đơn địnhlà một bộ 7 < Σ, ∆, 𝑄, 𝑞0, 𝐹, 𝛿, 𝜆>, trong đó:
o Σ là tập hữu hạn các ký tự đầu vào (bảng chữ cái đầu vào)
o ∆ là tập hữu hạn các ký tự đầu ra (bảng chữ cái đầu ra)
Trang 28Trong thực tế, một FST có thể được sử dụng để tính toán mối quan hệ giữa hai tập hợp FST trong hình 2.9 sẽ nhận vào một chuỗi và sinh một chuỗi tương
ứng thể hiện đặc điểm của chuỗi đầu vào, chẳng hạn với chuỗi đầu vào là goose thì chuỗi đầu ra tương ứng là NOUNsg (goose là danh từ số ít), nếu chuỗi đầu vào
là geese thì chuỗi đầu ra tương ứng là NOUNpl (geese là danh từ số nhiều)
Chi tiết về cách cài đặt trực tiếp một FST nhằm thể hiện mối quan hệ hữu hạn giữa một danh sách các từ đã được xắp xếp theo thứ tự từ điển với đầu ra tương ứng của chúng sẽ được trình bày trong [11]
Hình 2.9𝛵𝑙𝑒𝑥khớp các từ với đặc điểm tương ứng của từ đó
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
Mô tả
Trong giải pháp tìm kiếm dựa trên FST, một FST đượ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 theo ký tự vào của chuỗi đầu vào mà trạng thái của FST sẽ thay đổi và sinh ký tự đầu ra tương ứng, và khi đạt được trạng thái kết thúc có nghĩa là đã tìm được kết quả thỏa mãn biểu thức tìm kiếm, chính là chuỗi đầu ra được sinh từ chuỗi đầu vào thông qua FST
Ví dụ
Xây dựng FST cho tìm kiếm có chứa ký tự đại diện “s*food” và thực hiện
tìm kiếm trên FST xây dựng được Theo như định nghĩa FST ở mục 2.2.4.1 FST xây dựng được là bộ 7< Σ, ∆, 𝑄, 𝑞0, 𝐹, 𝛿, 𝜆>, trong đó:
Σ là tập hữu hạn các ký tự đầu vào là bảng chữ cái tiếng Anh,
q7 q8
q9 f/NOUN
o/sg i/pl o/sg