2 điểm bởi GN⁺ 4 giờ trước | 2 bình luận | Chia sẻ qua WhatsApp
  • Nỗ lực hiện thực phương thức nhập vuốt trên bàn phím di động bằng mô hình + thuật toán mở
  • Các hệ thống nhập vuốt chất lượng cao hiện có thường bị ràng buộc vào ứng dụng bàn phím xâm phạm quyền riêng tư hoặc thư viện đóng không có giấy phép, nên cần một giải pháp thay thế
  • Được tích hợp vào ứng dụng Android hoàn toàn ngoại tuyến FUTO Keyboard, đồng thời có thể tải mô hình xuống để tự build
  • Từ tháng 8/2024, dự án đã thu thập dữ liệu vuốt tiếng Anh QWERTY và ghi nhận hơn 1 triệu mẫu; đến tháng 3/2025, bộ dữ liệu giấy phép MIT đã được công bố trên HuggingFace
  • Cấu trúc gồm Encoder đa dụng, ContextLM theo từng ngôn ngữ, và Decoder theo từng ngôn ngữ/bố cục; trên tập kiểm thử, tỷ lệ thất bại top-4 khoảng 4%, tỷ lệ lỗi dưới 1% nếu loại trừ OOV
  • Toàn bộ mô hình có khoảng 2,5 triệu tham số, với khoảng 1,36 triệu tham số hoạt động; đây là mô hình nhỏ hướng tới chạy ở mức mili giây cả trên thiết bị cấu hình thấp thông qua thư viện suy luận C++ swipe-library

Vấn đề mà mô hình nhập vuốt mở muốn giải quyết

  • FUTO Swipe là một bộ mô hình và thuật toán chuyển đường vuốt thành dự đoán từ
  • Hiện có thể sử dụng trong ứng dụng bàn phím Android hoàn toàn ngoại tuyến FUTO Keyboard
  • Bản demo trên web chạy phía máy chủ để giảm kích thước trang, nhưng trong môi trường sản phẩm thực tế, hệ thống chạy trực tiếp trên thiết bị nên độ trễ thấp hơn
  • FUTO phát triển hệ thống này chủ yếu cho FUTO Keyboard, nhưng cũng hoan nghênh cộng đồng rộng hơn sử dụng mô hình
  • Vì đây là thành quả của một khoản đầu tư dài hạn, FUTO yêu cầu ghi công tác giả ở dạng hiển thị với người dùng cuối; giấy phép mô hình tuân theo FUTO Model License

Bộ dữ liệu và cấu trúc mô hình

  • Từ tháng 8/2024, dự án bắt đầu thu thập dữ liệu vuốt tiếng Anh QWERTY tại swipe.futo.org
    • Người dùng tự nguyện truy cập trang web trên di động để xem hướng dẫn và thông tin về bộ dữ liệu
    • Sau khi đồng ý, họ vuốt từng từ trong các câu chủ yếu lấy từ Wikipedia
    • Kết quả là có hơn 1 triệu mẫu vuốt được tạo ra, và một số mẫu chất lượng thấp đã bị lọc bỏ
    • Đến tháng 3/2025, bộ dữ liệu 1 triệu mẫu vuốt đã được công bố trên HuggingFace theo giấy phép MIT
  • Kiến trúc mô hình được chia thành ba mô hình với vai trò khác nhau
    • Encoder: mô hình đa dụng độc lập với bố cục và ngôn ngữ, dùng cho dự đoán nhập vuốt nói chung nhưng không nhắm tới độ chính xác cao nhất
    • ContextLM: mô hình ngôn ngữ rất nhỏ cho một ngôn ngữ duy nhất, giúp loại bỏ các ứng viên vô nghĩa dựa trên các từ trước đó để nâng chất lượng dự đoán. Việc huấn luyện chỉ cần dữ liệu văn bản
    • Decoder: mô hình chuyên biệt theo ngôn ngữ và bố cục, học các đặc tính của bố cục để đạt độ chính xác hàng đầu; hiện mới chỉ có Decoder tiếng Anh QWERTY

Hiệu năng và quy mô chạy thực tế

  • Các chỉ số hiệu năng phụ thuộc nhiều vào benchmark, nên kết quả sử dụng thực tế có thể khác
    • Với tổ hợp 3 mô hình và beam width 300, tỷ lệ thất bại top-4 trên tập kiểm thử là khoảng 4%
    • Nếu loại trừ các từ ngoài từ điển, tỷ lệ lỗi dưới 1%
    • FUTO đánh giá mức này tương đương bàn phím của các công ty công nghệ lớn
  • Mô hình có quy mô nhỏ để phù hợp với việc chạy trên di động
    • Encoder có 635.140 tham số
    • Decoder có thêm 304.155 tham số
    • ContextLM có 1,5 triệu tham số, trong đó 1,1 triệu là embedding
    • Số tham số hoạt động là 1.364.271, tổng số tham số là 2.494.767
    • Có thể chạy ở mức mili giây ngay cả trên thiết bị cấu hình thấp, và quá trình huấn luyện không cần quá 1 GPU workstation

Thư viện suy luận và giấy phép

  • Chỉ dựa vào dự đoán của mô hình là chưa đủ; hệ thống cần beam search có ràng buộc từ điển để chấm điểm ứng viên và tìm ra lựa chọn có khả năng cao nhất
    • Vì vậy, dự án đã công bố thư viện C++ swipe-library
    • swipe-library xử lý toàn bộ quá trình suy luận, giải mã và beam search, kết nối từ đường vuốt đến dự đoán từ
    • Mô hình dùng FUTO Model License, còn thư viện suy luận được phát hành theo GPL
  • FUTO cho biết đang chuẩn bị một bài báo trình bày chi tiết hơn về quá trình huấn luyện và kiến trúc

2 bình luận

 

Tôi đang dùng bàn phím nhận dạng giọng nói của công ty này và thấy khá tốt.

 
Ý kiến trên Hacker News
  • Tôi thích nhập vuốt vì tốc độ. Nó thường nhanh hơn chạm từng phím và dễ dùng bằng một tay, nhưng lại hay sai các từ giống nhau và cũng phân biệt chữ đơn/chữ lặp kém
    Từ lâu tôi đã muốn có một bố cục bàn phím mới dành riêng cho vuốt. Giống như Dvorak tối ưu công thái học cho việc gõ tiếng Anh, sẽ rất tốt nếu có một bố cục giúp giảm chồng lấp từ và sự mơ hồ khi vuốt
    Không nhất thiết phải là 26 phím; có thể gom v/w/x/z vào một phím và nhập chữ đơn bằng cách nhấn giữ. Ngược lại, cũng có thể cần tách eee, hoặc một phím đặc biệt kiểu “lặp lại chữ trước đó”
    Phần lớn vấn đề là do QWERTY quá không phù hợp với vuốt, nên nếu có một bố cục tối ưu có thể nâng độ chính xác trong tiếng Anh từ mức cảm nhận hiện tại 90~95% lên tới 99.9%, tôi hoàn toàn sẵn sàng học bố cục mới

    • FUTO Swipe thực sự hỗ trợ ClearFlow, một bố cục bàn phím tối ưu cho vuốt như vậy: https://clearflowkeyboard.github.io/
      https://github.com/futo-org/futo-keyboard-layouts/issues/163
    • Ước tính 90~95% đó khá chính xác, và trong tập kiểm thử cũng đo được mức tương tự. Sắp tới sẽ có một bài blog liên quan
      Về mặt cấu trúc mô hình, chúng tôi có thể tạo các lượt vuốt tổng hợp của khoảng 50 nghìn từ trên mỗi bố cục rồi cho qua mô hình để tối ưu trực tiếp độ chính xác nhận diện, và bằng cách đó đã thử khoảng 800 nghìn bố cục
      Vấn đề lớn nhất của QWERTY là quá nhiều từ bị vuốt thành các mẫu 3 chữ cái liên tiếp nằm trên một đường thẳng hoặc tạo góc tù. Những mẫu này vừa khó nhận diện, vừa khiến người dùng khó thể hiện rõ qua cử chỉ rằng họ định gõ chữ nào
      Mô hình vuốt dùng mạng nơ-ron không cố khớp hình dạng cử chỉ như kiểu đối sánh hình học thuật toán, mà tìm tín hiệu trong mẫu cử chỉ cho thấy người dùng đang nhắm vào những chữ cái cụ thể
      Nếu thay đổi hình dạng bàn phím, cử chỉ có thể được hình thành tốt hơn để tín hiệu chữ cái rõ ràng hơn. Khác với đối sánh hình dạng, mô hình còn dùng cả thông tin thời gian nên có thể phản ứng với thời gian dừng lại, nhưng vì việc dừng làm ngắt dòng chảy nên tôi nghĩ trong bố cục vuốt vẫn nên giảm thiểu điều đó
    • Có thể giờ không còn quá phù hợp vì đây là đồ cũ, nhưng như một ví dụ tái tưởng tượng giao diện cử chỉ rất hay thì có https://www.the8pen.com/
      Có vẻ cũng có một hậu duệ hiện đại: https://play.google.com/store/apps/details?id=inc.flide.vi8
    • Tôi cũng đã muốn điều này từ lâu. Hiện tại tôi dùng Dvorak ở chế độ chia đôi xuất hiện khi xoay điện thoại ngang để có tốc độ nhập tốt
  • Tôi đã dùng bàn phím này gián đoạn một thời gian nhưng lúc nào cũng quay lại gboard, còn sau bản cập nhật này thì đã chuyển hẳn. Thực sự rất tốt
    Vẫn có vấn đề tự nhiên viết hoa ngẫu nhiên các từ giữa câu, và phần gợi ý từ có vẻ không cân nhắc ngữ cảnh tốt nên thường hiện ra những từ không thể nào đứng sau từ ngay trước đó
    Nó vẫn chưa bằng gboard, nhưng đã đủ gần để tôi tiếp tục dùng
    Nếu dùng thiết bị mạnh hơn, bạn có thể tải mô hình giọng nói lớn hơn và từ điển lớn hơn từ trang web, và khác biệt cảm nhận được là khá rõ
    Điều khiến tôi tiếc nhất về mặt nguyên tắc là họ có vẻ phản đối việc thêm tìm kiếm GIF, nhưng thỉnh thoảng tôi vẫn nhớ tính năng đó: https://github.com/futo-org/android-keyboard/issues/293#issu...

    • Có vẻ tôi cũng gặp tình trạng tương tự. Chuyển giọng nói thành văn bản đôi lúc đột nhiên bắt đầu phun ra hàng loạt emoji, không biết bạn có từng gặp vậy chưa
  • Hay đấy. Tôi đã dùng bàn phím FUTO được 2 năm và đó là bàn phím miễn phí, thân thiện với quyền riêng tư tốt nhất tôi tìm thấy cho đến nay, nhưng tính năng vuốt trên những bàn phím kiểu này quá tệ nên với người dùng vuốt nhiều như tôi thì rất khổ sở
    Thật vui khi thấy việc tôi vuốt khoảng một giờ để đóng góp cho bộ dữ liệu có vẻ đã thực sự hữu ích. Dùng thử bây giờ thì cảm giác đã tốt ngang Google Keyboard
    Tuy nhiên việc nó cứ vuốt ra whats thay vì what's thì hơi buồn cười. Hy vọng sau này sẽ sửa được

  • Nếu ai tò mò về giấy phép thì thư viện là GPLv3 nên khá ổn, nhưng bàn phím Android lại là Futo License nên không ổn lắm
    https://gitlab.futo.org/keyboard/swipe-library/-/blob/master...
    https://github.com/futo-org/android-keyboard/blob/master/LIC...

    • Để mọi thứ về giấy phép còn phức tạp hơn nữa, mô hình dùng một giấy phép khác nữa do chính FUTO viết, nhưng ít nhất trông nó không tệ bằng giấy phép của bàn phím: https://huggingface.co/futo-org/futo-swipe/blob/main/LICENSE...
    • Tôi tò mò không biết phần nào trong Futo License là vấn đề nhất
      Có phải là điều khoản này không: trong các bản sao được phân phối, không được gỡ bỏ hoặc che đi chức năng thanh toán cho bên cấp phép
    • Nó đơn giản giống một giấy phép thương mại với điều kiện rất nhẹ
  • Từ khi trải nghiệm Nintype trên iOS vài năm trước, tôi không thể dùng được các bàn phím vuốt khác nữa. Giờ tôi gõ bằng bàn phím mặc định, chỉ thỉnh thoảng vuốt một hai từ khi không thể dùng cả hai tay
    Khi cầm điện thoại bằng hai tay, việc vuốt bằng một ngón thấy khá gượng gạo và chậm chạp. Giá mà Apple mua lại hoặc Sherlock Nintype rồi tích hợp vào bàn phím mặc định

    • Tôi cũng đã dùng nó. Tôi từng thắc mắc liệu FUTO có tính năng nhập một từ bằng nhiều lần vuốt đồng thời hoặc không đồng thời hay không, nhưng có lẽ là không. Tôi còn quên cả tên ứng dụng, đúng là gợi nhiều hoài niệm
      Tôi đã dùng nó từ trước cả khi Apple chính thức cho phép bàn phím bên thứ ba
    • Hoàn toàn đồng ý. Tác giả từng làm một bản port Nintype cho Android đầy lỗi với tên keyboard 69, và tôi đã dùng nó suốt vài năm
      Trải nghiệm người dùng thật sự đáng kinh ngạc, và mọi hệ thống vuốt tôi thử sau đó đều thấy cực kỳ đần độn khi so sánh. Vuốt bằng hai ngón tay là tối ưu nhất về công thái học, nhưng tiếc là có vẻ đây là một đổi mới quá ngách
  • Futo với mô hình vuốt mới là bàn phím Android đầu tiên tôi từng dùng mà không tạo cảm giác như đang thỏa hiệp so với GBoard
    Nó có nhập giọng nói tích hợp, tự sửa khi gõ tốt, và tự sửa khi vuốt cũng tốt

  • Sửa lại: chưa chắc là miễn phí và mở được đảm bảo. Cấu trúc giấy phép khá khó hiểu. Dù vậy nó hoạt động tốt nên tôi định dùng thay cho Gboard
    Đây là chuyện rất lớn. Theo tôi thấy, nó gần như là mô hình vuốt mã nguồn mở miễn phí đầu tiên thực sự dùng được. Nó mở ra con đường để gõ vuốt trên các nền tảng ngoài iOS và Android, đồng thời giảm bớt một điểm đau lớn cho những người mới tham gia làm hệ điều hành

  • Đúng lúc Microsoft bắt đầu nhét chuyển hướng dark pattern sang quảng cáo và Bing vào SwiftKey nên tôi đã xóa nó

    • Nếu ý là đã gỡ cài đặt thì tôi cũng vậy vì đúng lý do đó
      Bảng nhắc dùng tính năng sao lưu cứ liên tục hiện lại, khó chịu đến mức cuối cùng tôi chuyển sang GBoard. Không giống hệt, nhưng tôi đang dần quen
    • Ý là đã gỡ đúng không? Thật đáng buồn khi trong Microsoft, đội Bing lại có quá nhiều quyền lực. Họ làm hỏng sản phẩm vì vinh quang và tiền bạc của Bing
      Chắc là vì tiền, nhưng tôi thấy không phải mọi thứ Microsoft làm đều nhất thiết phải kiếm thật nhiều tiền
  • Trông có vẻ tốt, nhưng vấn đề lớn của bàn phím Futo là nó chỉ hỗ trợ một ngôn ngữ tại một thời điểm. Trên gboard, tôi có thể vuốt bằng 3 ngôn ngữ mình dùng mà không cần liên tục chuyển đổi. Ước gì Futo cũng làm được vậy

  • Nhập liệu bằng giọng nói tốt hơn nhiều so với GBoard tôi dùng trước giờ. Nó tự xử lý viết hoa đầu câu và dấu câu mà tôi không cần bận tâm, nhận đúng hoàn hảo nhiều câu liên tiếp mà không cần sửa hậu kỳ, và tất cả đều chạy bằng mô hình cục bộ
    Nhược điểm là nó không cập nhật theo thời gian thực mà chuyển đổi theo lô sau khi bạn nói xong. Có vẻ họ cũng đã sửa việc vuốt để xóa và phím cách quá nhạy như lần cuối tôi dùng cách đây 1–2 năm, đồng thời cho phép tùy biến phần nào