II. CÀI ĐẶT THỬ NGHIỆM
1.3. Xác định các từ khoá trong văn bản
Để xác định chính xác các từ khoá cho văn bản cũng là một bài toán hết sức phức tạp, đặc biệt là đối với các văn bản tiếng Việt. Để giải quyết tốt bài toán này chúng ta cần phải tổ chức tốt từ điển, cần phải có một giải thuật tách từ tiếng Việt hợp lý để chọn ra tập các từ đại diện cho văn bản. Sau đó chọn lọc ra các từ khoá làm tập các từ đại diện cho văn bản. Các từ đại diện cho văn bản phải thoả mãn các tính chất đó là một tập các từ có thể phân biệt được giữa văn bản này với các văn bản khác nhưng đồng thời phải đưa ra được các từ mang tính trọng tâm của văn bản. Trong đồ án này em chọn ngưỡng cho từ tách được dài nhất gồm bốn tiếng ghép lại.
Các từ được tách sẽ ưu tiên từ có độ dài dài nhất. Ví dụ từ công nhân sẽ được chọn thay vì từ công và từ nhân. Một điểm cần lưa ý là từ loại của từ cần tách cũng quan trọng. Chúng ta nhận thấy rằng nếu từ, từ ghép được tách là danh từ hoặc động từ thì có ý nghĩa đại diện cho văn bản nhiều hơn so với các từ loại dạng đại từ giới từ.
2. Xử lý dữ liệu để phục vụ cho mô hình tìm kiếm văn bản bằng phương pháp tập thô dung sai.
Tính không gian dung sai và các xấp xỉ trên và xấp xỉ dưới
Với những mục đích đã đặt ra trong đồ án. Em xây dựng hai form để áp dụng mô hình lý thuyết tập thô dung sai vào bài toán tìm kiếm văn bản tiếng Việt. Trong chương trình công việc xử lý chuỗi được sử dụng khá nhiều. Trong đó công việc tách từ cũng như so sánh quan hệ giữa hai chuỗi thông qua các thành phần trong chuỗi. Để thực hiện công việc tách từ trong câu truy vấn em sẽ xử dụng môdul tách từ trong phần tiền xử lý văn bản tiếng Việt. Việc so sánh hai chuỗi được thực hiện thông qua một hàm so sánh sau:
Function sosanh(ByVal str1 As String, ByVal str2 As String) As Byte Dim mang1() As String
Dim mang2() As String Dim i, j, tg As Integer Dim dung As Boolean
Call tachchuoi(mang1(), str1) Call tachchuoi(mang2(), str2) // Thực hiện so sánh hai mảng For i = 1 To UBound(mang1()) dung = False j = 0 Do j = j + 1
If mang1(i) = mang2(j) Then
tg = tg + 1 // Biến đếm số phần tử giống nhau của hai mảng dung = True
End If
sosanh = 0 // Hai chuỗi không có phần tử chung
ElseIf (tg < UBound(mang1())) And (tg < UBound(mang2())) Then sosanh = 1 // Hai chuỗi giao nhau
ElseIf (tg < UBound(mang1())) And (tg = UBound(mang2())) Then sosanh = 2 // Chuỗi 1 là tập con của chuỗi 2
ElseIf (tg = UBound(mang1())) And (tg < UBound(mang2())) Then sosanh = 3 // Chuỗi 2 là tập con của chuỗi 1
Else
sosanh = 4 // Hai chuỗi gồm các phần tử giống hệt nhau
End If End Function
Tính lớp dung sai cho các term
Chức năng này sẽ thực hiện nhiệm vụ tính các lớp dung sai của tập các term cho từng tài liệu đã được lạp vào cơ sở dữ liệu. Điểm quan trọng trong thuật toán tính các lớp dung sai là phải xây dựng được ma trận quan hệ giữa các term và các văn bản. với ma trận Amn xây dựng được ta sẽ có giá trị của aii cho biết term ti có thuộc văn bản di hay không . Nếu giá trị này bằng 1 thì đúng, ngược lại giá trị bằng không có nghĩa là term này không thuộc văn bản di. Với ma trận này để có thể xác định được hai term ti và tj có suất hiện cùng nhau trong bao nhiêu văn bản ta chỉ việc tính bằng vòng lặp sau:
For k=1 số văn bản Do
Giá trị = Giá trị = Giá trị +aik*ajk
sau vòng lặp trên kết quả sẽ là Giá trị (số văn bản cùng chứa hai term ti và tj) Đoạn mã dưới đây sẽ thực hiện chức năng tính lớp dung sai cho các term trên toàn bộ các văn bản trong cơ sở dữ liệu.
Dim db As Database Dim rs As Recordset
Dim mang() As String Dim rs1 As Recordset Dim rs2 As Recordset Dim i, j, k, l As Integer Dim sohang, socot As Integer Dim dem As Byte
Dim term1, term2 As String
Set rs1 = db.OpenRecordset("tukhoa") rs1.MoveLast
sohang = rs1.RecordCount 'So tu khoa Set rs2 = db.OpenRecordset("tai lieu") rs1.MoveLast
socot = rs2.RecordCount // Số văn bản
//Xây dựng ma trậm dùng để tính các lớp dung sai
ReDim mang(1 To sohang, 1 To socot)
//Xây dựng ma trận mang(i,j) để xem từ khoá i có thuộc văn bản j không // mang(i,j)= 1 nếu từ khoá i thuộc văn bản j, nếu từ khoá i không thuộc văn bản j thì mang(i,j)=0 rs1.MoveFirst rs2.MoveFirst k = 1 Do Until rs1.EOF l = 1 rs2.MoveFirst Do Until rs2.EOF
If sosanh(rs1!term_ID, rs2!cactukhoa) = 3 Then mang(k, l) = 1 // Neu tk thuoc dl
Else
l = l + 1 Loop rs1.MoveNext k = k + 1 Loop rs1.Close rs2.Close Set rs1 = db.OpenRecordset("tukhoa") Do Until rs1.EOF rs1.Edit rs1!lopdungsai = rs1!term_ID rs1.Update rs1.MoveNext Loop For i = 1 To sohang For j = 1 To sohang If j <> i Then l = 0 For k = 1 To socot l = l + mang(i, k) * mang(j, k) Next
If l > 1 Then // xét theo giá trị ngưỡng. trong trường hợp này=2
rs1.MoveFirst dem = 1
Do Until (dem = j) rs1.MoveNext
dem = dem + 1 // tìm đến từ khoá có số thứ tự = dem
Loop
term1 = rs1!term_ID dem = 1
Do Until (dem = i) rs1.MoveNext dem = dem + 1 Loop term2 = rs1!lopdungsai // cập nhật lớp dung sai
If Trim(term2) <> "" Then term2 = term2 + "," + term1 Else term2 = term1 rs1.Edit rs1!lopdungsai = term2 rs1.Update End If End If Next Next DBGrid1.Refresh End Sub
Hình 8: Giao diện thực hiện tính không gian dung sai cho các term
Chức năng thực hiện tính lớp dung sai cho các term cho ra kết quả đúng theo công thức tính lớp dung sai mà chúng ta đã được tìm hiểu trong phần lý thuyết về tập thô dung sai. Trong phần đemô này em đưa ra lớp dung sai cho tất các term của các văn bản dưới dạng tập các mã của term chứ không phải là tập các term.
Sau khi tình được lớp dung sai cho các từ đại diện cho văn bản chúng ta tiến hành tính xấp xỉ trên và xấp xỉ dưới cho từng văn bản trong toàn bộ tập văn bản. Dưới đây là đoạn mã thực hiện công việc tính xấp xỉ trên và xấp xỉ dưới.
Private Sub cmdtinhxapxi_Click() Dim i, j, k As Integer Dim rs1 As Recordset Dim str As String
Dim lopdungsai As String Dim tukhoa() As String Dim xapxi() As String Dim xapxiduoi As String Dim xapxitren As String
Set rs = db.OpenRecordset("tai lieu") Do Until rs.EOF
xapxiduoi = "" // Chuỗi lưu xấp xỉ dưới tính được xapxitren = "" // Chuỗi lưu xấp xỉ trên tính được str = "" // Lưu tập các từ khoá của một tài liệu str = rs!cactukhoa
Call tachchuoi(tukhoa(), str)
Set rs1 = db.OpenRecordset("tukhoa") For i = 1 To UBound(tukhoa())
rs1.MoveFirst
// Tìm đến từ khoá thuộc vào văn bản trong bảng từ khoá Do Until (Trim(tukhoa(i)) = Trim(rs1!term_ID))
rs1.MoveNext Loop
lopdungsai = rs1!lopdungsai //Xác định lớp dung sai của từ khoá Call tachchuoi(xapxi(), lopdungsai)
xapxitren = xapxi(j) Else
If sosanh(xapxi(j), xapxitren) < 3 Then xapxitren = xapxitren + "," + xapxi(j)
End If Next
If (sosanh(lopdungsai, str) >= 3) Then
If xapxiduoi = "" Then xapxiduoi = tukhoa(i) Else xapxiduoi = xapxiduoi + "," + tukhoa(i)
End If Next
// Cập nhật các xấp xỉ tính được cho các tài liệu rs.Edit rs!cacxapxiduoi = xapxiduoi rs!cacxapxitren = xapxitren rs.Update rs.MoveNext Loop rs1.Close rs.Close DBGrid2.Refresh End Sub
Hình 9: Giao diện thực hiện tính xấp xỉ trên và dưới cho các văn bản.
Đánh giá kết quả: Công việc tính xấp xỉ trên và dưới lấy trực tiếp kết quả
của phần tính lớp dung sai cho các từ đại diện cho văn bản làm đầu vào. Do vậy hiệu quả của phần này phụ thuộc rất nhiều vào các phần đã được xử lý trước đó. Nhìn chung phần cài đặt công việc tính xấp xỉ trên và dưới đã hoạt động được và cho ra kết quả đúng như lý thuyết về cách xây dựng không gian xấp xỉ. Nhưng còn một vấn đề đáng quan tâm đó là việc trích lọc các từ khoá không tốt dẫn đến bùng nổ tổ hợp. Tuy nhiên trong quá trình cài đặt cũng như quá trình test thử chương trình thì sự cố trên vẫn chưa xảy ra.
3. Tìm kiếm văn bản sử dụng mô hình tập thô dung sai
Trong phần tìm kiếm văn bản, nhiệm vụ của hệ thống là phải tính được xấp xỉ trên và dưới của câu truy vấn. Từ đó đưa ra các tài liệu phù hợp nhất có dựa trên các xấp xỉ của từng tài liệu. Trong phần tìm kiếm văn bản này, hệ thống sẽ so sánh
gần với câu truy vấn nhất. Mỗi tài liệu được trả lại sau câu truy vấn sẽ thuộc một trong 12 cấp độ đã được nêu ra trong phần lý thuyết về mô hình TRSM ở phần đầu.
Hình 10: Giao diện phục vụ tìm kiếm văn bản
Đánh giá kết quả: Như chúng ta đã biết, sự khó khăn nhất của bài toán khai phá dữ
liệu văn bản tiếng Việt nói chung cũng như bài toán tìm kiếm văn bản tiếng Việt nói riêng thì ngoài một giải thuật tìm kiếm tốt ra chúng ta cần phải có một phương án giải quyết thật tốt bài toán bài toán tiền xử lý dữ liệu văn bản. Các thuật toán tìm kiếm tốt đến mấy cũng trở thành vô nghĩa khi phần tiền xử lý không tốt. Một điều chắc chắn là nếu chúng ta chọn các từ đại diện cho văn bản không tốt thì kết quả mà chúng ta nhận được sau câu truy vấn sẽ không như mong muốn. Mô hình TRSM cũng không lằm ngoài trường hợp này. TRSM là một mô hình khá phù hợp với bài toán tìm kiếm văn bản tiếng Việt không những đẫ giải quyết khá tốt vấn đề đồng nghĩa mà nó còn đưa ra được những tài liệu sau khi truy vấn theo phương pháp xấp xỉ, đây là một phương pháp khá mới và cũng hiệu quả dựa trên lý thuyết mờ để tìm kiếm thông tin.
Để xây dựng hệ thống tìm kiếm văn bản tiếng Việt sử dụng mô hình tập thô dung sai đạt hiệu quả cao, ngoài phần tách các từ đại diện cho văn bản ra chúng ta còn phải tính chính xác được lớp dung sai của các term để từ đó xây dựng tập xấp xỉ trên
và dưới đại diện cho văn bản một cách chính xác. Do vậy, khi đánh giá tầm quan trọng của mô hình lý thuyết tập thô dung sai chúng ta không được tập chung vào phần nào cả. Bởi vì kết quả của phần trước làm đầu vào cho phần sau và kết quả cuối cùng sẽ phụ thuộc trực tiếp vào tất cả các phần mà mô hình lý thyuết tập thô dung sai đưa ra.
HƯỚNG PHÁT TRIỂN TRONG TƯƠNG LAI
Trong thời gian làm đồ án tốt nghiệp em đã tìm hiểu về các đặc điểm của tiếng Việt cũng như các cách chuyển đổi nguồn dữ liệu văn bản tiếng Việt ở dạng phi cấu trúc về dạng cấu trúc để làm đầu vào cho các mô hình khai phá dữ văn bản liệu nói chung và nguồn dữ liệu phục vụ cho bài toán tìm kiếm văn bản tiếng Việt nói riêng. Đồ án đã trình bầy một số phương pháp về xử lý văn bản tiếng Việt, nghiên cứu một số phương pháp để lọc ra tập các từ khoá và hai mô hình tìm kiếm văn bản tiếng Việt đó là mô hình không gian vector và mô hình tập thô dung sai
đồng thời áp dụng mô hình lý thuyết tập thô dung sai để cài đặt chương trình. Trong đồ án này một số kỹ thuật khai phá dữ liệu văn bản đã được nghiên cứu và tìm hiểu. Mục tiêu của em trong thời gian tới là sẽ là áp dụng những nghiên cứu ở phần trên và từ đó xây dựng được một hệ thống tìm kiếm văn bản tiếng Việt tự động. Việc tự động được thực hiện từ việc tách từ, đánh trọng số cho các từ được tách, lọc các từ đại diện cho văn bản và cuối cùng là áp dụng và cải tiến mô hình tập tập thô dung sai vào công việc tìm kiếm văn bản Việt.
Cụ thể hơn về những công việc cũng như các bước cần phải làm để có thể hoàn thiện được một hệ thống phục vụ tìm kiếm văn bản tiếng Việt một cách hiệu quả đó là:
Nghiên cứu và lựa chọn ra một kỹ thuật tách các từ đại diện cho văn bản sao cho thật chính xác. Áp dụng phân tích cú pháp đối với văn bản đầu vào sau đó áp dụng kỹ thuật sinh từ đại diện. Từ tập các từ đại diện, thực hiện kỹ thuật lọc từ để đưa ra các từ đại diện cuối cùng cho văn bản. Những terms được tách ra của văn bản cần phải có đầy đủ những yếu tố sau: Đó là các từ đại diện đặc trưng nhất của văn bản và đồng thời phân biệt được sự khác biệt giữa văn bản này với văn bản khác trong tập các văn bản.
Đưa ra phương pháp xử lý tốt và hiệu quả đối với vấn đề đồng âm khác nghĩa hoặc đồng nghĩa khác âm, giải quyết được phần nào sự nhập nhằng trong ngôn ngữ.
Tổ chức dữ liệu hợp lý để đáp ứng được thời gian xử lý và thích hợp về không gian lưu trữ đồng thời có thể chạy tốt trên môi trường nhiều người sử dụng.
Xây dựng một mô hình tìm kiếm văn bản tiếng Việt dựa trên mô hình TRSM đồng thời có những cải tiến về mặt thuật toán để có thể đáp ứng được tính hợp lý, chính xác cao trong việc tìm kiếm văn bản tiếng Việt.
TÀI LIỆU THAM KHẢO.
1 Nguyễn Văn Ba - Giáo trình ngôn ngữ hình thức – Nguyễn Văn Ba - Trường đại học Bách Khoa Hà Nội
2 Nguyễn Tài Cẩm - Từ loại danh từ trong tiếng Việt hiện đại
3 Lê Minh Hiền- Một số phương pháp xử lý văn bản tiếng Việt tự động– Luận văn thạc sỹ - Trường đại học Bách Khoa Hà Nội
4 Lê Thanh Hương - Phân Tích cú pháp tiếng Việt –Luận văn thạc sỹ - Trường đại học Bách Khoa Hà Nội.
5 Phạm Thị Anh Lê -Tìm kiếm thông tin dựa vào phương pháp thống kê- luận văn thạc sỹ - Trường đại học Bách Khoa Hà Nội
6 Vũ Lục - Giáo trình phân tích cú pháp – Trường đại học Bách Khoa Hà Nội
7 Lưu Anh Tuấn - Khai phá dữ liệu văn bản tiếng Việt - Luận văn tốt nghiệp - Trường đại học Bách Khoa Hà Nội
8 Hồ Tú Bảo, Funakoshi K.-Information Retrieval Using Rough Sets
9 Nguyễn Ngọc Bình, Hồ Tú Bảo Nonhierarchical Document clustering based
on Tolerance Rough Set model
10 V.S.Subrahmanian- Principles of multimedia database system
11 Roby L.kennedy, Yuchung Lee, Benjamin Van Roy Solving Data Mining Problems Through pattern Recognition
12 Ngữ pháp tiếng Việt – Trung tâm khoa học xã hội và nhân văn quốc gia- Nhà
xuất bản giáo dục
13 Text Data Mining – Http://citeseer.nj.nec.com/cs
14 Text Mining – Knowled extraction from unstructured textual data –
Http://citeseer.nj.nec.com/cs