Trang 3 trên tổng số 3 Đầu tiênĐầu tiên 123
Từ 21 tới 22 trên tổng số 22 kết quả

Đề tài: Thực nghiệm thư viện ICU để so sánh xâu tiếng Việt

  1. #21
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    742

    Mặc định Thực nghiệm thư viện ICU để so sánh xâu tiếng Việt

    Ở đây, cần phải nói rõ, dứt khoát: dấu ba chấm không phải là một ký tự Việt [TCVN 6909:2001] nên bất cứ cụm từ nào chứa nó (như nhỡ … thì sao) đều là ngoại ngữ, đều bất hợp lệ và, do thế, lẽ ra không thể xuất hiện trong dữ liệu đã sàng lọc và tinh chế, như từ điển. Thứ tự nhỡ thì < nhỡ … thì sao ở #18, mà mình đã gọi là "chuẩn", tuy có lý, nhưng thật ra không chuẩn. Không tiêu chuẩn nào (nếu có) hay từ điển nào của VN có quyền quy định một thứ tự kiểu đấy. Những trường hợp như thế, chương trình có thể so sánh, xếp thứ tự tùy ý.

    Vả lại, không phải mọi ký tự >= 64 đều gây sai biệt so với thứ tự "chuẩn" ấy. Dấu ba chấm gây sai biệt vì hội đủ 2 điều: (i) điểm mã >= 64 và (ii) nó là một dấu ngăn tách biệt (ở giữa 2 dấu cách trong văn bản). Nếu không có điều thứ hai này, một dấu ngăn/cách >= 64 vẫn được xử lý "đúng" để kết quả giống hệt như "chuẩn". Nói riêng, cả 3 dấu ngăn cách Việt chuẩn phi ASCII, là dấu trắng phi dãn (giãn?) (NBSP) (U+A0), dấu mở ngoặc kép (U+201C) và dấu đóng ngoặc kép (U+201D), nếu được viết đúng phép tắc, đều được xử lý "đúng": chúng được bỏ qua ở cấp 1 - 3 và, kỳ diệu hơn, dấu trắng phi dãn và dấu trắng (SP) bằng nhau ngay cả ở cấp 4. Kết quả này có thể kiểm chứng bằng chương trình [#1].

    Thứ cần phải chú ý là những ký tự không phải là chữ mà cũng chẳng là dấu ngăn/cách. Ở phiên bản nhanh [bài #20], để đơn giản, mình không xem xét các ký tự ASCII >= 64 (vốn đều là ký tự Việt chuẩn). Trong đó, các dấu a còng (@), sổ ngược (\), mở ngoặc vuông ([), đóng ngoặc vuông (]), mở ngoặc nhọn ({) và đóng ngoặc nhọn (}) là dấu ngăn; còn dấu mũ (^), trầm (`), sổ (|) và sóng (~), tuy được xem là dấu ngăn khi tìm ranh bằng BreakIterator [#17], nhưng không phải là dấu "ngăn/cách" (nói chính xác, không phải là ký tự biến thiên) đối với Collator [#1]; và dấu gạch dưới (_) thì còn "hiểm ác" hơn, không phải là dấu ngăn/cách theo bất cứ quan điểm nào.

    Song, phiên bản nhanh [#20] không phải là kém chính xác hơn phiên bản "chuẩn" [#18, #19]. Chỉ là chúng cho kết quả khác nhau trong những trường hợp ngóc ngách nào đó. Đôi khi, phiên bản nhanh cho kết quả "đúng" hơn. Chẳng hạn, ngựa.Gióng, ngựa:Gióng, ngựa0gióng là những từ có 2 chữ đối với phiên bản nhanh, nhưng chỉ có 1 chữ đối với phiên bản "chuẩn". Chương trình [#1] sẽ cho thấy rõ tách chữ sai dẫn đến hậu quả gì.

    Và phiên bản nhanh có lợi ích là có thể dễ dàng điều chỉnh hành vi của nó cho các ký tự ASCII dị biệt. Dấu gạch dưới chẳng hạn, không phải là một ký tự thông dụng nên cho dữ liệu thông thường, chúng ta không cần lo ngại về tính dị biệt của nó. Nhưng cho dữ liệu hiểm hóc một chút, như nguyền_rủa vs nguyện_cầu hay Hà_Tiên vs Hạ_Long, phiên bản "chuẩn" bó tay chịu chết, còn phiên bản nhanh vẫn xử lý "ngon lành", chỉ cần sửa code tý xíu thôi. Một lần nữa, ta thấy cho phép so sánh và sắp thứ tự, tách chữ là vũ khí và với phiên bản "chuẩn", chúng ta cầm đằng lưỡi, còn với phiên bản nhanh, chúng ta nắm đằng chuôi.
    Đã được chỉnh sửa lần cuối bởi Ada : 05-11-2021 lúc 10:39 PM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  2. #22
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    742

    Nói thêm, thứ tự nhỡ thì < nhỡ … thì sao không chứng tỏ phiên bản "chuẩn" [#18, #19] là "đúng" hơn phiên bản nhanh [#20] trong việc xử lý dấu ba chấm. Thậm chí ngược lại, chứng tỏ nó "sai" hơn. Lộn xộn hơn. Bởi vì nó tính được thứ tự ấy không nhờ dấu ba chấm mà chỉ nhờ vào chữ sao. Chỉ cần thêm 1 cụm từ nhỡ … thì không sao, bản chất của nó lộ rõ ngay:

    Code:
    nhỡ : (1) of medium size, medium-sized; (2) to miss (train, meal, etc.)
    nhỡ dịp : miss the opportunity, lose the chance
    nhỡ hẹn : to fail to keep an appointment, miss a date or an appointment
    nhỡ nhời : make a slip of the tongue
    nhỡ tàu : to miss the boat (literally and figuratively)
    nhỡ … thì : if ... then
    nhỡ thì : (of women) too old to get married
    nhỡ … thì sao : what if
    nhỡ thời : miss a chance
    nhớ : to remember, recall, miss


    Nếu muốn nhỡ thì < nhỡ … thì < nhỡ … thì sao, cần phải cấu hình Collator để đảo ngược tương quan thứ tự giữa các ký tự biến thiên và các ký tự thông thường. Tính năng này được định nghĩa bởi thuật toán chuẩn (UCA), nhưng không được thực thi bởi phiên bản hiện thời của thư viện ICU.
    Đã được chỉnh sửa lần cuối bởi Ada : 23-09-2021 lúc 11:49 AM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn