Compress - Tự động hóa 1/2 lượng gõ phím của tôi
(github.com/eschluntz)- Công cụ tự động tạo phím tắt gõ từ kho văn bản của chính bạn, đồng thời tạo phím tắt nhập liệu dùng trong email và Slack
- Phân tích kho văn bản để đề xuất các phím tắt giúp tiết kiệm nhiều ký tự nhất khi gõ, và tạo tệp cấu hình cho Autokey, chương trình phím tắt bàn phím trên Linux
- Tìm các n-gram xuất hiện thường xuyên trong kho văn bản để tạo ứng viên thay thế bằng cách diễn đạt ngắn hơn, và xếp hạng đề xuất theo
[số ký tự tiết kiệm được] * [tần suất cụm từ] - Việc chọn phím tắt hướng tới các dạng viết tắt dễ nhớ; những từ viết tắt mà bạn muốn gõ như từ bình thường có thể bị loại bằng blacklist, và các cụm từ dùng thường xuyên hơn sẽ được ưu tiên gán các dạng viết tắt dễ nhớ hơn
- Cũng cung cấp công cụ phân tích Slack Data Export để dùng tin nhắn Slack làm kho văn bản
- Chỉ quản trị viên workspace Slack mới có thể export
- Chỉ export được public channel
- Cần thay
USERNAME_TO_EXPORTbằng tên người dùng Slack rồi chạyparse_slack.py - Quy trình có bao gồm việc xóa Slack export bằng
srm
- Luồng sử dụng cơ bản là đưa kho văn bản vào
data/corpus/*.txt, dùngfind_suggested_phrases.pyđể tạo 200 ứng viên hàng đầu vàooutput/suggested_shortcuts.yaml, sau đó chuyển các mục mong muốn sangshortcuts.yamlvà dùnggenerate_autokeys.pyđể tạo tệp cấu hình Autokey - Cài đặt phụ thuộc bằng
install.sh, hiện được kiểm thử trên Python3.10.12 - Autokey hiện chỉ hỗ trợ X11 trên Linux và không hỗ trợ Wayland
- Cấu hình Autokey được tạo ra chỉ được áp dụng khi Chrome đang được focus; tác giả cũng chia sẻ trải nghiệm rằng trong terminal và vscode, việc trùng giữa các lệnh Linux ngắn hoặc tên biến với dạng viết tắt gây ra nhiều vấn đề hơn
1 bình luận
Ý kiến trên Hacker News
Tôi cũng đã viết một bài blog có kèm video về dự án: https://erikschluntz.com/software/2023/08/26/compressing-my-...
Hiếm hoi thay, đây là một dự án phụ thực sự tiết kiệm cho tôi nhiều thời gian hơn thời gian đã bỏ ra :)
Ý tưởng rất thông minh, nhưng nếu cách hoạt động thay đổi theo thời gian thì có lẽ tôi sẽ không muốn dùng
Ví dụ, nếu chạy 6 tháng một lần, năm ngoái
dblàdebugcòn năm nay lại thànhdatabase, thì nó có thể phá hỏng trí nhớ cơ bắp và thói quenVì vậy tôi tò mò hơn về một phiên bản phổ dụng có thể giúp ích ổn định cho mọi người khi chạy trên sách, email, tin nhắn do hàng nghìn người thuộc nhiều bối cảnh và ngữ cảnh khác nhau viết
Việc mở rộng
tthànhthe,stthànhsomethingcó vẻ hiển nhiên, nhưng tôi tự hỏi liệu có thể tạo một bộ tối thiểu khoảng 200~500 mục để mọi người cùng học, giống như một “bàn phím tiêu chuẩn” hay khônghttps://archive.org/details/evansbasicenglis00evan
Nên dùng PDF; tệp TXT có chất lượng OCR kém nên gần như không dùng được
Cái này cũng hữu ích: https://en.m.wikipedia.org/wiki/Most_common_words_in_English
suggested_shortcuts.yaml, rồi bạn sao chép từ đó vàoshortcuts.yaml, nên có thể kiểm soát thủ công các từ tắt thực sự được kích hoạt :)Và đúng như vậy,
the -> tnằm ngay đầu danh sách: https://jonaquino.blogspot.com/2007/06/yublin-shorthand-for-...Nhà hóa học có thể thường gõ
droppernên muốndp, còn công chức có thể thíchdepartmenthơnNếu không phải người bản ngữ tiếng Trung thì có thể bạn không biết, nhưng tiếng Trung có tính năng như vậy tích hợp sẵn
Chính thức gọi là 双拼(Shuangpin), là cách nhập toàn bộ từ bằng cách gõ 2 ký tự tiếng Anh cho mỗi từ: https://zh.wikipedia.org/zh-sg/%E5%8F%8C%E6%8B%BC
Ngay cả khi không dùng Shuangpin chính thức, hầu hết bộ gõ tiếng Trung đều hỗ trợ chức năng 简拼 tương tự cho các cụm từ phổ biến, cho phép nhập cụm nhiều từ bằng cách chỉ gõ chữ cái tiếng Anh đầu tiên của mỗi từ
Ví dụ để nhập
xiexie, tức “thank you” trong tiếng Trung, thường chỉ cần gõxxlà hầu hết bộ gõ tiếng Trung sẽ tự động gợi ý chữ Hán tương ứngVí dụ 「你想吃什麼」, nghĩa là “what do you want to eat”, được nhập bằng
n x c s mXLBđể viếtXiao long baocó phải cũng là một ví dụ không. Tôi không biết đây là một hệ thống rộng hơn; hay thậtTôi rất thích thấy những dự án như thế này
Cuối tuần rồi tôi xử lý một vấn đề tương tự, nhưng nhắm tới toàn bộ từ chứ không phải các viết tắt trong từ điển tự tạo, và trong trường hợp tổng quát thì điều chỉnh theo ngữ liệu văn bản đã cho
Điều tôi tò mò là “liệu có thể tạo một bộ tự động sửa lỗi được điều chỉnh theo một ngữ liệu văn bản nhất định không?”. Ví dụ trong tài liệu có dùng nhiều cụm dài như
data augmentation, tôi muốn xem liệu có thể tự động hóa việc đó khôngCách tiếp cận là tính độ bất ngờ của từ đơn và 2-gram trên bộ ngữ liệu NYT, thêm trọng số cho các từ có trong chỉ mục mục tiêu cần điều chỉnh, rồi tạo cấu trúc dữ liệu trie được gán trọng số theo độ bất ngờ để dùng như một dạng tự động hoàn thành nâng cao
Lời giải đang hoạt động ở đây: https://github.com/capjamesg/autowrite/blob/main/autocomplet...
Hiện chưa có tài liệu, tôi dự định thêm trong vài ngày tới; nếu muốn trao đổi thì có thể để lại GitHub Issue
Cũng có thể tôi đang hiểu nhầm rằng bạn đang cố tìm cách diễn đạt cùng một ý theo cách sáng tạo hơn
Như một ý tưởng mở rộng, có thể gắn thêm một keylogger theo dõi việc nhập liệu. Tất nhiên bản thân điều đó cũng là một nhược điểm
Cách làm là học các cụm từ người dùng hay dùng, tìm những cụm phổ biến rồi đề xuất từ viết tắt, sau đó nhẹ nhàng nhắc người dùng về từ viết tắt mỗi khi họ nhập cả cụm
Như vậy ai cũng có thể cài đặt, rào cản ban đầu thấp, và năng suất có thể tăng dần theo thời gian
Ý tưởng là lưu dữ liệu trong kho lưu trữ an toàn trên thiết bị để không trở thành rủi ro bảo mật
Một bộ gõ cung cấp tự động hoàn thành tiếng Anh trên desktop giống như điện thoại, hoặc cung cấp từ viết tắt bằng framework bộ gõ như
fcitx5, có vẻ là một khái niệm thú vịCó phải kiểu mỗi tuần tự động xuất lịch sử Slack, tính tần suất từ, rồi dựa trên kết quả thấy được để tự tay chỉ định nhiều cụm mở rộng không?
Cấu trúc là dùng
Bluetooth Keyboard -> ESP32làm host bàn phím, rồi gửi phím bấm ra USB và vào fileNếu có tiền thì cũng có các logger bàn phím USB/PS2 lưu dữ liệu lên đĩa
Nếu khiến mọi người hội tụ theo hướng đó thì cũng giúp nhất quán giữa nhiều máy tính, và hữu ích khi dùng nhiều máy
Với tôi, ngoài một vài tình huống chat, có vẻ gõ phím hiếm khi là nút thắt cổ chai
Thay vào đó chỉ có những tương tác mà băng thông bổ sung của video hoặc âm thanh sẽ hữu ích hơn. Tôi tò mò liệu các từ viết tắt kiểu này có thực sự tiết kiệm thời gian làm việc không
Ví dụ như các trao đổi kiểu “Bạn có thể gửi ảnh chụp màn hình lên không?” hoặc phản hồi bằng cách gửi link Calendly
Khi viết bài dài, việc suy nghĩ nhanh hơn tốc độ gõ cũng thường gây bực bội, nên nó cũng giúp ở phần đó
Gõ phím là thao tác thủ công cản trở suy nghĩ, nên càng giảm thời gian đi vào và thoát ra khỏi việc gõ, ta càng có thể quay lại suy nghĩ nhanh hơn
Tôi đã dành khá nhiều thời gian để làm mở rộng văn bản cho mình dùng
Nó khó hơn tôi nghĩ rất nhiều, và khó tìm được các alias đủ giá trị mà không bị kích hoạt sai quá thường xuyên
Vì hằng ngày tôi giao tiếp bằng nhiều ngôn ngữ nên việc này càng phức tạp hơn, hiện giờ tôi đã tách alias theo từng ứng dụng
Dù vậy vẫn còn kích hoạt sai, và nhìn chung tôi đang đi đến kết luận rằng cần có ký tự phân tách
kk,zz,qqở trước alias, vì chúng hiếm khi xuất hiện ở chữ cái đầu của từ hoặc tên biếnVí dụ
qqmelà chữ ký email của tôiSẽ tốt nếu công cụ trong bài gốc cũng đề xuất alias cho những cụm dài hơn những gì tôi thấy trong README. Tôi nghe nói TextExpander cho MacOS làm được như vậy, nhưng tôi không phải người dùng Mac
Một trong các TODO là tạo cả danh sách chặn các alias cần tránh, dựa trên corpus văn bản thực tế đã phân tích
Thú thật cá nhân mà nói, tôi chưa bao giờ thích kiểu viết tắt SMS dùng trên điện thoại trước thời iPhone
Đó là một trong những lý do tôi hầu như không dùng SMS hay tin nhắn văn bản trừ khi thật cần thiết
Tôi đã dùng mở rộng văn bản từ những ngày đầu của TextExpander chạy trên iOS và macOS, và dù bàn phím iPhone có tốt đến đâu thì việc nhập đi nhập lại địa chỉ nhà, bản đồ nhà/công ty, thông tin công việc/cá nhân vẫn bất tiện. TextExpander đã giúp rất nhiều
Sau đó TextExpander chuyển sang mô hình thuê bao nên tôi bắt đầu tìm lựa chọn thay thế, vì cá nhân tôi cho rằng mô hình thuê bao không phù hợp với kiểu công cụ này. Snippets đi kèm Powerpack của Alfred là lựa chọn thay thế tốt hơn
macOS/iOS cũng có “Text Replacements” tích hợp, nhưng ngoài các ứng dụng của Apple thì nó thường xuyên thất bại. Thứ ở đây giống Text Replacement của Apple, và tôi giữ tính năng đó lại, còn phần còn lại thì quản lý bằng Alfred. Thành thật mà nói, nếu có thể hoàn toàn thoát khỏi Alfred thì có lẽ tôi sẽ chuyển sang hướng này
Tuy nhiên tôi muốn dùng ký tự phân tách cho các phần mở rộng để không cản trở việc gõ thông thường. Hiện tôi dùng
,làm ký tự phân tách, vì trong tiếng Anh sau dấu phẩy luôn có khoảng trắng, còn phần mở rộng của tôi chỉ xảy ra khi gõ dấu phẩy và một đoạn chữ ngắn không có khoảng trắng. Vị trí phím dấu phẩy cũng thuận tiện khi gõ chạmNgay cả nếu vẫn dùng Text Replacement của OS, tôi nghĩ mình cũng sẽ đưa ký tự phân tách vào để tránh từ bị tự động mở rộng trong các tình huống ngoài ý muốn
https://textexpander.com
https://www.alfredapp.com
Ngoại lệ tinh vi nhất là
.py. Thông thường.là ký tự phân tách, nhưng đặt ngoại lệ trướcpyđể không gây cản trở khi nhập tên file PythonVì nhiều năm dùng tự động hoàn thành, trình độ tiếng Anh là ngôn ngữ thứ hai của tôi đã tệ đi rồi
Tôi biết từ nhưng thường không nhớ cách viết nên quên cả cách phát âm, và những công cụ như thế này có vẻ sẽ xóa sạch nốt phần kỹ năng còn lại
Thay vì phải ghi nhớ từ khóa, liệu có thể dùng các chữ cái đầu không?
Vài tuần trước tôi đã thử nghiệm bằng ChatGPT, nhưng có vẻ không có phần mềm hiện có nào có tính năng như vậy
Tôi không giỏi lập trình, nhưng hy vọng ai đó sẽ làm ra nó: https://imgur.com/a/0o4zLwT
Độ chính xác khá ổn, nhưng khi nó đoán sai thì rất khó chịu
Ngay cả khi hoạt động hoàn hảo, khi dùng thực tế thì gánh nặng nhận thức lớn hơn nhiều so với việc gõ như bình thường
Nếu cực kỳ tập trung, tôi có thể dùng chữ viết tắt mà đạt được tốc độ gõ thoải mái như thường ngày, nhưng không thể vượt qua, và cuối cùng tự nhiên lại quay về gõ bình thường
Tuy nhiên, tôi gõ nhanh và viết khá nhiều, nên prototype này về cơ bản đang cố thắng một quy trình trong não đã được tối ưu hóa mạnh mẽ suốt khoảng 30 năm. Có thể nó sẽ phù hợp hơn với những người vốn không gõ nhanh