Khoảng cách chỉnh sửa, WER và CER
Khoảng cách chỉnh sửa, WER và CER
Máy nhận dạng nghe một câu rồi viết ra một câu khác. Chấm nó bằng cách hỏi: cần sửa bao nhiêu chỗ thì câu máy thành câu người nói.
Có ba cách sửa một chuỗi: thay thế một phần tử bằng phần tử khác, chèn thêm một phần tử, xoá một phần tử đi. Khoảng cách chỉnh sửa là số phép sửa ít nhất cần dùng để biến chuỗi này thành chuỗi kia. Chia con số đó cho độ dài câu tham chiếu thì được WER nếu đơn vị là từ, hoặc CER nếu đơn vị là ký tự. Đây là thước đo mặc định của mọi hệ nhận dạng tiếng nói.
Cái hay là khoảng cách chỉnh sửa không tính bằng cách thử mọi cách sửa, mà bằng một bảng nhỏ điền từ trái trên xuống phải dưới. Bảng đó hiện đầy đủ trong sim bên dưới, và bạn mở được từng ô để xem ba ứng viên đã tranh nhau ô ấy.
| ε | tôi | mua | vé | đi | ngay | ra | hà | lội | |
|---|---|---|---|---|---|---|---|---|---|
| ε | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| tôi | 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| muốn | 2 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| mua | 3 | 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| vé | 4 | 3 | 2 | 1 | 2 | 3 | 4 | 5 | 6 |
| đi | 5 | 4 | 3 | 2 | 1 | 2 | 3 | 4 | 5 |
| hà | 6 | 5 | 4 | 3 | 2 | 2 | 3 | 3 | 4 |
| nội | 7 | 6 | 5 | 4 | 3 | 3 | 3 | 4 | 4 |
nội của tham chiếu với lội của câu máy- Thay thế (đường chéo): ô (6, 7) + 1 = 4
- Chèn (từ bên trái): ô (7, 7) + 1 = 5
- Xoá (từ bên trên): ô (6, 8) + 1 = 5
Mỗi ô trong bảng là một câu hỏi nhỏ
Hàng là câu tham chiếu, cột là câu máy. Ô ở hàng i cột j ghi chi phí nhỏ nhất để biến i phần tử đầu của câu tham chiếu thành j phần tử đầu của câu máy. Hàng 0 và cột 0 điền được ngay: biến chuỗi rỗng thành j phần tử thì tốn đúng j phép chèn, và biến i phần tử thành chuỗi rỗng thì tốn đúng i phép xoá.
Mọi ô còn lại chỉ có ba đường đi tới, và ta lấy đường rẻ nhất:
- đường chéo, tức ô trên bên trái cộng 0 nếu hai phần tử trùng nhau (giữ nguyên) hoặc cộng 1 nếu khác nhau (thay thế),
- từ bên trái cộng 1, tức chèn một phần tử của câu máy,
- từ bên trên cộng 1, tức xoá một phần tử của câu tham chiếu.
Rê chuột hoặc bấm vào một ô bất kỳ, khung bên dưới bảng in ra cả ba ứng viên và đánh dấu cái thắng. Ô ở góc dưới bên phải chính là khoảng cách của cả hai câu. Đi ngược lại từ đó theo nước đi thắng của từng ô thì ra đường truy vết, tức dãy phép sửa rẻ nhất, và sim tô đậm đúng dãy ô đó.
Ba con số phải đọc cùng nhau
Ở trạng thái mặc định, câu tham chiếu có 7 từ, câu máy có 8 từ, và khoảng cách bằng 4: máy nuốt mất muốn (1 phép xoá), thêm ngay và ra (2 phép chèn), nghe nội thành lội (1 phép thay thế), 5 từ còn lại giữ nguyên. Chia cho 7 từ tham chiếu ra WER 57,14%.
Con số đó tách được thành ba phần. Chú ý là ở đây D viết tắt cho số phép xoá, còn cả tử số S + I + D mới là khoảng cách chỉnh sửa, tức con số 4 mà sim ghi trong thẻ đầu tiên:
S = 1 thay thế, I = 2 chèn, D = 1 xoá, N = 7 từ tham chiếu
WER = (S + I + D) / N = (1 + 2 + 1) / 7 = 4 / 7 = 57,14%
thay thế 1/7 = 14,29%, chèn 2/7 = 28,57%, xoá 1/7 = 14,29%
Ba phần cộng lại đúng bằng WER, nhưng chỉ đúng ở dạng phân số. Sim in mỗi phần đã làm tròn hai chữ số, nên cộng ba chuỗi trên màn hình lại ra 57,15% chứ không phải 57,14%. Lệch 0,01% đó là do làm tròn khi hiển thị, không phải do phép cộng sai.
Tách như vậy có ích thật sự. Một hệ có WER 20% toàn do xoá là hệ nghe hụt, thường vì âm lượng thấp hay nói nhanh. Một hệ có WER 20% toàn do chèn là hệ đang bịa chữ, thường vì mô hình ngôn ngữ kéo. Hai bệnh khác nhau, hai cách chữa khác nhau, nhưng một con số WER gộp thì không phân biệt được.
WER vượt quá 1 là chuyện bình thường
Đây là chỗ hay bị hiểu nhầm nhất, nên hãy tự tay kiểm chứng. Bấm preset WER vượt quá 1: câu tham chiếu là mở đèn gồm 2 từ, câu máy là bật cái đèn trần lên gồm 5 từ. Khoảng cách bằng 4 (một phép thay thế và ba phép chèn), và sim in ra WER 200%.
Không có gì hỏng cả. Mẫu số của WER là độ dài câu tham chiếu, không phải số phép so sánh và cũng không phải số phép sửa. Câu máy dài hơn bao nhiêu thì số phép chèn nhiều lên bấy nhiêu, trong khi mẫu số đứng yên ở 2. Riêng tỉ lệ chèn ở ví dụ này đã là 150%. Vậy WER có sàn bằng 0 nhưng không có trần. Ai báo cáo độ chính xác bằng cách lấy 1 - WER sẽ ra số âm trong đúng tình huống này, và đó là dấu hiệu công thức bị dùng sai chứ không phải hệ thống tệ hơn mức tệ nhất.
Cùng lý do đó, WER không đối xứng dù khoảng cách chỉnh sửa thì đối xứng. Bấm Đổi vai hai câu ở trạng thái mặc định: khoảng cách vẫn là 4, nhưng mẫu số đổi từ 7 thành 8 nên WER tụt xuống 50,00%. Khi so hai bài báo, phải chắc rằng cả hai đặt câu người nói ở mẫu số.
Theo từ hay theo ký tự
Công tắc đơn vị đổi cái được đếm chứ không đổi thuật toán. Bấm preset Sai một dấu, hai câu chỉ khác nhau đúng một ký tự (nội thành lội):
- theo từ: 1 lỗi trên 7 từ, WER 14,29%,
- theo ký tự: 1 lỗi trên 25 ký tự, CER 4,00%.
WER phạt nặng gấp hơn ba lần, vì với nó một từ chỉ có đúng hoặc sai, không có gần đúng. Đó là lý do tiếng Việt, tiếng Trung, tiếng Nhật và các bài toán nhận dạng chữ viết tay thường báo CER song song với WER: CER thấy được phần đúng bên trong một từ sai.
Nhưng đừng suy ra rằng CER luôn nhỏ hơn WER. Ở chính trạng thái mặc định, CER là 56,00% còn WER là 57,14%, gần bằng nhau, vì ở đó máy thêm hẳn hai từ lạ nên phần ký tự chèn cũng phình ra theo. Quan hệ giữa hai con số phụ thuộc vào loại lỗi, không phải một quy luật.
Những quy ước phải nói ra
Khoảng cách chỉnh sửa nhìn thì khách quan, nhưng có vài chỗ là lựa chọn chứ không phải chân lý. Sim này chọn như sau, và bạn nên hỏi đúng những câu này khi đọc WER của người khác.
Thay thế tốn 1, không phải 2. Vài giáo trình tính thay thế bằng 2 để nó đúng bằng xoá rồi chèn. WER và CER thì không bao giờ định nghĩa như vậy, nên ở đây thay thế tốn 1.
Chuẩn hoá. Công tắc Chuẩn hoá hoa thường và dấu câu khi bật sẽ hạ hết về chữ thường và bỏ các dấu . , ; : ! ? cùng các loại ngoặc, dấu nháy và dấu ba chấm. Tắt nó đi ở trạng thái mặc định thì khoảng cách nhảy từ 4 lên 6 và WER nhảy từ 57,14% lên 85,71%. Đúng hai lỗi mới, cả hai đều do viết hoa: Tôi khác tôi, Hà khác hà. Dấu chấm cuối Nội. thì không sinh thêm lỗi nào, vì nội với lội vốn đã bị tính một phép thay thế rồi. Trên dải phép biến đổi bạn sẽ thấy cặp Hà → hà hiện đúng như vậy, còn lỗi viết hoa kia bị quy ước phá hoà kể lại thành ✕ Tôi cùng muốn → tôi; số lỗi vẫn là hai, chỉ cách kể là khác. Khoảng trắng thừa thì luôn bị gộp dù công tắc bật hay tắt, vì gõ hai dấu cách không phải là lỗi nhận dạng. Chuỗi cũng luôn được đưa về dạng NFC, để ô viết liền một mã và ô ghép từ o với dấu mũ không thành hai con số khác nhau.
Từ tiếng Việt ở đây là âm tiết. Sim cắt theo khoảng trắng, nên hà nội là hai từ chứ không phải một. Đây là cách phổ biến khi báo WER tiếng Việt, nhưng nếu ai đó gộp hà nội thành một token thì mẫu số của họ nhỏ hơn và WER của họ không so trực tiếp được với con số ở đây.
Ở chế độ ký tự, dấu cách cũng là một ký tự. Câu mở đèn dài 6 ký tự chứ không phải 5.
Hoà thì phá thế nào. Rất nhiều cặp câu có vài đường truy vết cùng chi phí. Bấm preset Bản dịch khác chữ: khoảng cách là 3, và sim kể lại thành ba phép thay thế, dù cách đọc "chèn đang, thay trên bằng dưới, xoá tấm" cũng đúng 3 phép. Sim ưu tiên đường chéo, rồi tới xoá, rồi tới chèn. Khoảng cách không đổi theo quy ước này, nhưng bảng phân loại lỗi thì đổi, nên đừng đọc tỉ lệ chèn hay xoá như một sự thật tuyệt đối khi hai câu có nhiều cách khớp.
Mẫu số bằng 0. Bấm preset Tham chiếu rỗng: khoảng cách vẫn tính được và bằng 2, nhưng N bằng 0 nên sim ghi thẳng là không xác định thay vì để NaN lọt ra màn hình. Toolkit khác có thể chọn trả về 0, hoặc bỏ câu đó khỏi phép tính chung. Cả ba đều là quy ước, miễn là nói rõ.
Khoảng cách chỉnh sửa đo số thao tác sửa, và nó đối xứng. WER với CER là khoảng cách đó chia cho độ dài câu tham chiếu, và phép chia này mới là chỗ sinh ra mọi hiểu nhầm: tỉ lệ không đối xứng, không có trần, và phụ thuộc vào cách tách token cùng cách chuẩn hoá. Báo một con số WER mà không kèm bộ tách và cách chuẩn hoá thì con số ấy gần như vô nghĩa.
Cả bài này lẫn bài BLEU đứng kế bên trong chương đều chỉ so chữ với chữ, nên preset Bản dịch khác chữ dùng đúng cặp câu của bài đó: hai độ đo khác nhau về công thức nhưng giống nhau ở chỗ không hiểu nghĩa, và một bản dịch đúng ý mà chọn từ khác vẫn bị chấm thấp ở cả hai.
- 1Câu tham chiếu có 2 từ, câu máy có 5 từ, và cần 4 phép sửa. WER bằng bao nhiêu?
- 2Hai câu chỉ khác nhau đúng một ký tự trong một từ. Vì sao WER cao hơn CER nhiều lần?
- 3Bấm Đổi vai hai câu ở trạng thái mặc định thì con số nào thay đổi?