M ở đầ u
3.3.2. Thuật toán sinh PrefixPattern
PrefixPattern có dạng tổng quát là A1|A2|….|An Vấn đề là từ tập các PrefixStrings, tìm ra quy tắc hợp lý để sinh ra các thành phần A1, A2, … An đó. Một PrefixPattern được coi là tốt nếu mỗi thành phần A1, A2,…., An củanó được sinh ra từ nhiều PrefixStrings, và phải là các PrefixStrings của nhiều thực thể khác nhau đểđảm bảo PrefixPattern đó không riêng biệt và không chung chung.
Thủ tục sinh ra các thành phần Aiđược mô tả như sau: procedure GeneratePattern ( D )
Đầu vào: tập các PrefixString D
Đầu ra: danh sách các {Ai}
Begin
L={};
1) Chia D thành các miền D1, D2, … Dk sao cho: - Di∩Dj= Ө ( i≠j)
- Các PrefixString trong mỗi miền Di có thành phần S khớp với nhau “phải nhất” (tính từ cuối mỗi xâu) ít nhất một từ (word) – gọi là xâu Si .
2) For eachDiDo Gọi CNi là tổng số thực thể khác nhau trong Di.; Gọi CCi = Ci0 + Ci1 + … + Cik (k = | Di | ) If (CNi > m) AND (CCi > n) Then L=L+{Si}; End If End For Return L; End
- D ban đầu gồm các PrefixStrings như sau :
{ <”Tổng công ty”,”Thép Việt Nam”, 10> ; <”Theo Hiệp hội”, “Thép Việt Nam”, 5>; <”công ty”, “Thép Việt Nam”, 7”>; <”Hiệp hội”, “Gỗ và Lâm sản Việt Nam”, 6> }. - Sau bước thứ nhất sẽ chia làm 2 miền D1, D2 là:
D1 ={< ”Tổng công ty”,”Thép Việt Nam”, 10 > ; < ”công ty”, “Thép Việt Nam”, 7 >}
D2 = { < ”Theo Hiệp hội”, “Thép Việt Nam”, 5 >; <”Hiệp hội”, “Gỗ và Lâm sản Việt Nam”, 6 > }
Và S1 = “công ty”, S2 = “Hiệp hội”; - Bước thứ 2 thu được:
CN1 = 1, CN2 = 2;
CC1 = 17, CC2 = 11;
Giả sửm = 1 và n = 10 thì kết quả trả về là L = { “Hiệp hội” }. Và PrefixPattern sinh ra là : PrefixPattern = (Hiệp hội)
Thủ tục trên tương đối đơn giản, các thành phần Ai chỉ là phần khớp nhau phải nhất (
Si ) trong mỗi miền Di . Do đó cần chọn lọc các Si tin cậy để gán cho Ai . Xác định độ tin cậy của mỗi Si theo biểu thức:
CNi > m AND CCi > n (như trong thủ tục trên)
m, n là “ngưỡng” tùy chọn – dựa vào thực nghiệm để tìm ra giá trị phù hợp nhất. Thỏa mãn thỏa mãn điều kiện CNi > m nghĩa là thành phần Ai được “sinh ra” bởi nhiều hơn m thực thể, tức là nó không riêng biệt cho một thực thể nào cả. Điều này rất cần thiết, bởi nó phải là sự “đóng góp” của nhiều thực thể thì mới thể hiện là “đại diện” cho tiền tố
của các tên . Thỏa mãn CCi > n nghĩa là nó đại diện cho hơn n tiền tố của các thực thể. Do
đó CCi càng lớn thì độ tin cậy càng cao.
Xác định ngưỡng m, n là không dễ dàng. Bằng nhiều thực nghiệm khác nhau với những cặp giá trị (m, n) thay đổi khác nhau và quan sát kết quả đạt được tương ứng để
chọn ra giá trịm,n hợp lý nhất.
Vẫn có những trường hợp Aiđã được chọn lọc ở bước trên nhưng chúng là những từ
tắc để chọn lọc tiếp sẽ thu được PrefixPattern tốt hơn. Liệt kê tất cả các trường hợp là
điều khó khăn, trong khóa luận này em chỉ hạn chế theo một giới hạn nào đó. Cụ thể, nếu
Ai của PrefixPattern chỉ là một xâu gồm một từ, mà từđó chỉ gồm 2 ký tự sẽ bị loại bỏ. Ví dụ như các từ : “và, do, là …” sẽ bị loại bỏ. Kết quả thu được PrefixPattern hợp lý để sử
dụng cho vòng lặp tiếp theo.