Lớp tìm kiếm

Một phần của tài liệu hệ thống tìm kiếm thông tin trên kho tài liệu tiếng Việt (Trang 97 - 103)

2. Chi tiết các lớp đối tượng

2.3.2 Lớp tìm kiếm

Hình 6-38 Lớp xử lý tìm kiếm

Lớp CTimKiem sẽ có nhiệm vụ tách từ câu hỏi, loại bỏ các từ trong danh sách StopList, sau đó tìm các từ khóa của câu hỏi trong tập tin Inverted để xác định các tài liệu liên quan đến câu hỏi, cuối cùng là tính độ tương quan giữa các tài liệu với câu hỏi, sắp xếp độ tương quan giảm dần và hiển thị cho người sử dụng.

2.3.2.1 Ý nghĩa của các biến thành phần:

• ttg : đây là đối tượng của lớp tách từ ghép dùng để tách từ câu hỏi.

• sl : đây là đối tượng của lớp CstopList dùng để kiểm tra các từ trong câu hỏi có nằm trong danh sách StopList không.

2.3.2.2 Các hàm chính :

- Hàm TachTuCauHoi( ) : hàm này nhằm mục đích tách câu hỏi thành các từ riêng biệt. Ta dùng một đối tượng thuộc lớp CTachTuGhep để tách từ câu hỏi. Kết quả trả về là một chuỗi chứa các từ đã được tách ta sẽ lưu vào một tập tin CauHoi.xml trong thư mục CauHoi.

* Thuật toán :

{

CTachTuGhep ttg = new CTachTuGhep String str = ttg.TachTuGhep(câu hỏi)

Lấy từng từ trong chuỗi str đưa vào tập tin CauHoi.xml }

Ví dụ : tập tin CauHoi.xml

<WORDS>

<WORDName="tai nạn" /> <WORDName="giao thông" /> <WORDName="tại" />

<WORDName="tphcm" /> </WORDS>

- Hàm LoaiBoSLCauHoi( ) : hàm này nhằm mục đích loại bỏ các từ không quan trọng trong câu hỏi.

* Thuật toán :

void LoaiBoSLCauHoi() {

- Mở tập tin CauHoi.xml

- Duyệt qua các từ xem có nằm trong StopList hay không ?

- Nếu không đưa vào tập tin CauHoiLoaiBoSL.xml ( tập tin này cũng nằm trong thư mục CauHoi)

Ví dụ : tập tin CauHoiLoaiBoSL.xml

<WORDS>

<WORDName="tai nạn" /> <WORDName="giao thông" /> <WORDName="tphcm" /> </WORDS>

- Hàm ThemDocVaWeight( ) : hàm này nhằm mục đích là tìm kiếm trong tập tin Inverted các tài liệu liên quan đến các từ khóa của câu hỏi.

* Thuật toán :

void ThemDocVaWeight() {

- Mở tập tin CauHoiLoaiBoST.xml và duyệt qua từng từ. - Tạo tập tin CauHoiVaTaiLieu.xml

- Đối với từng từ ta dùng công cụ XPath để xác định vị trí từ trong tập tin Inverted

- Đưa từ khóa và các tài liệu liên quan ( mã tài liệu, tần số, trọng số) vào tập tin CauHoiVaTaiLieu.xml

}

Ví dụ : tập tin CauHoiVaTaiLieu.xml sau khi gọi hàm ThemDocVaWeight

<WORDS>

<WORDName="tai nạn" />

</WORD>

<WORDName="giao thông" />

<DocDOC_ID="3" Frequence="1" Weight="1.32" /> </WORD>

<WORDName="tphcm" />

<DocDOC_ID="4" Frequence="1" Weight="1.08" /> </WORD>

</WORDS>

- Hàm BoSungCacDocThieu( ) : hàm này nhằm mục đích bổ sung các tài liệu có trong từ khóa này mà không có trong từ khóa khác ( phần tần số và trọng số ta sẽ để giá trị là 0 ).

Ví dụ : tập tin CauHoiVaTaiLieu.xml sau khi gọi hàm BoSungCacDocThieu

<WORDS>

<WORDName="tai nạn" />

<DocDOC_ID="1" Frequence="2" Weight="3.63" /> <DOCDOC_ID="3" Frequence="0" Weight="0" /> <DOCDOC_ID="4" Frequence="0" Weight="0" /> </WORD>

<WORDName="giao thông" />

<DocDOC_ID="3" Frequence="1" Weight="1.32" /> <DOCDOC_ID="1" Frequence="0" Weight="0" />

<DOCDOC_ID="4" Frequence="0" Weight="0" /> </WORD>

<WORDName="tphcm" />

<DocDOC_ID="4" Frequence="1" Weight="1.08" /> <DOCDOC_ID="3" Frequence="0" Weight="0" /> <DOCDOC_ID="1" Frequence="0" Weight="0" /> </WORD>

</WORDS>

- Hàm TaoFileDoTuongQuan( ) : hàm này nhằm mục đích tạo ra tập tin TuongQuan.xml chứa câu hỏi và các tài liệu liên quan đến câu hỏi kèm với độ tương quan dựa vào tập tin CauHoiVaTaiLieu.xml

Theo lý thuyết thì độ tương quan giữa tài liệu Di và câu hỏi Q sẽ được tính theo công thức : SC(Q,Di) = ij 1 w * n qj j d = ∑ Với :

n : Số từ phân biệt trong tập tài liệu.

dij : trọng số của từ j trong tài liệu di. (ta đã tính được trước đó) wqj : trọng số của từ j trong câu truy vấn Q. Sẽ có 2 giá trị như sau :

wqj = 1 : Nếu từ j có trong câu truy vấn Q.

Thực chất là ta chỉ cần cộng các độ tương quan từng từ khóa của câu hỏi là ta sẽ có độ tương quan của câu hỏi với tài liệu.

Ví dụ : tập tin TuongQuan.xml sau khi gọi hàm TaoFileDoTuongQuan

<CAU_HOI Name=”tai nạn giao thông tại TPHCM”>

<DocDOC_ID="1" SIMILAR="3.63" Words="1" /> <DOCDOC_ID="3" SIMILAR ="1.32" Words ="1" /> <DOCDOC_ID="4" SIMILAR ="1.08" Words ="1" /> </CAU_HOI>

- Hàm TinhDoTuongQuan( ) : hàm này nhằm tính độ tương quan giữa câu hỏi và các tài liệu có liên quan đến nó. Trên thực tế là ta gọi 3 hàm vừa nêu trên.

* Thuật toán : void TinhDoTuongQuan() { ThemDocVaWeight(); BoSungCacDocThieu(); TaoFileDoTuongQuan(); }

Một phần của tài liệu hệ thống tìm kiếm thông tin trên kho tài liệu tiếng Việt (Trang 97 - 103)

Tải bản đầy đủ (DOC)

(116 trang)
w