4.1 SE toàn văn của SQL server
MSFTEFD.EXE (Tiến trình xử lý lọc)
Điều khiển giao thức Tách từ Bộ lọc MSFTSQL.EXE (Xử lý tìm kiếm) Quản lý lọc Bộ chỉ mục Danh mục thuật ngữ (Thesaurus) Tách từ và Truy gốc Bộ xử lý truy vấn Full-Text Từ chưa xử lý (Noise words)
Danh mục full-text (Các tệp hệ thống) SQLSERVER.EXE Bảng của người dùng Bộ thu thập Bộ xử lý truy vấn của SQL Server Ánh xạ khóa Truy vấn Full-Text Máy trạm Danh sách từ Hình 2.2: Kiến trúc của MSFT 4.1.1 Mô tả kiến trúc
MSFT là một thành phần được thiết kế đặc thù cho dịch vụ tìm kiếm toàn văn
đi kèm với SQL Server. MSFT lưu thông tin định vị từ khóa theo cấu trúc chỉ mục
đảo. Khi thực hiện tìm kiếm toàn văn, MSFT đánh giá các tài liệu dựa vào dữ liệu chỉ mục và phép đo jaccard. MFST lưu các chỉ mục trong bộ nhớnhằm tăng tốc việc tìm kiếm, cách tiếp cận này làm hạn chế tính mềm dẻo khi ta cần thay đổi phương pháp chỉ mục, phương pháp tính điểm và cách lấy dữ liệu.
Chức năng của dịch vụ lọc là cung cấp các công cụ(tool) cần thiết để đánh chỉ mục cho từng khuôn dạng(format) văn bản cụ thể. Dịch vụ lọc làm các nhiệm vụ:
Loại bỏ các thông tin định dạng tài liệu, lọc ra phần text.
Xácđịnh ngôn ngữ của tài liệu, cung cấp công cụ tách từ và tìm từ gốc. Dịch vụ MSFTSQL làm nhiệm vụ tạo lập, quản lý các bộ chỉ mục toàn văn và hỗ trợ tính điểm trong quá trình tìm kiếm toàn văn cho SQL Server:
Filter Daemon Manager Điều khiển và quản lý tiến trình của dịch vụ lọc
Indexer Xây dựng cấu trúc chỉ mục đảo để lưu các từ
khóađược đánh chỉ mục
Noise word files Bao gồm các từ không dùngđể chỉ mục (stop
word)
ThesaurusFiles Chứa các từ đồng nghĩa liên quan tới từ khóa
Word breakerand stemmers Thực hiện phân tích ngôn ngữ trên dữ liệu
được đánh chỉ mục. Word breaker là thành phần xác định ranh giới của từ. Stemmer lấy các từ trả về từ Word breaker và truy về từ gốc.
Bảng 2.4: Các thành phần của MSFTESQL
4.1.2 Xếp hạng (ranking)
Tìm kiếm toàn văn trong SQL Server có thể tính ra điểm số đánh giá sự liên quan giữa dữ liệu trả về với điều kiện tìm kiếm. Giá trị điểm số tính trên từng dòng này có thể được xem nhưmột thuộc tính sắp xếp cho bộ giá trị trả về.MSFTESQL sử dụng các thuộc tính sauđể đánh giá:
Property Một cột được đánh chỉ mục trong 1 dòng
Document Môt dòngđược câu tìm kiếm được trả về
Index Một chỉ mục đảo đơn của 1 hoặc 1 số document
Fulltext catalog Tập hợp các chỉ mục đảo
Word, Token or Item Đơn vị dùng để tìm kiếm trong nhân(engine) tìm kiếm Full-text
Occurrence Vị trí của word xuất hiện trong 1 property cụ thể Catalog key Sự kết hợp của word và property chứa wordđược chỉ
mục
HitCount Số lần xuất hiện của từ trong 1 dòng
IndexedRowCount Tổng số các dòngđược đánh chỉ mục
KeyRowCount Số lượng các dòng trong 1 fulltext catalog mà cùng chứa 1 khóa
MaxOccurrence Vị trí lớn nhất xuất hiện trong 1 fulltext catalog cho 1 property trong 1 dòng
MaxQueryRank Điểm cao nhất, 1000, được trả về bởi MSFTESQL
[19]
Bảng 2.5: Các thuộc tính dùngđể ranking 4.2 SE toàn văn của Oracle(Oracle Text)
Oracle Text tích hợp đầy đủ công nghệ xử lý dữ liệu text, là một phần của sản phẩmOracle Standard, Enterprise. Oracle Text sử dụng SQL chuẩn để thực hiện chỉ mục, tìm kiếm và phân tích dữ liệutext, các tệp văn bản được lưu trữ trong CSDL, trong các tệp lưu ngoài, hoặclưu trên Web. Oracle Text có thểthực hiện xử lý trên
đa ngôn ngữ, sử dụng nhiều chiến lược trích chọn từ khóa, truy vấn ngữ cảnh, các biểu thức lôgic, tìm kiếm theo mẫu, hỗ trợ xử lý HTML, XML…
Oracle Text hỗ trợ chuyển đổi rất nhiều định dạng khác nhau trong kết quả trả về bao gồm: text không định dạng, từ khóa được bôimàu hiển thị dưới dạng HTML và định dạng văn bản gốc. Oracle Text hỗ trợ đa ngôn ngữ và công nghệ xử lý sắp xếp nâng cao nhằm tăng chất lượng tìm kiếm.
4.2.1 Kiến trúc
Hình 2.3: Kiến trúc của Oracle Text
4.2.2 Dữ liệu (Datastore Object)
Oracle Text có thể thực hiện chỉ mục dữ liệu được lưu trữ trong CSDL, tệp dữ liệu hay thông qua đường dẫn dữ liệu (URL). Đường dẫn dữ liệu cho phép CSDL có thể quản lý được các văn bản lưu ở các máy chủ tại nơi khác và truy cập thông qua giao thức HTTP hay FTP. Có những kiểu lưu trữ sau:
Trong CSDL: Dữ liệu Text cần chỉ mục được lưu trữ trong CSDL dưới các kiểu trường ký tự, có thể là kiểu TEXT dung lượng 4K hay LOB – ký tự hoặc dạng số tới 4GB.
Lưu trong tệp: Dữ liệu Text cần chỉ mục được lưu trữ trong tệp hệ thống, có thể truy cập được từ máy chủ.
Lưu trên Web: Dữ liệu Text cần chỉ mục được truy cập thông qua URL trên Internet hoặc trong mạng nội bộ.
Kiểu người dùng tự định nghĩa: Dữ liệu Text cần chỉ mục là kết quả trả về của thủ tục PL/SQL. Cho phép người dùng quyền định nghĩa cụ thể dữ liệu cần chỉ mục. Loại chỉ mục này luônđược lưu trong CSDL.
4.2.3 Bộ lọc (Filter Object)
Thường thì dữ liệu Text lưu trên Internet chủ yếu là các dữ liệu định dạng HTML hoặc text. Tuy nhiên cũng có rất nhiều các tệp văn bản có khuôn dạng PDF, Doc, Xls, Ppt…
Oracle Text hỗ trợ lọc hơn 150 các định dạng khác nhau: PDF, MS Office, HTML, XML.. Kết quả của bộ lọc là trả về các tệp dạng HTML hoặc Text, điều này cho phép bộ lọc giữ lại các thông tin quan trọng của văn bản như: tiêu đề, nội dung
để phục vụ tìm kiếm. Oracle Text cho phép người dùng tự khai báo và dùng bộ lọc riêng của mìnhđể phục vụ chỉ mục.
4.2.4 Phân đoạn (Sectioner Object)
Chức năng Sectioner có nhiệm vụ xác định dữ liệu text được phân đoạn bởi tag của HTML hay XML.
4.2.5 Tách từ (Lexer Object)
Sau khi chức năng Phân đoạn tách được dữ liệu ra thành các đoạn (bỏ đi các tag) thì Lexer đón nhận và xử lý. Công việc của Lexer là tách các câu thành các từ (words) hay thành các thẻ(tokens). Nhưtrong ngôn ngữ tiếng Anh, Pháp, Đức đơn giản là tách thành các từ bởi dấu cách hoặc dấu ngắt câu. Lexer loại bỏ các từ thông dụng, ít giá trị(stop words) hoặc các từ nằm trong danh sách định nghĩa trước.
Oracle Text hỗ trợ việc tách từ cho nhiều ngôn ngữkhác nhau:
Các ngôn ngữ châu Âu (Western languages):
o Base Letter Conversion: hỗ trợ xử lý các ký tự có trọng âm. Chuẩn hóa chúng thành không còn trọng âm để tìm kiếm. VD: tìm từ “acción” có thể tìmđược “accion” hoặc “acción”.
o Alternate spelling: một số ngôn ngữ, ví dự tiếng Đức, có nhiều cách phát âm khác nhau theo trọng âm. VD: từ “Muenchen” và “München” là giống nhau. Và tham số này cho phép 2 từ này có thể được nếu người dùng gõ “Muenchen”.
Multi-byte languages: Đối với các ngôn ngữ tượng hình, việc tách từ khác với các ngôn ngữ trên. Oracle Text cung cấp các Lexer riêng cho các ngôn ngữ này: Trung Quốc, Nhật Bản, Hàn Quốc.
4.2.6 Chức năngchỉ mục
Chức năng chỉ mục sẽ tạo ra những chỉ mục đảo(inverted index), thể hiện ánh xạ những từ được tách ra từ Lexer tới các tài liệu chứa nó. Chỉ mục được tạo ra là một danh sách các từ được tách ra từ các tài liệu, mỗi từ có một danh sách các văn bản chứa nó.
4.2.7 Những đặc điểm nổi bật của Oracle Text
Oracle Text cung cấp 3 loại chỉ mục: chuẩn, thưmục và phân loại:
Loại chỉ mục chuẩn (Standard indextype): cho các dữ liệu Text truyền thống với các văn bản hoặc các trang web. Toán tửtìm kiếm CONTAINS.
Catalog indextype: được thiết kếmềm dẻo cho dữ liệu thưmục eBusiness. Dữ liệu lưu trữ nhỏ lẻ tạicác cột khác nhau, kiểu chỉ mục này giúp cải thiện tộc độ các câu truy vấn phức hợp . Toán tử tìm kiếm CATSEARCH.
Classification indextype: loại chỉ mục này dùng để xây dựng các ứng dụng phân loại văn bản. Loại chỉ mục phân loại tạo trên bảng các truy vấn mà mỗi truy vấn chứa 1 phân loại. Toán tử tìm kiếm MATCHES.
Oracle Text cũng hỗ trợ đánh chỉ mục tiền tố (prefix) và ký tự trong từ (substring). Chỉ mục trên ký tự cải thiện tốc độ cho câu truy vấn ký tự thay thế (wildcard) bên trái hoặc cả bên trái và bên phải. Chỉ mục tiền tố cải thiện tốc độ cho câu truy vấn ký tự đại diện nằm ở bên phải.
Duy trì và đồng bộ chỉ mục(Maintaining Indexes and Synchronization) Oracle Text đảm bảo đồng bộ chỉ mục khi bảng dữ liệu được cập nhật, chèn hay xóa dữ liệu. Việc đồng bộ(Oracle 9i) có thể được thực hiện song song.
Chỉ mục song song (Parallel indexing):Hỗ trợ tạo chỉ mục trên bảng không phânđoạn (partition) ở chế độ song song. Lợi ích:
Cải thiện tốc độ (performance)
Tăng tốc độ khởi động chương trìnhđối với dữ liệu lớn
Hỗ trợ thử nghiệm chương trình
Phânđoạn chỉ mục (Index Partitioning): Cho phép tạo các chỉ mục trên các partitionđơn lẻ. Lợi ích:
Quản lý dễ dàng các partition
Cải thiện tốc độ (performance)
Các toán tử truy vấn(query): Oracle Text xử lý thông minh các câu truy vấn dựa vào các chiến lược tìm kiếm sau:
Tìm kiếm từ khóa
Tìm kiếm ngữ cảnh
Kết hợp toán tử điều kiện
Đặc điểm ngôn ngữ
Tìm kiếm theo mẫu (pattern)
Toán tử Mô tả
ABOUT Toán tử ABOUT trả về số tài liệu liên quan (relevant)
nhiều hơn
ACCUMulate (,) Tìm các tài liệu chứa ít nhất 1 lần xuất hiện củatất cảtừ khóa tìm kiếm
AND (&) Tìm các tài liệu chứa ít nhất 1 lần xuất hiệncủatất cảtừ khóa tìm kiếm
Broader Term (BT, BTG, BTP, BTI)
Mở rộng câu truy xuất, bao gồm các từ khóa được định nghĩa ở thesaurus với nghĩa rộng hoặc mức cao hơn EQUIValence (=) Chỉ ra một sự thay thế có thể chấp nhận được cho một từ
trong truy vấn
Fuzzy Mở rộng câu truy xuất, bao gồm cả từ phát âm gần giống
với từ khoá
HASPATH Tìm kiếm toàn bộ các tài liệu XML chứamộtđường dẫn xác định
INPATH Tìm kiếm trong toàn bộ tài liệu XML
MINUS (-) Tìm kiếm các tài liệu có chứa một truy vấn và bạn muốn có một truy vấn thứ 2 để tài liệu có thứ tự ưu tiên thấp hơn
Narrow Term (NT, NTG, NTP, NTI)
Mở rộng câu truy xuất, bao gồm các từ khóa được định nghĩa ở thesaurus với nghĩa hẹp hoặc mức thấp hơn NEAR (;) Trả lại một điểm trên cơsở kết quả gần đúng của 2 hay
NOT (~) Tìm kiếm các tài liệu có chứa một truy vấn này chứ không phải truy vấn khác
OR (|) Tìm các tài liệu chứa ít nhất 1 lần xuất hiện của 1 từ khóa tìm kiếm
Preferred Term (PT) Mở rộng câu truy xuất, bao gồm các từ khóa được định nghĩa ở thesaurus tìm thêm các từ khóa liên hệ thường
được dùng
Related Term (RT) Mở rộng câu truy xuất, bao gồm các từ khóa được định nghĩa ở thesaurus tìm thêm các từ khóa liên quan
Soundex (!) Mở rộng câu truy xuất, tìm thêm các từ khóa có cách phát âm giống với từ khóa
Stem ($) Tìm các từ khóa có cùng từ gốc với từ khóa tìm kiếm Stored Query
Expression (SQE)
Gọi tới thủ tục truy vấn mở rộng được tạo bởi CTX_QUERY.STORE_SQE
SYNonym (SYN) Mở rộng câu truy xuất, bao gồm các từ khóa được định nghĩa ở thesaurus tìm thêm các từ khóa có cùng nghĩa với từ khóa tìm kiếm
Threshold (>) Toán tử ởmức diễn đạt giới hạn các tài liệu trong tập kết quả màđạt điểm dưới một ngưỡng chuẩn. Toán từ nàyở mức truy vấn lựa chọn một tài liệu trên cơsở một truy vấn đạt điểm nhưthế nào trong tài liệu.
Translation Term (TR)
Mở rộng câu truy xuất, bao gồm cả những từ khóa có cùng giá trị ở ngôn ngữ khác.
Translation Term Synonym
(TRSYN)
Mở rộng câu truy xuất, bao gồm cả những từ khóa có cùng giá trị ở ngôn ngữ khác, từ đồng nghĩa, từ đồng nghĩa của của ngôn ngữ tương ứng với từ khóa tìm kiếm. Top Term (TT) Thay thế từ khóa tìm kiếm bằng từ khóa được định nghĩa
trong thesaurusở mức cao nhất của cây
Weight (*) Nhânđiểm với một phân số cố định, nằm ngoài 100 khi
điểm vượt quá 100
Bảng 2.6: Các toán tử dùng trong Oracle Text Tính quốc tế hóa(Internationalization)
Oracle Text hỗ trợ tất cả bộ ký tự của Oracle NLS: ASCII, UTF-8, JA165JIS, GBK, BIG5,… Oracle Text cho phép tìm kiếm các tài liệu ở các ngôn ngữ khác nhau: châu Âu (Anh, Pháp, Tây Ban Nha, Đức, …) cũng nhưNhật, Hàn Quốc, Trung Quốc.
Các dịch vụ hỗtrợ tài liệu (Document Services)
Oracle Text cung các các dịch vụ: làm nổi bật(highlight),đánh dấu(markup),
hiển thị các tài liệu và số điểm tương ứng với từ khóa tìm kiếm (theme) và tính
năng hiển thị nội dung chính của tài liệu (gist). Những tính năng này rất hữu ích khi hiển thị các tài liệu.
Hỗ trợ các tính năng nâng cao về ngôn ngữ(Advanced linguistics Features):
Phân loại và bó cụm văn bản(Classification and Clustering), cơsở tri thức phong phú(Knowledge base): 400,000 các định nghĩa được phân loại cho 2000 phạm trù khác nhau.[3]
4.2.8 Tổ chức chỉ mục và lưu trữ chỉ mục trong Oracle Text
4.2.8.a Tổ chức chỉ mục trong Oracle Text
Một chỉ mục có thể được cấu trúctheo bất kỳ nhằm thể hiện thông tin phục vụ cho tìm kiếm hiệu quả. Không có cấu trúc chỉ mục đơn lẻ nào tối ưu choứng dụng. Ví dụ:
Nếu nhưtìm những vùng chứa thành phố tên là Metropolis, sẽ cần toán tử tìm kiếm chính xác
Nếu nhưcần tìm trong khoảng dữ liệu giữa 2 số, sẽ cần toán tử tìm kiếm trong khoảng
Trong từng trường hợp trên, chỉ mục được tổ chức theo cách khác nhau, cấu trúc hàm băm (hash) phù hợp cho tìm kiếm chính xác trong khi đó B-tree phù hợp cho tìm kiếm theo khoảng. Oracle Text dùng phương pháp chỉ mục đảo (Inverted index)để lưu các từ khóa chỉ mục(token). Các chỉ mục nàyđược lưu trữ dưới dạng bảng Index-Organized Table của Oracle.
4.2.8.b Tổ chức lưu trữ chỉ mục trong Oracle Text
Oracle Text cần 4 bảng chính để lưu trữmột chỉ mục Text, đó là bảng có tên $I, $K,$N và $R ghép với tên của chỉ mục Text cộng “DR$” ở trước. Ví dụ tên chỉ mục thesis_doc_Index. Tươngứng 4 bảng có tên là:
DR$THESIS_DOC_INDEX$I
DR$THESIS_DOC_INDEX$N
DR$THESIS_DOC_INDEX$R
Bảng $I – Bảng “Token”
Bảng này chứa toàn bộ các từ được chỉ mục và vị trí tương ứng trong tài liệu. Mỗi tài liệu được biểu diễn bởi 1 DOCID do OracleText cấp.
Bảng $K – Bảng ánh xạ DOCID
Đây là 1 bảng index-organized table dùngđể map giữa DOCID do Oralce Text cấp với ROWID được lưu trữ thực tế. Mỗi một biểu ghi là 1 cặp DOCID và ROWID. Kiểu bảng này hỗ trợ việc truy cập nhanh khi đầu vào là DOCID vàđầu ra là ROWID.
Bảng $R – Bảng ánh xạ ROWID
Bảng nàyđược dùngđể truy xuất ROWID khi biết giá trị ROWID.
Bảng $N
Bảng này chứa danh sách các giá trị DOCID bị xóa, nó bị xóa bởi hoạt động tối ưu hóa hệ thống.
Ngoài ra Oracle Text còn sử dụng một số bảng khác ($PENDING, $DELETE,..) để phục vụ các giao tác quản lý dữ liệu nhưthêm mới, cập nhật hay xóa dữ liệu.
4.2.9 Xếp hạng (Ranking)
Oralce sử dụng thuật toán nghịch đảo tần số tài liệu (inverse frequency) dựa trên công thức của Salton để tính toán trọng số trong việc sắp xếp kết quả trả về khi truy xuất dữ liệu toàn văn.
Công thức của Gerald Salton: W(T,D)=tf(T,D) * log(DN/df(T))
T: thuật ngữ
W: trọng số của thuật ngữ T
D: tài liệu
tf(T,D): tần số xuất hiện của T trong tài liệu D
DN: số tài liệu
Thuật toán này chỉ ra rằng những từ xuất hiện nhiều trong tài liệu sẽ có giá trị thấp. Từ có trọng số cao khi xuất hiện thường xuyên trong 1 tài liệu xác định nhưng là thấp so với tần số xuất hiện trong cả tập tài liệu.
Ví dụ:
Giả sử ta có 5000 tài liệu nói về nghành hóa học, trong đó từ khóa Hóa học xuất hiện ít nhất 1 lần trong mỗi tài liệu. Khi đó từ khóa Hóa học được gọi là xuất hiện thường xuyên trong tập 5000 tài liệu.
Nếu có 1 tài liệu chứa 5 lần xuất hiện từ khóa Hóa học và 5 lần xuất hiện từ khóa Hydro mà không có tài liệu nào chứa từ khóa Hydro thì từ khóa Hydro sẽ
được coi là không xuất hiện thường xuyên trong cả tập tài liệu
Vì từ khóa Hóa học xuất hiện thường xuyên trong tập tài liệu nên trọng số từ khóa của tài liệu là thấp hơn trọng số từ khóa Hydro.[5]
Chương 3: CÁC PHƯƠNG PHÁP LẬP CHỈ MỤC, CHỈ MỤC 1. Tổng quan về phương pháp lập chỉ mục
Phương pháp lập chỉ mục gồm 2 phần chính yếu sau :
Trướctiên là xác định các thuật ngữ, khái niệm mà có khả năng đại diện cho văn bản sẽ được lưu trữ (bao gồm cả việc tách từ, loại bỏ stop-word, xử lý hậu tố…)
Bước thứ hai là xácđịnh trọng sốcho từng thuật ngữ, trọng số này là giá trị phản ánh tầm quan trọng của mục từ đó trong văn bản.
1.1 Xácđịnh mục từquan trọng cần lập chỉ mục
Thuật ngữhay còn gọi là thuật ngữchỉ mục, làđơn vị cơsở cho quá trình lập chỉ mục. Thuật ngữcó thể là từ đơn, từ phức hay một tổ hợp từ có nghĩa trong một ngữ cảnh cụ thể. Ta xác định thuật ngữcủa 1 văn bản dựa vào chính nội dung của