Các lớp trong quá trình tách từ

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 81 - 89)

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

2.1 Các lớp trong quá trình tách từ

Hình 6-25 Sơ đồ lớp tách từ

2.1.2 Lớp tách từ ghép

Hình 6-26 Lớp tách từ ghép

Lớp tách từ ghép sẽ có nhiệm vụ tách một văn bản thành các từ riêng biệt.

Đầu vào là một chuỗi văn bản và đầu ra là một chuỗi chứa các từ, mỗi từ sẽ cách nhau bởi dấu xuống dòng ( ‘\r\n’ ).

Ví dụ :

chuỗi đầu vào = “Thanh niên VN: động lực cho những ý tưởng mới, tầm nhìn mới.” chuỗi đầu ra = “Thanh niên\r\nVN\r\nđộng lực\r\ncho\r\nnhững\r\ný tưởng\r\n mới\r\ntầm nhìn\r\nmới\r\n”.

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

• ch : mảng các ký tự đặc biệt (dấu chấm, dấu phẩy, chấm than, chấm hỏi, hai chấm,…) để tách văn bản thành các cụm từ.

• hVietnamese : bảng băm để lưu tất cả các từ trong từ điển tiếng Việt.

2.1.2.2 Các hàm chính :

- Hàm TachThanhCumTu( ) : tách chuỗi văn bản thành các cụm từ dựa vào các kí tự đặc biệt như : dấu chấm, phẩy, chấm hỏi, chấm than…

* Thuật toán :

void TachThanhCumTu (chuỗi văn bản) {

while(gặp tự đặc biệt đầu tiên trong chuỗi văn bản) {

// Cắt phần đầu thành một cụm từ. // Gán chuỗi văn bản thành phần sau. }

} Ví dụ :

chuỗi đầu vào = “Thanh niên VN: động lực cho những ý tưởng mới, tầm nhìn mới.” trả về ta sẽ có 3 chuỗi cụm từ :

chuỗi 1 = “Thanh niên VN”

chuỗi 2 = “động lực cho những ý tưởng mới” chuỗi 3 = “tầm nhìn mới”

- Hàm TachMangTieng( ) : tách một cụm từ thành từng tiếng dựa vào khỏang trắng.

* Thuật toán :

void TachMangTieng(cụm từ) {

while(gặp ký tự khoảng trắng đầu tiên trong cụm từ) { // Cắt phần đầu thành một tiếng. // Gán cụm từ thành phần sau. } } Ví dụ :

chuỗi đầu vào = “động lực cho những ý tưởng mới” trả về là mảng chuỗi chứa các tiếng = {động”;”lực”;”cho” “những”;”ý”;”tưởng”;”mới”}

- Hàm XacDinhTu( ) : gộp các tiếng lại thành từ, so sánh trong từ điển tiếng Việt và ta sẽ lưu lại các từ này vào mảng các từ.

* Thuật toán :

void XacDinhTu(mảng các tiếng) {

B1 : gán từ = tiếng đầu tiên.

B2 : so sánh từ có trong từ điển hay không.

B4 : Nếu trong mảng tiếng vẫn còn thì từ := từ + tiếng tiếp theo. Ngược lại kết thúc hàm.

B5 : Quay lại B2 }

Với các mảng tiếng của ví dụ trên sau khi gọi hàm này thì ta sẽ có mảng các từ như sau:

mảng chuỗi các từ={”động lực”;”cho” “những”;”ý tưởng”; ”mới”}

2.1.3 Lớp tách từ

Hình 6-27 Lớp tách từ

Lớp tách từ sẽ có nhiệm vụ tạo tập tin văn bản Xml từ tập tin văn bản gốc, sau đó sẽ trích các từ trong văn bản và cuối cùng lưu lại các từ trích được cùng với các tài liệu chứa từ đó thành tập tin Xml tách từ.

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

• ttg : đối tượng thuộc lớp CTachTuGhep

2.1.3.2 Các hàm chính :

- Hàm TaoXML( ) : chuyển một tập tin văn bản có cấu trúc thành tập tin XML * Thuật toán :

void TaoXML (tập tin văn bản) {

Tạo tập tin Xml để lưu lại nội dung tập tin văn bản. // Dịch con trỏ tập tin

while(chưa hết tập tin văn bản) {

B1 : tìm từ khóa DOC lấy phần giá trị. B2 : tìm từ khóa TITLE lấy phần giá trị. B3 : tìm từ khóa AUTHOR lấy phần giá trị. B4 : tìm từ khóa DATE lấy phần giá trị. B5 : tìm từ khóa NEW lấy phần giá trị. B6 : tìm từ khóa CONTENT lấy phần giá trị. lưu lại phần giá trị vào tập tin Xml.

}// ENDWHILE }

- Hàm Tachtu( ) : Đọc phần nội dung của tập tin XML văn bản và dùng đối tượng thuộc lớp CTachTuGhep để trích thành các từ.

* Thuật toán :

string Tachtu (tập tin văn bản Xml) {

- Lấy phần nội dung (CONTENT) trong tập tin Xml - Dùng đối tượng của lớp tách từ ghép để tách từ.

- Kết quả trả về sẽ là một mảng chứa các từ riêng biệt. }

- Hàm KetQuaToXmlWord( ) : các từ sau khi trích sẽ được lưu thành tập tin XML mới gọi là “tập tin sau khi tách từ tài liệu”

* Thuật toán :

void KetQuaToXmlWord(chuỗi chứa các từ) {

B1 : Tạo một tập tin Xml

B2 : Tách ra từng từ trong chuỗi

B3 : Kiểm tra từ đó có lưu trong tập tin Xml chưa ?

o Nếu chưa : lưu từ đó và lưu tài liệu tương ứng

o Nếu rồi : kiểm tra tài liệu đó đã được lưu trong từ đó chưa. Nếu chưa ta mới lưu tài liệu đó.

B4 : Nếu chưa hết chuỗi quay lại bước 2. B5 : Lưu tập tin Xml lại.

}

2.1.4 Lớp giao diện tách từ

* Giao diện tách từ :

Hình 6-29 Màn hình tách từ

- Người dùng có thể chọn đường dẫn tới các tập tin văn bản cần tách từ. - ListBox1 chứa các tập tin văn bản trong đường dẫn đã chọn.

- ListBox2 chứa các tập tin văn bản được chọn để tách từ. - ListBox3 chứa các tập tin xml đã được tách từ.

- ListBox4 chứa các DocID trong tập tin xml đã được tách từ. Vì một tập tin văn bản xml sẽ chứa nhiều tài liệu và mỗi tài liệu sẽ có 1 DocID. Người dùng có thể chọn DocID nào đó để xem kết quả tách từ và tần số của mỗi từ trong tài liệu đó. Sau khi chọn một DocID sẽ có giao diện như sau :

Hình 6-30 Màn hình chi tiết tách từ

- Hàm xử lý TachTu_Click( ) : hàm này sẽ tách từ tất cả các tập tin được chọn trong ListBox2.

2.2 Các lớp trong quá trình lập chỉ mục

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 81 - 89)

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

(116 trang)
w