2012-06-16 32 views
13

Tôi đang thực hiện một số nghiên cứu về thuật toán khớp chuỗi. Một trong những ứng dụng có thể sử dụng nhiều nhất mà tôi thấy là điện thoại di động của tôi sử dụng (android 2.3.4 trên SE xPeria neo v).Thuật toán nào đang được sử dụng trong trình kiểm tra chính tả của Android?

enter image description here

Như đã thấy trong ảnh chụp màn hình, tôi ép các nhân vật jiwgần những cái tôi muốn và nó gợi ý một cách chính xác.

Dường như thuật toán tương tự như levenstein distance (khoảng cách giữa đầu vào của tôi và từ điển). Bằng cách nào đó các ký tự gần có một số giá trị trong kết hợp chuỗi.

Bất kỳ ý tưởng nào về thuật toán được sử dụng?

+5

Một số cử tri có thể giải thích tại sao họ cho rằng điều này không mang tính xây dựng? Câu hỏi rất chính xác ("Thuật toán nào được sử dụng?") Và mã nguồn cho hệ thống được cung cấp công khai để câu hỏi có thể trả lời được. –

+4

+1 cho câu hỏi thú vị, ngắn gọn, thú vị. – goat

+2

Câu hỏi lập trình rất thú vị, +1 VOTE và chúc may mắn cho dự án của bạn – mm24

Trả lời

3

Tôi đã kéo Android source code và tìm kiểm tra chính tả. Tôi tìm thấy thư mục này mà dường như chứa các nguồn mà bạn đang tìm kiếm:

packages/inputmethods/LatinIME/java/src/com/android/inputmethod/latin/ 

File spellcheck/AndroidSpellCheckerService.java trông giống như một thực hiện tất cả các công việc nặng nhọc, nhưng Suggest.java cũng dường như được tham gia một cách nào đó.

2

excellent information retrieval book có phần chi tiết trên Levenstein distance, bao gồm các biến thể có trọng số. Trọng lượng có thể được lấy là khoảng cách giữa các phím trên bàn phím của bạn.

+0

Cảm ơn bạn @phs. Bài viết cung cấp nhiều thông tin và chỉ cho tôi nghi ngờ ban đầu của tôi rằng khoảng cách Levenstein là thước đo cho so sánh chuỗi trong Android. Nhưng chỉ nghi ngờ .. – Odys

Các vấn đề liên quan