1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tìm hiểu phương pháp xử lý tìm kiếm theo ký tự đại diện của lucene

57 46 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 57
Dung lượng 1,89 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 3

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ú

Trang 4

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ú

Trang 5

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

Trang 6

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

Trang 7

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

Trang 8

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

Trang 9

DANH 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 10

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 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 11

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

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 13

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

Trang 14

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

Trang 15

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]

Trang 16

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

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 17

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

Trang 18

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

Trang 19

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

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 21

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 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 24

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 𝑞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 25

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ữ 𝐿(𝐸)

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 26

theo 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 27

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

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 28

Trong 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

Ngày đăng: 09/03/2020, 18:25

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w