Các bước để gán nhãn cho một trang Web tiếng Việt được minh ho ̣a như hình vẽ dưới đây
Hình 11: Cấu trúc hê ̣ thống trích chọn tên riêng
III.3 Các tham số huấn luyện và đánh giá thực nghiệm
III.3.1 Huấn luyện
Dùng lệnh crf_learn
Cú pháp: % crf_learn template_file train_file model_file Trong đó:
- Template_file: file mô tả các mẫu của thẻ.
- Train_file: file dùng để huấn luyện. Input (text)
Tiền xử lý Lựa cho ̣n thuô ̣c tính
CRF++ framework
Khôi phu ̣c + tagging Output (text)
- Model_file: file mô hình huấn luyện.
III.3.1.1 Các tham số huấn luyện
Mô ̣t số tùy cho ̣n trong CRF++ framework cho quá trình huấn luyê ̣n: Tham số -a được dùng để lựa chọn thuật toán huấn luyện. Tham số này có 3 lựa chọn:
- CRF-L1: thuật toán CRF - CRF-L2: thuật toán CRF - MIRA: thuật toán perceptron
Nếu tham số -a là CRF-L1 hoặc CRF-L2 ta có các tham số:
Tham số Giá trị Ý nghĩa
-c float 1.5
Tham số này điều chỉnh độ bất cân đối của dữ liệu. Tùy vào dạng phân bố của dữ liệu mà ta đặt tham số này. Giá trị tối ưu có thể tìm thấy bằng cách thực hiện thủ công hoặc thông qua phương pháp lựa chọn mô hình như cross- validation
-f NUM 3
Tham số thiết lập ngưỡng đối với các đặc trưng. CRF++ dùng các đặc trưng xuất hiện không ít hơn NUM lần trong dữ liệu huấn luyện. Khi ta dụng CRF++ đối với tập dữ liệu lớn, số lượng các đặc trưng có thể lên đến hàng triệu, thì việc sử dụng tham số NUM là cần thiết.
-p NUM: 1
Nếu PC có nhiều CPU, khi đó ta có thể thực hiện việc huấn luyện nhanh hơn bằng cách sử dụng đa luồng. NUM là số luồng
Bảng 2: Các tham số trong quá trình huấn luyện đối với thuật toán CRF
Nếu tham số -a là MIRA thì ta có các tham số tiếp theo:
Tham số Giá trị Ý nghĩa
-c float 1.5
Về cơ bản tham số này có ý nghĩa tương tự như tham số -c đối với thuật toán CRF. Với giá trị C lớn thì thuật toán hướng tới việc overfit đối với dữ liệu huấn luyện.
-f NUM 3 Giống -f trong CRF
-H NUM: 2
Thiết lập độ co của dữ liệu, Khi một câu huấn luyện sau NUM lần không được dùng để thực hiện việc cập nhật giá trị của vectơ tham số, ta có thể coi câu đó không có trong dữ liệu huấn luyện nữa. Quá trình loại bỏ này gọi là sự co lại của dữ liệu (shrinking)
Bảng 3: Các tham số trong quá trình huấn luyê ̣n đối với thuật toán MIRA
Mô ̣t hê ̣ thống trích chọn tên riêng có thể được đánh giá ở mức độ nhãn hoặc ở mức độ cụm từ. Để hiểu rõ hơn vấn đề này chúng ta hãy xem xét ví du ̣ sau :
chính xác sẽ là 2/3. Ở mức độ cụm từ , ta muốn cả cu ̣m này được đánh dấu là tên người hay chuỗ i nhãn tương ứng phải là “B _PER I_PER I_PER”, đô ̣ chính xác khi xét ở mức độ cụm từ sẽ là 0/1 (thực tế có mô ̣t cu ̣m tên thực thể nhưng hê ̣ thống không đánh dấu đúng được cu ̣m nào).
III.3.1.2 Phương pháp “10-fold cross validation”
Hê ̣ thố ng thử nghiê ̣m theo phương pháp “ 10-fold cross validation” . Theo phương pháp này, dữ liê ̣u thực nghiê ̣m được chia thành 10 phần bằng nhau, lần lượt lấy 9 phần để huấn luyê ̣n và 1 phần còn la ̣i để kiểm tra , kết quả sau 10 lần thực nghiệm đươ ̣c ghi la ̣i và đánh giá tổng thể.
III.3.2 Kiểm tra
Sử dụng lệnh crf_test
Cú pháp: % crf_test -m model_file test_files ... Trong đó:
- file model_file: chính là file model của lệnh huấn luyện
- test_files: file dùng để chạy kiểm tra kết quả huấn luyện
III.4 Lựa chọn các thuộc tính
Lựa cho ̣n các thuô ̣c tính từ tâ ̣p dữ liê ̣u huấn luyê ̣n là nhiệm vụ quan trọng nhất, giữ vai trò quyết đi ̣nh chất lượng của mô ̣t hê ̣ thống trích chọn tên riêng. Các thuô ̣c tính được lựa cho ̣n càng t inh tế thì đô ̣ chính xác của hê ̣ thống càng tăng . Do tiếng Viê ̣t thiếu các thông tin ngữ pháp (POS) cũng như các nguồn tài nguyên có thể tra cứu nên để có thể đa ̣t được đô ̣ chính xác gần với đô ̣ chính xác đa ̣t được với các hệ thống xây dựng cho tiếng Anh cần phải lựa chọn các thuộc tính một cách cẩn thâ ̣n và hợp lý.
Các thuộc tính tại vị trí i trong chuỗi dữ liệu quan sát gồm hai phần , mô ̣t là thông tin ngữ cảnh tai vi ̣ trí i của chuỗi dữ liê ̣u quan sát , hai là phần thông tin về
nhãn tương ứng. Công viê ̣c lựa cho ̣n các thuô ̣c tính thực chất là cho ̣n ra các mẫu vị từ ngữ cảnh (context predicate template), các mẫu này thể hiện những các thông tin đáng quan tâm ta ̣i m ột vị trí bất kì trong chuỗi dữ liệu quan sát . Áp dụng các mẫu ngữ cảnh này ta ̣i m ột vị trí trong chuỗi dữ liệu quan sát cho ta các thông tin ngữ cảnh (context predicate ) tại vị trí đó . Mỗi thông tin ngữ cảnh ta ̣i i khi kết hợp với thông tin nhãn tương ứng ta ̣i vi ̣ trí đó sẽ cho ta mô ̣t thuô ̣c tính của chuỗi dữ liê ̣u quan sát ta ̣i i . Như vâ ̣y mô ̣t khi đã có các mẫu ngữ cảnh , ta có thể rút ra được hàng nghìn thuộc tính một cách tự động từ tập dữ liệu huấn luyện.
Các thuộc tính được mô tả trong các file mẫu (template file) và file huấn luyện (train file). Các file mẫu mô tả các ngữ cảnh về từ vựng. Các file huấn luyện mô tả các dữ liệu được dùng để huấn luyện.
III.4.1 File huấn luyện
Mỗi file huấn luyện chứa nhiều token, mỗi token tương ứng sẽ được mô tả trên một dòng. Mỗi dòng có thể có nhiều cột (số cột trên mỗi dòng là giống nhau). Trong các bài toán khác nhau, token được hiểu là khác nhau. Trong bài toán trích chọn tên riêng các token được hiểu như các từ. Các token liên tiếp tạo thành một chuỗi quan sát (observation sequence). Dòng trắng được xen vào trong file huấn luyện tương ứng với việc kết thúc một chuỗi quan sát.
Với mỗi dòng, cột đầu tiên luôn là nội dung của token, cột cuối cùng là nhãn đúng của token
Trong hệ thống trích chọn tên riêng mà tôi xây dựng, mỗi dòng mô tả token sẽ gồm 3 cột. Cột đầu tiên chứa nội dung của từ, cột thứ hai mô tả thuộc tính chính tả của từ (orthographic), cột thứ tư là nhãn đúng của từ.
Tên thuộc tính Viết tắt Ý nghĩa Ví dụ
all_cap wf:ac Tất cả đều là chữ cái viết hoa TCVN
all_cap_and_digit wf:acd Tất cả đều là chữ cái viết hoa
và chữ số 12ABC
all_digit wf:ad Tất cả đều là số 123
alphanumeric wf:alm Tất cả đều là chữ cái và số tp23
all_cap_and_hyphen wf:cah Tất cả đều là chữ cái viết hoa
và dấu gạch ngang BC-VT
contain_comma_sign wf:ccs Chứa dấu phẩy 12,21
contain_dot_sign wf:cds Chứa dấu chấm 21.32
contain_colon_sign wf:cls Chứa dấu hai chấm 12:21:15
contain_slash_sign wf:css Chứa dấu gạch chéo QD123/BGDDT/07
initial_cap wf:ic Chữ cái đầu là chữ hoa Nguyễn
initial_cap_and_dot_sign wf:icds Chữ cái đầu là chữ hoa và chứa
dấu chấm Tp.Hồ Chí Minh
initial_cap_and_hyphen wf:ich Chữ cái đầu là chữ hoa và chứa dấu gạch ngang
Bưu chính - Viễn thông
all_lower_case wf:lower Tất cả đều là chữ thường ngang
all_digit_and_hyphen wf:adh Tất cả đều là số và dấu gạch
ngang 12-21-2007
Lamingo wf:ic B-loc ĐạiLải wf:ic I-loc Resort wf:ic I-loc
được O O
quyhoạch O O
bởi O O
Côngty wf:ic B-org Kiến wf:ic I-org trúc wf:lower I-org ViệtNam wf:ic I-org
và O O
Trungtâm wf:ic B-org Pháttriển wf:ic I-org vùng wf:lower I-org Sena wf:ic I-org
Hình 12: Mô tả một chuỗi quan sát trong file huấn luyện.
III.4.2 File mẫu:
Có hai loại: mẫu đơn (Unigram), mẫu kép (Bigram)
Loại mẫu đơn: mẫu này được bắt đầu bằng chữ cái „U‟. Mẫu đơn có dạng
%x[row,col], mẫu này được dùng để xác định một token trong dữ liệu đầu vào. Trong đó row tương ứng với vị trí tương đối đối với token được quan sát tại thời điểm hiện thời, col tương ứng với vị trí cố định trong file huấn luyện.
Với mẫu U01:%x[0,1], và một đoạn của file train tương ứng với mẫu quan
sát “Bộ Bưu chính – Viễn thông vừa ra quyết định cho phép thêm 2 doanh nghiệp nữa tham gia cung cấp dịch vụ viễn thông kể từ tháng 1/2007”là:
Bộ wf:ic wf:iorg B-org
Bưu chính – Viễn thông wf:icah wf:iorg I-org
vừa O O << Từ hiện thời
ra O O
quyết định O O
Khi đó, các hàm đặc trưng được sinh ra tương ứng là:
hàm 1: if(ouput=B-org and feature U01:wf:ic) return 1 else return 0 hàm 2: if(ouput=I-org and feature U01:wf:icah) return 1 else return 0 ….
Số hàm được sinh ra tương ứng bằng (N*L) trong đó L là số lớp đầu ra có thể. N là số chuỗi phân biệt có thể được gán tương ứng với mỗi lớp đầu ra. Trong hệ thống tôi xây dựng, số lớp đầu ra L = 9 (B-org, I-org, B-loc, I-loc, B-time, I-time, B-per, I-per, và O). Nếu đặc trưng tương ứng trong cột hai ta có 14 đặc trưng (N=14). Nếu đặc trưng tương ứng trong cột ba ta có 6 đặc trưng (N=6)
Loại mẫu kép: mẫu này được bắt đầu bằng chữ cái „B‟. Mẫu này sẽ tự động sinh ra một kết hợp giữa token hiện thời và token ngay trước đó. Số hàm được sinh ra bởi một đặc trưng kép này bằng (N*N*L). (ý nghĩa của L và N tương tự như trong mẫu đơn.
# Unigram U00:%x[-2,0] U01:%x[-1,0] U02:%x[0,0] U03:%x[1,0] U04:%x[2,0] U05:%x[-1,0]/%x[0,0] U06:%x[0,0]/%x[1,0] U10:%x[-2,1] U11:%x[-1,1] U12:%x[0,1] U13:%x[1,1] U14:%x[2,1] U15:%x[-2,1]/%x[-1,1] U16:%x[-1,1]/%x[0,1] U17:%x[0,1]/%x[1,1] U18:%x[1,1]/%x[2,1] U20:%x[-2,1]/%x[-1,1]/%x[0,1] U21:%x[-1,1]/%x[0,1]/%x[1,1]
U22:%x[0,1]/%x[1,1]/%x[2,1] # Bigram
B
Hình 13: File mẫu của hệ thống
III.5 Kết quả thực nghiệm
Kết quả của 10 lần thử nghiê ̣m với thuật toán perceptron
70 75 80 85 90 95 1 2 3 4 5 6 7 8 9 10
Precision Recall F-measure
Hình 14: Giá trị ba độ đo Precision, Recall, F-measure qua 10 lần thực nghiê ̣m với thuật toán perceptron
Lần thực nghiê ̣m cho kết quả tốt nhất:
Manual Model Match Precision Recall F-measual
loc 149 150 129 86.0 86.5 86.25 org 258 263 237 90.1 91.8 90.94 per 147 141 127 90.0 86.3 88.11 time 213 218 210 96.3 98.5 97.39 avg1: 90.60 90.77 90.68 avg2: 767 772 703 91.06 91.65 91.35
Bảng 5: Đánh giá mức cụm từ - Lần thực nghiê ̣m cho kết quả tốt nhất với thuật toán perceptron
Manual Model Match Precision Recall F-measual B-loc 161 158 136 86.00 84.40 85.19 I-loc 81 88 69 78.40 85.10 81.61 B-org 266 269 239 88.80 89.80 89.30 I-org 222 224 203 90.60 91.40 91.00 B-per 150 146 129 88.30 86.00 87.13 I-per 20 15 13 86.60 65.00 74.26 B-time 214 220 210 95.40 98.10 96.73 I-time 320 322 317 98.40 99.00 98.70 avg1: 89.00 87.30 88.10 avg2: 1434 1442 1316 91.20 91.70 91.45
Bảng 6: Đánh giá mức nhãn - Lần thực nghiê ̣m cho kết quả tốt nhất với thuật toán perceptron
Trung bình 10 lần thực nghiê ̣m
Độ đo Mức nhãn (%) Mức cụm từ (%)
Precision 90.32 89.26
Recall 90.67 90.14
F-measure 90.49 89.69
Kết quả của 10 lần thử nghiê ̣m với thuật toán crf 70 75 80 85 90 95 1 2 3 4 5 6 7 8 9 10
Precision Recall F-measure
Hình 15: Giá trị ba độ đo Precision, Recall, F-measure qua 10 lần thực nghiê ̣m với thuật toán crf
Lần thực nghiê ̣m cho kết quả tốt nhất:
Manual Model Match Pre Rec F-measual
loc 149 150 129 86 86.5 86.25 org 258 263 237 90.1 91.8 90.94 per 147 141 127 90 86.3 88.11 time 213 218 210 96.3 98.5 97.39 avg1: 90.6 90.77 90.68 avg2: 767 772 703 91.06 91.65 91.35
Manual Model Match Pre Rec F-measual B-loc 157 158 137 86.70 87.20 86.95 I-loc 77 88 67 76.10 87.00 81.19 B-org 264 269 243 90.30 92.00 91.14 I-org 232 224 209 93.30 90.00 91.62 B-per 152 146 132 90.40 86.80 88.56 I-per 16 15 13 86.60 81.20 83.81 B-time 215 220 212 96.30 98.60 97.44 I-time 321 322 318 98.70 99.00 98.85 avg1: 89.80 90.20 89.90 avg2: 1434 1442 1331 92.30 92.80 92.55
Bảng 9: Đánh giá mức nhãn - Lần thực nghiê ̣m cho kết quả tốt nhất với thuật toán crf
Trung bình 10 lần thực nghiê ̣m
Độ đo Mức nhãn (%) Mức cụm từ (%)
Precision 90.40 88.80
Recall 91.00 89.60
F-measure 90.40 88.80
80 81 82 83 84 85 86 87 88 89 90 91
Precision Recall F-measure
perceptron crf
Hình 16: So sánh độ chính xác của hai thuật toán perceptron và crf
Nhâ ̣n xét
Bước đầu thực nghiê ̣m hê ̣ thống trích chọn tên riêng cho văn bản Tiếng Việt đã có kết quả tương đối khả quan . Tuy nhiên hệ thống hiện thời mới chỉ đáp ứng cho việc nhận diện các văn bản dạng chuẩn tắc mà chưa có khả năng thứ lỗi đối với các văn bản tự do. Các dữ liệu thu thập được vẫn chỉ trong trang vnexpress.net mà chưa chú trọng đến các văn bản ngoài. Nhưng tôi tin rằng khi xây dựng được bộ dữ liệu dồi dào và phong phú hơn, với nhiều các đặc trưng tổng quát hơn sẽ cho kết quả cao hơn trong tương lai.
KẾT LUẬN
Những vấn đề đã được giải quyết trong luận văn
Luận văn đã hê ̣ thống hóa m ột số vấn đề lý thuyết về trích chọn thông tin , bài toán trích chọn tên riêng đồng thời trình bày, phân tích, đánh giá mô ̣t số hướng tiếp câ ̣n bài toán trích chọn tên riêng. Mô ̣t số vấn đề và giải pháp đối với bài toán trích chọn tên riêng cho văn bản tiếng Viê ̣t dựa trên mô hình CRF và thuật toán perceptron đã đươ ̣c đề xuất , thực nghiê ̣m và thu được mô ̣t số kết quả rất khả quan . Sau đây là mô ̣t số nét chính mà luâ ̣n văn đã tâ ̣p trung giải quyết .
Chương mô ̣t đưa ra mô ̣t cái nhìn khái quát về trích cho ̣n thông tin , bài toán trích chọn tên riêng , mô hình hóa bài toán dưới da ̣ng mô ̣t bài toán gán nhãn dữ liệu dạng chuỗi và những ứng dụng của bài toán trích chọn tên riêng, từ đó thấy được sự cần thiết phải có mô ̣t hê ̣ thống trích chọn tên riêng cho tiếng Viê ̣t.
Chương hai xem xét một số phương pháp học thống kê như HMMs, CRFs và thuật toán perceptron. Việc đi sâu vào việc phân tích, đánh giá từng phương pháp trong chương này cho thấy sự nghèo nàn của các thuộc tính được chọn trong mô hình HMMs và vấn đề “label bias” mà các mô hình HMMs và MEMM gă ̣p phải . Những đánh giá này lý giải vì sao tôi lại lựa chọn phương pháp học máy CRF s và perceptron là cơ sở để xây dựng hệ thống trích chọn tên riêng cho văn bản tiếng Viê ̣t.
Chương ba trình bày hệ thống trích chọn tên riêng cho văn bản tiếng Viê ̣t và đề xuất các phương pháp lựa chọn thuộc tính cho việc nhận diện các loại thực thể trong các văn bản tiếng Viê ̣t . Chương này cũng đưa ra các kết quả của hê ̣ thống trích chọn tên riêng tiếng Viê ̣t qua mô ̣t số lần thực nghiê ̣m.
Hướng phát triển
Mă ̣c dù kết quả phân loa ̣i thực thể của hê ̣ thống có thể tốt hơn nữa nhưng do thời gian có ha ̣n nên tôi mới chỉ dừng la ̣i ở con số trung bình là 88%, trong thời gian
tới, tôi sẽ tiếp tục nghiên cứu nhằm cải thiện hệ thống , tôi tin rằng kết quả này có thể tăng lên trên 90% ở mức cụm từ.
Trên cơ sở hê ̣ thống trích chọn tên riêng tiếng Viê ̣t hiê ̣n nay , tôi dự đi ̣nh sẽ mở rô ̣ng loại thực thể và cụ thể hóa các loại thực thể như phân nhỏ loại thực thể chỉ đi ̣a danh thành các loa ̣i thực thể chỉ đất nước, sông ngòi, ....
Tìm hiểu và xây dựng mô ̣t hê ̣ thống nhâ ̣n diê ̣n mối quan hê ̣ giữa các thực