(my Vietnamese theory) #1312
Replies: 12 comments
-
What's my speed with the old system?I open TypeRacer and type a random practice quote. (remember to switch to WPM mode first)
... I didn't practice for a long time. But that's pretty fast. Another quote...
It has been common for me to get the second try faster than the first try, even with English. It doesn't feel very fast, but some strokes remain awkward. And I type mostly at one stroke per syllable. Comfort analysis (applies to other systems too)There are some factors that contribute to a stroke/hand shape being hard to form:
For example: (listed in increasing order of difficulty)
In both cases, the latter one is one I considered hard in the current (old) system (and appears quite frequently). New system layoutIt's going to be fully compatible with the English layout, while leaving #DZ free. |
Beta Was this translation helpful? Give feedback.
-
FrequencyTone frequency: level ~= grave > acute > dot below > hook above > tilde Coda frequency: none > -j > ng > n > -w > t > ... > p > ch Onset frequency is mostly not a problem. |
Beta Was this translation helpful? Give feedback.
-
I can't find any n-gram data online... guess I'll have to make one myself. The one syllable per stroke part is done. The 2-word brief part is almost done, although it's better to make some bigram data for this. |
Beta Was this translation helpful? Give feedback.
-
It would be better if I can find a good way to avoid conflicts in two-word briefs (currently I download Wikipedia dump and find some word lists online to generate the briefs, but sometimes there are too many conflicts)... I'm thinking of merging the more uncommon onset/rime to reduce the number of conflicts, instead of dropping some parts completely. But that's not easy to implement... The system is mostly complete now, and I'm practicing on TypeRacer to see if there's any problems. The obvious problem is that there are too many two-word conflicts but... what can I do about it. I'm still very slow, like 12 WPM. An obvious problem is that it conflicts with some strokes like KPA, so I would need to define new strokes for them. |
Beta Was this translation helpful? Give feedback.
-
First commit. https://github.com/user202729/plover_vi Installation
SystemMost things you need to know is in Refer to the "Common Vietnamese rimes" table in the Wikipedia page https://en.wikipedia.org/wiki/Vietnamese_phonology#Syllables_and_phonotactics about how to break the rime into the onset, the on-glide /w/, the nucleus, and the coda/off-glide. To write single word, form the onset+optional on-glide on the left hand, the nucleus on the two thumbs, and the coda/off-glide + tone on the right hand. To write two syllables in one stroke (must form a complete word in the dictionary), form the hand shape of the first syllable on the left hand and the thumb, and the onset of the second syllable on the right fingers (except the thumb), and include the star key. Example:
Spelling irregularities/variations
The handling for To change between tone placement modes, you have to toggle a flag in the source file. Two-word briefsUnfortunately, as you can see, there are quite a lot of conflicts with the current briefing system... there are just too many (two-syllable) words. I might consider adding a dynamic brief system, where the word used is the most recently typed when there are conflicts. (use it along with the static system) Or another one that merges the uncommon word parts to make rooms for the more common ones. PhrasesCompletely unplanned, unfortunately. But there are 64 combinations for 6 keys, and currently only about 26 are used, there are still a lot of free spaces. |
Beta Was this translation helpful? Give feedback.
-
The NP-complete Graph coloring problem is a special case of this problem (to determine the least-conflict system for phrasing) (under some definition of input size), so approximation algorithms should be used instead. Repeatedly merge the least common word part (while iterating through combinations of part size) sounds good enough. Actual program (and result) coming soon. |
Beta Was this translation helpful? Give feedback.
-
This might not make sense immediately, clarification later if anyone is interested. The current briefing system creates 21059 conflicts in about 27000 Wikipedia words that are also proper words. (or 6000 conflicts in the top 10000 words) This is a very large number... that it's not possible to memorize all the conflicts briefs (rather the writer have to memorize all the briefs that is going to be used) I wrote a brute force program to iterate through them (greedily merge the two least common
(format:
)
Piecewise briefing systems might do better, but they're even harder to analyze. |
Beta Was this translation helpful? Give feedback.
-
I don't know what distribution it is. Doesn't look like (accumulated sum of) Zipf's law.
The graph shows that you need to "learn" 300 words to get half the maximum number of strokes saved (which is approximately the number of Gregg shorthand briefs), and 1000 words to get the 75% of the maximum number of strokes saved. Doesn't sound that bad, actually. You only need to accurately distinguish between briefed words and non-briefed words. |
Beta Was this translation helpful? Give feedback.
-
Fit the onset+nucleus on one handYes, it's possible to (likely, not tested) keep reasonable comfortability, but it requires a significant change. I don't want to change the system again, but it reduces the number of brief conflicts by a factor of 4. DetailsPut the onsets on the 6 keys
(leave out those (reasonably comfortable, but not those with
) , the vowels on the rest, then (in right-hand case) put the tones on the vowel in such a way that there's no conflict between 1-word and 2-word strokes (there are 2^5=32 locations, but only 25 different nucleus(es), there must be enough remaining). Disambiguation could fit on Current (v2) system brief conflicts[
[["đại học", 5153], ["đại hội", 5076], ["đàn hồi", 95], ["đạo hàm", 88], ["đạo Hồi", 87], ["đá hoa", 75], ["đào hoa", 73], ["đại hàn", 52], ["đa hình", 51], ["đại hoàng", 23], ["đánh hơi", 21], ["đàng hoàng", 17]],
[["thảo luận", 12059], ["Thành Lập", 4779], ["Thành Long", 204], ["Thanh Long", 95], ["Thanh Liêm", 45], ["thanh lịch", 36], ["Thanh Lâm", 35], ["thánh lễ", 34], ["thanh lọc", 29], ["thải loại", 27], ["thành lũy", 27], ["Thanh Liên", 21], ["Thanh Lộc", 20], ["Thanh Lương", 16], ["Thành Lộc", 15], ["tham lam", 15]],
[["quốc tịch", 5947], ["quốc tế", 4314], ["quốc tang", 23], ["Quốc Tuấn", 22], ["Quốc Toản", 17]],
[["chính thể", 15829], ["chính thức", 3922], ["chính thống", 344], ["chỉ thị", 99], ["chỉ thư", 73], ["chính thất", 66], ["chịu thua", 62], ["Chí Thiện", 27], ["Chí Thành", 21]],
[["thứ hai", 3721], ["thực hiện", 3463], ["thứ hạng", 554], ["thực hành", 348], ["thư hiên", 15]],
[["động vật", 3448], ["động viên", 3157], ["đối với", 3036], ["đô vật", 173], ["đồng vị", 81], ["đồ vật", 66], ["đồng văn", 41], ["đổ vỡ", 23]],
[["tất cả", 4006], ["tấn công", 2971], ["Tân Cương", 69], ["tận cùng", 51], ["tập kết", 41], ["tập kích", 32], ["tầm cỡ", 18]],
[["đổi hướng", 8146], ["đội hình", 2922], ["đồ hoạ", 391], ["đồng hồ", 374], ["đồng hành", 145], ["độc hại", 130], ["đồng hóa", 57], ["động học", 50], ["đốc học", 48], ["đồng hương", 36], ["đô hộ", 34], ["đồng hạng", 32]],
[["quân đội", 3161], ["quần đảo", 2703], ["quân đoàn", 236], ["quân địch", 34]],
[["vận động", 9562], ["vấn đề", 2490], ["Vân Đồn", 43]],
[["đạo diễn", 2810], ["đánh dấu", 2194], ["đại diện", 1986], ["đại dương", 1436], ["đa dạng", 598], ["đánh dẹp", 61], ["đạn dược", 52], ["đại dịch", 47], ["đại danh", 38], ["đa dụng", 22], ["đàn dây", 14]],
[["hoạt động", 5406], ["hoàng đế", 2144], ["hoạch định", 55], ["hoàng đạo", 51], ["hoá đơn", 19], ["hoang đường", 15]],
[["quan trọng", 2844], ["quá trình", 2138], ["quản trị", 494], ["Quảng Trị", 372], ["Quảng Trường", 164], ["Quang Trung", 72], ["Quán Triều", 52], ["Quảng Trạch", 29], ["Quang Trọng", 28], ["quan trắc", 16]],
[["phát hành", 4973], ["phát hiện", 1860], ["phá huỷ", 609], ["phá hoại", 371], ["phả hệ", 338], ["phản hồi", 291], ["phát huy", 83], ["pháo hoa", 47], ["pháp hóa", 41], ["phác họa", 35], ["phá hỏng", 14]],
[["báo cáo", 2162], ["bán kết", 1783], ["bạch kim", 959], ["bán cầu", 161], ["báo công", 131], ["bán kính", 98], ["bàn cờ", 92], ["bà con", 80], ["bài ca", 73], ["Ban Công", 73], ["bạch cầu", 45], ["bãi cỏ", 37], ["Bảo Cường", 24], ["bảo kê", 22], ["Bản Công", 21], ["bánh kẹp", 19], ["bánh kẹo", 17], ["bàn cãi", 16]],
[["ban đầu", 2036], ["bản đồ", 1740], ["bản địa", 667], ["bán đảo", 566], ["bảo đảm", 185], ["ban đêm", 149], ["Bảo Đại", 74], ["báo động", 59], ["bạo động", 46], ["ba đậu", 33], ["Ba Đình", 32], ["bạn đọc", 29], ["bàn đạp", 28], ["Bạch Đằng", 25], ["bá đạo", 24], ["Ba Đồn", 18], ["bạch đàn", 18], ["bạn đời", 17]],
[["gia đình", 2946], ["giám đốc", 1725], ["giai đoạn", 1593], ["giai điệu", 172], ["giả định", 156], ["gián đoạn", 150], ["gián điệp", 102], ["giám định", 89], ["giao điểm", 31], ["giáo đường", 29], ["giải điều", 26], ["giải đáp", 25], ["giáo đầu", 21], ["gia đồng", 21], ["giảm đau", 20], ["giao đấu", 18], ["giải độc", 18]],
[["chủ tịch", 5435], ["chúng ta", 1603], ["chúng tôi", 669], ["chủng tộc", 249], ["Chu Túc", 24], ["chúc tết", 22], ["chú tâm", 15], ["chủ tế", 15]],
[["cộng đồng", 1561], ["cổ đại", 1444], ["cổ điển", 416], ["cố định", 287], ["công đoàn", 213], ["cô đơn", 104], ["Cổ Đông", 95], ["công đảng", 81], ["cổ động", 45], ["cô độc", 41], ["công đoạn", 39], ["cố đô", 33], ["công đức", 32], ["công đồng", 30], ["Côn Đảo", 26], ["cô đặc", 23], ["côn đồ", 17]],
[["hoàng tử", 1700], ["hoàn toàn", 1432], ["hoàng tộc", 553], ["hoàn tất", 394], ["hoạt tính", 48], ["hoàng tôn", 37], ["hoa tiêu", 27], ["hoại tử", 16]],
[["thực tế", 1495], ["thứ tự", 1389], ["thứ tư", 842], ["thực tập", 312], ["thực tại", 113], ["thức tỉnh", 108], ["thực tiễn", 82], ["thư từ", 43], ["thứ tử", 41], ["thư tịch", 25], ["thực từ", 24], ["thư tín", 19]],
[["kết hợp", 1399], ["kế hoạch", 1342], ["kết hôn", 943]],
[["điều hành", 1343], ["địa hạt", 1326], ["điển hình", 448], ["địa hình", 206], ["điều hòa", 79], ["điện hạ", 36], ["đĩa hát", 23], ["điểu học", 17]],
[["đô thị", 1548], ["đồng thời", 1324], ["đối thủ", 814], ["độ thế", 135], ["đối thoại", 133], ["đô thống", 122], ["động thái", 93], ["đồ thị", 92], ["độc thân", 58], ["độc thoại", 48], ["đô thành", 36], ["đồng thau", 21], ["đổi thay", 18], ["độc thần", 17]],
[["đại biểu", 7583], ["đánh bại", 1294], ["đảm bảo", 677], ["đảng bộ", 463], ["đánh bắt", 146], ["đánh bom", 138], ["đại bàng", 107], ["đàn bà", 66], ["đánh bóng", 39], ["đánh bạc", 27], ["đá bóng", 25], ["đại bại", 23], ["đánh bật", 14]],
[["truyền thống", 1741], ["truyền thông", 1288], ["truyền thuyết", 514], ["truyền thanh", 41]],
[["công nghệ", 2131], ["công nghiệp", 1265], ["công nguyên", 236], ["cội nguồn", 16]],
[["tạp chí", 2767], ["tài chính", 1226], ["tác chiến", 194], ["tại chỗ", 149], ["tái chế", 90], ["tại chức", 27]],
[["tiểu sử", 1341], ["tiến sĩ", 1180], ["tiền sử", 298], ["tiếp sau", 57], ["tiếp sức", 54], ["tiên sinh", 43], ["tia sáng", 35], ["tiền sảnh", 19]],
[["con người", 1826], ["con ngựa", 1175], ["có nghĩa", 1049], ["có người", 428], ["còn nguyên", 50]], New system brief conflicts[
[["đạo diễn", 2810], ["đại diện", 1986]],
[["điều hành", 1343], ["địa hạt", 1326], ["điện hạ", 36], ["đĩa hát", 23]],
[["truyền thống", 1741], ["truyền thông", 1288]],
[["tạp chí", 2767], ["tài chính", 1226]],
[["con người", 1826], ["con ngựa", 1175], ["có người", 428]],
[["hành động", 1745], ["hạm đội", 1130], ["hang động", 241], ["hải đội", 71]],
[["phân giải", 1170], ["Phật giáo", 952], ["phẩm giá", 16]],
[["nhiệm kỳ", 1445], ["nhiệm kì", 868]],
[["thứ tự", 1389], ["thứ tư", 842], ["thư từ", 43], ["thứ tử", 41], ["thực từ", 24]],
[["giá trị", 1704], ["giải trí", 795], ["giải trình", 55], ["giáo trình", 41]],
[["đánh bại", 1294], ["đảm bảo", 677], ["đại bàng", 107], ["đàn bà", 66], ["đánh bạc", 27], ["đại bại", 23]],
[["hạng nhất", 933], ["hạt nhân", 632], ["hạnh nhân", 29]],
[["bầu cử", 2235], ["bất cứ", 628]],
[["công việc", 1109], ["công viên", 601]],
[["liên kết", 7507], ["liệt kê", 594]],
[["đầu tư", 917], ["đầu từ", 573]],
[["thứ hai", 3721], ["thứ hạng", 554], ["thực hành", 348]],
[["tỷ lệ", 1131], ["tỉ lệ", 552]],
[["địa chỉ", 773], ["điều chỉnh", 548], ["địa chính", 48], ["địa chí", 38]],
[["sáng tác", 1204], ["sáng tạo", 544]],
[["chính trị", 5857], ["chỉ trích", 529]],
[["hoàng hậu", 3042], ["hoa hậu", 522]],
[["quá trình", 2138], ["quản trị", 494], ["Quảng Trị", 372]],
[["tỉ số", 2766], ["tỷ số", 488], ["tích số", 15]],
[["đào tạo", 909], ["đại tá", 488], ["đám tang", 60], ["đánh tan", 36], ["đa tài", 16]],
[["bình thường", 732], ["bị thương", 484]],
[["Thanh Hoá", 860], ["thảm hoạ", 461], ["thành hoàng", 189], ["thánh hóa", 28]],
[["đô đốc", 646], ["đồng đội", 444], ["đồ đồng", 59], ["độ độc", 55]],
[["động đất", 1181], ["đối đầu", 436]],
[["tìm thấy", 1493], ["tinh thần", 427]], |
Beta Was this translation helpful? Give feedback.
-
New disambiguation stroke added. Example:
It's still rote memoization. Making the change above would make it less bad. Might want to test the language model ("artificial intelligence") method. |
Beta Was this translation helpful? Give feedback.
-
Practicing on TypeRacer. I usually try to guess the two-syllable strokes, and it is usually correct minus conflicts (and phrases). The new system before has much less conflicts. This system might be just as efficient (and more comfortable!) than the new system. But getting conflicts everywhere on TypeRacer is very annoying. Piecewise briefing systems might be interesting. |
Beta Was this translation helpful? Give feedback.
-
There's the new brief suggestion window feature, which writes the list of words to a new window whenever the user writes a brief. Requires https://github.com/user202729/plover-textarea to be installed. Example: if the user writes
Unfortunately, with the current brief system, there can be more than 4 briefs per brief-stroke, and the disambiguation stroke only support 4. (although it can be trivially extended) |
Beta Was this translation helpful? Give feedback.
-
Actually I made this thing more than a year ago, but I don't particularly feel like publishing it because...
With another user publishing their Vietnamese theory (https://github.com/aerickt/plover_viet), I think it's time for me to finalize and publish the theory.
Theory features:
Improvements that I want to make before publishing the theory:
By the way, Vietnamese also have a fast input system based on text expansion: http://chuvietnhanh.sourceforge.net/ It claims to improve input speed by 20-25%.
Beta Was this translation helpful? Give feedback.
All reactions