son-dh / mudim

Automatically exported from code.google.com/p/mudim
0 stars 0 forks source link

Các vấn đề liên quan đến bắt lỗi chính tả #16

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Issue này sẽ là nơi tập trung thảo luận về các trường hợp 
bắt lỗi chính tả
để tiện theo dõi, thay thế cho issue 11 và issue 13 ở thời điểm 
hiện tại.

Từ r41 đã thắt chặt thêm quy tắc chính tả:
- Sau q bắt buộc phải là u
- c,ng không thể đứng trước i, e, ê

Vẫn còn vấn đề với qú và qư sẽ được sửa trong lần update 
kế tiếp

Original issue reported on code.google.com by mud...@gmail.com on 15 May 2008 at 3:54

GoogleCodeExporter commented 9 years ago
Mình
- tổng hợp một vài nguồn thông tin trên mạng
- tự liệt kê kiểm chứng

rồi rút ra một quy tắc thế này:

Trong tiếng Việt chỉ có những phụ âm sau đóng vai trò kết 
thúc âm tiết (chung âm):
- c, ch
- m
- n, ng, nh
- p
- t
Trong đó, đáng chú ý là những chung âm c, ch, p, t thì chỉ đi 
kèm với dấu sắc và dấu
nặng; không đi kèm với dấu huyền, hỏi và ngã. Ví dụ: tích, 
tịch (không: tìch, tỉch,
tĩch);...

Nếu bạn viết một hàm kiểm tra việc bỏ dấu này thì có thể 
loại trừ được kha khá lỗi
khi Kiểm tra chính tả đang bật.

Ví dụ:
bieesng => biếng
nhưng
bieesngh => biêngsh hoặc biênghs (không nên cho kết quả biếngh)

vì ngh không phải là chung âm hợp lệ, đồng thời khử dấu 
sắc và cho xuống vị trí chót
hoặc áp chót (vị trí nào thì cần phải thảo luận để đạt 
được sự tiện lợi nhất).

Original comment by dinh.son...@gmail.com on 15 May 2008 at 7:12

GoogleCodeExporter commented 9 years ago
Đã thử nghiệm đưa các quy tắc này vào từ r47, và trang test. 
Thử vài hôm nữa nếu
không có vấn đề gì sẽ đưa vào mục Downloads.

Original comment by mud...@gmail.com on 16 May 2008 at 2:40

GoogleCodeExporter commented 9 years ago
Kiểu gõ: Tự động

tra? => tra? (như kì vọng)
tra. => trạ (kì vọng: "tra.")
tra( => tră (kì vọng: "tra(")

Cái này chắc do kiểu gõ VIQR mà ra đây, hìhì.

Mình băn khoăn không biết có nên đề nghị bạn bỏ kiểu gõ 
VIQR để mã nhẹ hơn hay không,
vì mình thấy ít người sử dụng kiểu này. Nếu nhớ không 
nhầm thì kiểu gõ này do tác giả
mViet sáng tác từ lâu (mình nghe nói đến mViet từ năm 2004) nhưng 
nó không phổ biến
và không được ưa chuộng. Nói chung, quan điểm của mình là 
phần mềm cần nhẹ, chạy
nhanh, hướng tới phần đông người dùng. Những cái không hợp 
lí sẽ dần bị thải loại, dù
do cả yếu tố khách quan lẫn chủ quan.

Original comment by dinh.son...@gmail.com on 17 May 2008 at 10:30

GoogleCodeExporter commented 9 years ago
Đúng là do kiểu Viqr. Kiểu gõ Auto được đặt ra để ai cũng 
có thể gõ tiếng Việt ngay
khi mới vào trang web, chưa tìm hiểu gõ tiếng Việt gõ thế nào, 
lẽ ra người dùng nên
chuyển về kiểu gõ ưa thích thì sẽ không bị phiền toái như 
vậy. 

Kiểu gõ Viqr là hệ quả trực tiếp của "bảng mã" Viqr có từ 
thời tiếng việt chưa được
hỗ trợ trên internet. Nhưng hiện nay vẫn còn một số ít người 
thích gõ kiểu này. Thực
ra việc hỗ trợ thêm hay bớt đi 1 kiểu gõ cũng không làm bộ 
gõ nặng hay nhẹ hơn, vì
chỉ là thêm hay bớt 1 dòng định nghĩa kiểu gõ thôi.

Nhưng cũng có 1 thực tế là những người thích kiểu Viqr mình 
biết thì đều biết gõ một
trong 2 kiểu telex hoặc vni. Có lẽ cũng nên xem xét việc rút 
kiểu Viqr ra khỏi kiểu Auto.

Nhân tiện nói về các kiểu gõ, không hiểu sao kiểu Vni cũng 
tương đối phổ biến (nghe
nói là thừa kế từ thời máy đánh chữ cơ học) mặc dù có 
nhược điểm là gõ chữ bao giờ
cũng nhanh hơn gõ số trên bàn phím --> gõ telex nhanh hơn.

Original comment by mud...@gmail.com on 17 May 2008 at 1:12

GoogleCodeExporter commented 9 years ago
Từ r66, kiểu gõ tổng hợp đã bỏ viqr đi, chỉ còn vni và telex

Original comment by mud...@gmail.com on 17 May 2008 at 10:03

GoogleCodeExporter commented 9 years ago
> Nhân tiện nói về các kiểu gõ, không hiểu sao kiểu Vni cũng 
tương đối phổ biến

Nguyên nhân thuộc về usability. Để hướng dẫn bác Nông Văn X 
cách tiếng Việt, chỉ cần
nhắc bác ấy rằng: 1 là sắc, 2 là huyền, 3 là hỏi v.v. Ngoài ra 
khi gõ tiếng Anh và
tiếng Việt chung một văn bản, thì kiểu VNI cho gõ thoải mái 
hơn vì không phải gõ lặp.

Nói về tốc độ gõ, bàn phím QWERTY không phải là bàn phím cho 
phép gõ chữ Latinh nhanh
nhất, nhưng lại phổ biến nhất.

Original comment by ngocdaot...@gmail.com on 18 May 2008 at 2:31

GoogleCodeExporter commented 9 years ago
AVIM kiểm lỗi chính tả và đặt dấu rất tốt, đã cải tiến 
trong một thời gian dài, sao
không học tập, tiếp thu thành quả này của họ (mặc dù mã 
nguồn hơi khó đọc) ?

Original comment by hai...@gmail.com on 19 May 2008 at 9:25

GoogleCodeExporter commented 9 years ago
Không hẳn vậy đâu, các quy tắc chính tả của avim phần lớn 
chỉ hình thành trong giai
đoạn đầu thôi, thời gian gần đây các cập nhật của avim 
chủ yếu vì vấn đề tương thích
với các phiên bản mới của các ứng dụng web mới ra.

Hơn nữa thiết kế của Avim và Mudim là khác nhau, đọc đám code 
khó hiểu của Avim để áp
dụng thì thà tự viết còn nhanh hơn, vì mỗi quy tắc chỉ là 
một vài dòng code thôi.

Đúng là trước đây chức năng soát lỗi và bỏ dấu của Avim 
là mục tiêu hướng tới của
Mudim nhưng hiện nay thì không. Nhờ những đóng góp rất tích 
cực của Sơn mà chức năng
này của Mudim đã không thua kém, thậm chí vượt Avim ở một số 
điểm. Xin lấy vài ví dụ
 với kiểu telex:
- Avim vẫn cho phép bỏ dấu trong các trường hợp: qas -> qá, quw 
-> qư, cieems -> ciếm
còn Mudim thì không
- Với Mudim gõ luwoif sẽ được "lười" còn với Avim được 
"lừoi"

Ngoài ra license của Avim cũng không rõ ràng, không phải GPL, chỉ 
mô tả vài câu nên
Mudzot cũng không muốn liên quan đến đám code của Avim.

Original comment by mud...@gmail.com on 19 May 2008 at 10:50

GoogleCodeExporter commented 9 years ago
Trích dẫn một bài viết từ blog của mình:
>>>
Xưa tập viết tiếng Việt, nhớ là có quy tắc như vầy:

- Nếu liền sau là các nguyên âm a, o, u thì viết g, ng.

- Nếu liền sau là các nguyên âm e, i thì viết gh, ngh.

Nay dạy tập viết tiếng Việt cho hai thằng cu con nhà chú Dương 
thì "phát hiện" ra quy
tắc tương tự:

- Nếu liền sau là các nguyên âm a, o, u thì viết c.

- Nếu liền sau là các nguyên âm e, i thì viết k.

Để ý là liền sau g, gh, ng, ngh không viết y (i dài). Vậy, nên 
viết y liền sau k như
kỹ thuật, chữ ký,...?

Một "phát hiện" nữa là đi liền sau c, k không có các tổ hợp 
nguyên âm mở loại oa, oe,
uy. Thay vào đó, người ta dùng qua, que, quy.
<<<

Hiện nay, với Mudim:
cys => cý (mong đợi: cys)
kaa => kâ (mong đợi: kaa)
koo => kô (mong đợi: koo)
kow => kơ (mong đợi: kow)
kuw => kư (mong đợi: kuw)

Mình nghĩ bạn nên viết lại quy tắc chính tả về c và k cho 
Mudim như sau:

- Liền sau c mà có a, o, u và liền sau k có e, i thì cho bỏ dấu 
thanh và dấu phụ.
(xem thêm phần dưới; đồng thời xem xét nới lỏng thêm việc 
bỏ dấu cho y khi chỉ một
mình y liền sau k mà không có phụ âm cuối)

-------
coaf => coà (mong đợi: coaf)
coef => coè (mong đợi: coef)
cuyf => cuỳ (mong đợi: cuyf)

Nên thắt chặt thêm quy tắc bỏ dấu: sau c không cho phép bỏ 
dấu thanh điệu và dấu phụ
(trăng, mũ, móc) trên các vần sau: oa, oe, uy, uê, uơ, uyê. Thật ra 
còn oă nhưng mà
đã không cho bỏ dấu phụ trên oa sau c thành thử mình không kể 
thêm vào.

Original comment by dinh.son...@gmail.com on 20 May 2008 at 1:19

GoogleCodeExporter commented 9 years ago
Mình sẽ đưa dần dần các quy tắc này vào, cần sắp xếp hợp 
lý đối với các quy tắc đã có
nên việc này có thể hơi mất thời gian. Khi nào làm sao mình sẽ 
báo ở đây.

Original comment by mud...@gmail.com on 20 May 2008 at 1:51

GoogleCodeExporter commented 9 years ago
Các quy tắc này về cơ bản đã hoàn thành từ r100

Original comment by mud...@gmail.com on 22 May 2008 at 12:21

GoogleCodeExporter commented 9 years ago
quus => quú (mong đợi: quus)
quuw => quư (mong đợi: quuw)

Dường như bạn bỏ sót quy tắc cho ngh rồi. Ví dụ:
nghoes => nghoé (mong đợi: nghoes)

Liền sau ngh là a, o, u thì không cho bỏ dấu (cả dấu thanh lẫn 
dấu phụ).

Ở trang thử nghiệm
http://www.anhn.net/test/mudim/
bạn nên lấy tệp js trực tiếp từ Google Code, chắc mỗi lần 
release sẽ bớt được một
bước. Thời điểm này nó chưa được cập nhật.

;)

Original comment by dinh.son...@gmail.com on 22 May 2008 at 2:16

GoogleCodeExporter commented 9 years ago
Từ r104 đã bổ sung các quy tắc bắt lỗi cho các trường hợp 
quus, quuw, nghoes. Ngoài
ra thêm 2 quy tắc:
- P bắt buộc đi kèm với H
- Y nếu không có phụ âm thì cũng không thể đứng cùng 1 chữ 
khác (yes, bây giờ gõ chữ
yes không cần yess nữa)

Original comment by mud...@gmail.com on 23 May 2008 at 11:03

GoogleCodeExporter commented 9 years ago
Quên mất là còn chữ "yến", từ r106 nới lỏng quy tắc với y, 
thế là vẫn phải gõ yess để
được yes

Original comment by mud...@gmail.com on 24 May 2008 at 5:25

GoogleCodeExporter commented 9 years ago
Trong phần lớn các ứng dụng của Windows, Ctrl+Backspace dùng để 
xoá một từ về trước
và Ctrl+Del xoá một từ về sau.

(1) chuaarn[Ctrl+Backspace]chisnh => chisnh (mong đợi: "chính")

(2) chuaarn[Backspace*5]chisnh => chính (như mong đợi)

(3) chuaarn[F9*2]chisnh => chuẩnchính (như mong đợi)

(4) Lagr[F9*2]awng => Lagrăng (như mong đợi)

(5) thoarng huwowng[Ctrl+Left,F9*2]xaj[Space] => thoảng xạ hương (như 
mong đợi)

(6) thoarng huwowng[Ctrl+Left]x => thoảng hưỡnghương (mong đợi: 
"thoảng xhương")

Từ sáu ví dụ trên, mình rút ra được một vài điểm sau:

- (1)+(2)+(6) => phím Backspace được coi là phím chức năng còn Ctrl 
thì không.

- (6) => khi nhấn Ctrl thì bộ nhớ đệm không bị xoá đi.

- (3)+(4) => khi tắt bộ gõ rồi bật lại thì nó không hề xét 
đến các kí tự xung quanh
(cả trước và sau).

- (5)+(6) => khi tắt đi rồi bật bộ gõ lên thì bộ nhớ đệm 
bị xoá đi.

Từ bốn điểm suy luận trên, mình nảy ra một ý: Bạn thiết 
kế Mudim sao cho

- hễ (if_1) nhắp (nhấn rồi thả ra) Ctrl thì tương đương với 
việc tắt rồi bật lại bộ
gõ, không kiểm tra các con chữ liền trước và liền sau con trỏ.

- còn nếu (else_1 if_2) kết hợp với phím sang trái hoặc sang 
phải thì tương đương với
việc xoá bộ nhớ đệm nhưng vẫn quét các kí tự liền trước 
nó để bỏ dấu.

- còn nếu (else_2) kết hợp với phím khác ngoài sang trái, sang 
phải thì tương đương
với việc tắt đi rồi bật lại bộ gõ và sau đó thực hiện 
lệnh do tổ hợp Ctrl+[...] quy
định. Ví dụ: Ctrl+A = tắt rồi bật bộ gõ + tô sáng toàn bộ 
văn bản.

Nếu làm được điều này, mình thấy rằng Mudim sẽ sánh ngang 
UniKey và vượt hẳn AVIM một
bậc về độ tiện lợi khi gõ những trường hợp không phải 
vần Việt thế này, đồng thời
cũng tự tạo thêm một chuẩn mới trong cách gõ tiếng Việt: 
nhấn Ctrl thì bỏ qua kiểm
tra chính tả tiếng Việt để gõ những chữ như Lagrăng (ví dụ: 
Lagr[Ctrl]awng => Lagrăng).

Mình "phát hiện" ra là khi dùng UniKey, nhắp Ctrl thì gõ được 
như sau:

Lagr[Ctrl]awng hoặc Lag[Ctrl]rawng => Lagrăng (như mong đợi)
q[Ctrl]uas => qúa (như mong đợi)
oot[Ctrl]oo hoặc oo[Ctrl]too => ôtô (như mong đợi)

Còn tổ hợp phím LShift+RShift thì dùng để trả lại nguyên dạng 
hoặc bắt đầu một từ
(http://www.unikey.org/forum/viewtopic.php?t=1541)

[LShift+RShift]Inddooneexxia => Inđônêxia (như mong đợi)
thaarm[LShift+RShift] => thaarm (như mong đợi)
nhưng
[LShift+RShift]ootoo => otoo (mong đợi: ôtô)

Mình xem thông báo về những bản release từ 3.55 trở lại đây 
của UniKey không hề thấy
có nói đến chức năng bỏ qua kiểm tra chính tả khi nhắp Ctrl, 
mà chỉ nhắc đến công
dụng của LShift+RShift (dù có điểm chưa hoàn thiện như đã nêu 
trên). Do đó, mình đồ
rằng bản thân chú Phạm Kim Long cũng không biết "đứa con" của 
mình có ưu điểm này. (Ở
đây, không loại trừ trường hợp do mình không theo dõi sát sự 
phát triển UniKey nên
không được biết.) Và nghiễm nhiên Mudim sẽ là bộ gõ tiếng 
Việt đầu tiên quảng bá cách
thức mới tiện lợi để gõ những từ không thuộc hệ thống 
Việt ngữ chính quy ngay cả khi
chức năng Kiểm chính tả đang bật.

Original comment by dinh.son...@gmail.com on 28 May 2008 at 12:39

GoogleCodeExporter commented 9 years ago
Vậy mình tổng kết lại các sửa đổi dự kiến như sau:
- Giải quyết vấn đề với Ctrl-[Backspace|->|<-]
- Ctrl tạm thời tắt bộ gõ cho đến hết từ đang/sắp gõ
- Thêm 1 phím chẳng hạn Shift để tạm thời tắt kiểm tra chính 
tả đến hết từ đang/sắp gõ

Original comment by mud...@gmail.com on 28 May 2008 at 12:42

GoogleCodeExporter commented 9 years ago
Đã làm xong từ r120, nhưng hơi ngược chút. Shift tắt bộ gõ và 
Ctrl tắt kiểm tra chính
tả, dựa trên thực tế là nhu cầu tắt bộ gõ tạm thời cao 
hơn và bấm Shift thì dễ hơn
Ctrl. Cũng đến lúc phải viết riêng 1 trang hướng dẫn sử dụng 
bộ gõ rồi.
Hiện bản này đã có trong svn và trang test. Vài hôm nữa đưa vào 
mục Downloads sẽ là
bản 0.8

Original comment by mud...@gmail.com on 29 May 2008 at 4:15

GoogleCodeExporter commented 9 years ago
le[Ctrl]te => lêt (kì vọng: lete)
chisnh[Ctrl]laf[Ctrl]ta => chínhlầt (kì vọng: chínhlàta)
chisnh[F9*2]laf[F9*2]ta => chínhlàta (như kì vọng)
Toasn => Toasn (kì vọng: Toán)

=> Phím Ctrl chỉ tạm thời tắt kiểm tra chính tả về mặt bỏ 
dấu thanh chứ dấu mũ thì
không (với dấu móc và trăng thì mình chưa kiểm tra) => nên để 
[Ctrl] <=> [F9*2]

=> Phím Shift tạm thời tắt bộ gõ khiến gây rắc rối trong 
việc viết hoa đầu câu => nên
bỏ chức năng của phím Shift.

Original comment by dinh.son...@gmail.com on 29 May 2008 at 8:39

GoogleCodeExporter commented 9 years ago
Vẫn giữ như cũ. Nhưng bây giờ phải bấm 1 mình Shift hoặc Ctrl 
rồi nhả ra mới có tác
dụng nên sẽ không ảnh hưởng tới việc viết hoa. Hoạt động 
của Ctrl cũng đã được chỉnh
lại. Như vậy là đã hoàn thành chức năng này từ r124

Original comment by mud...@gmail.com on 1 Jun 2008 at 9:40

GoogleCodeExporter commented 9 years ago
Đúng là dân chuyên toán có khác, thông minh thế :p

Original comment by dinh.son...@gmail.com on 1 Jun 2008 at 6:16

GoogleCodeExporter commented 9 years ago
Làm sao để gõ dấu cho những vần "oo" có phụ âm cuối, Hoài Anh 
nhỉ? Ví dụ như "mới
coóng", "quần soóc" chẳng hạn. (Để ý rằng "oo" luôn đi kèm 
với chung âm "ng" hoặc "c".)

Mình phải gõ như sau:

co[Ctrl]osng => coóng
so[Ctrl]osc => soóc

Rõ ràng đây không phải là lỗi của Mudim, vì khi gõ hai chữ "o" 
liên tiếp thì nó sẽ
thành "ô", phải gõ thêm chữ "o" thứ ba để khử mũ nhưng vô 
hình trung lại tắt tạm thời
bộ gõ.

Suy nghĩ chủ quan ban đầu thì thế, bởi vì mình chỉ gõ kiểu 
TELEX. Nếu gõ VNI thì có
người sẽ lí luận rằng

soo1c => soo1c (mong đợi: soóc)

là một lỗi của bộ gõ.

Vậy nên chăng ta thêm ngoại lệ này (if...) cho hai kiểu gõ VNI và 
VIQR, còn với kiểu
gõ TELEX thì không có gì thay đổi và phải chấp nhận nhắp thêm 
một lần Ctrl? Hay là
ngay cả với kiểu gõ TELEX cũng có cách cho phép ngoại lệ này?

Original comment by dinh.son...@gmail.com on 11 Jun 2008 at 9:59

GoogleCodeExporter commented 9 years ago
Ở kiểu TELEX thì đây là lỗi của kiểu gõ, vì "xoong" thì là 
"xoong" hay "xông" cũng
được cả, và đều là tiếng Việt.

Những trường hợp này cực hiếm, có lẽ không nên giải quyết 
:) Giảm kích thước code
được 1% bù lại thì thời gian gõ tăng thêm 10% trong khoảng 
0,0001% các từ họ gõ, thí
dụ vậy :)

Original comment by hai...@gmail.com on 12 Jun 2008 at 9:03

GoogleCodeExporter commented 9 years ago
Đúng là chỉ có 1 bất tiện nhỏ thế này thì cũng không muốn 
giải quyết lắm. Giá mà có 1
lớp các trường hợp thì có hứng giải quyết hơn. Thôi quyết 
định là để như vậy, dùng
Ctrl để gõ thôi.

Original comment by mud...@gmail.com on 13 Jun 2008 at 3:38

GoogleCodeExporter commented 9 years ago
Thỉnh thoảng mình không gõ được chữ tiếng Việt ở đầu câu 
do nhấn thừa phím Shift hay
sao í (dùng Firefox extension), mặc dù khi kiểm định cẩn thận ở 
trang thử nghiệm thì
chức năng của phím Shift hoạt động đúng. Mình toàn phải bấm 
Ctrl hoặc
(Space+Backspace) để giải phóng tác dụng tạm thời của Shift. 
Không biết có bạn nào
gặp vấn đề này không? Để mình thử để ý cẩn thận trong 
thời gian tới xem thế nào :(

Original comment by dinh.son...@gmail.com on 15 Jun 2008 at 2:59

GoogleCodeExporter commented 9 years ago
Ở kiểu TELEX
tyr => tyr (mong đợi: tỷ )

Original comment by deathe...@gmail.com on 27 Jun 2008 at 12:52

GoogleCodeExporter commented 9 years ago
Đã sửa từ r141

Original comment by mud...@gmail.com on 30 Jun 2008 at 9:08

GoogleCodeExporter commented 9 years ago
mudzot ơi,
chyr => chỷ (mong đợi: chyr)
khyr => khỷ (mong đợi: khyr)
nhyr => nhỷ (mong đợi: nhyr)
trys => trys (như mong đợi)

Bạn thắt chặt thêm quy tắc này nữa nhé: nguyên âm "y" trong 
tiếng Việt
(1) nếu là quy tắc chính tả mới thì không đi liền sau bất cứ 
phụ âm nào (không tính "qu")
(2) nếu là quy tắc cũ thì chỉ được đi liền sau các thuỷ âm: 
h, l, m, s, t

Hiện tượng như trên, có thể do mudim chỉ xét phụ âm liền 
trước nó mà không xét nó là phụ âm ghép hay phụ âm đơn.

Original comment by dinh.son...@gmail.com on 16 Feb 2011 at 9:08