Thuật toán nào có thể được sử dụng để đạt được dự đoán từ tiếp theo khá tốt?


10

Một cách tốt để thực hiện "dự đoán từ tiếp theo" là gì? Ví dụ: người dùng gõ "Tôi là" và hệ thống gợi ý "a" và "không" (hoặc có thể là những người khác) là từ tiếp theo. Tôi nhận thức được một phương pháp sử dụng Chuỗi Markov và một số văn bản đào tạo (rõ ràng) để ít nhiều đạt được điều này. Nhưng tôi đọc được ở đâu đó rằng phương pháp này rất hạn chế và áp dụng cho các trường hợp rất đơn giản.

Tôi hiểu những điều cơ bản về mạng lưới thần kinh và thuật toán di truyền (mặc dù chưa bao giờ sử dụng chúng trong một dự án nghiêm túc) và có lẽ chúng có thể giúp ích được gì đó. Tôi tự hỏi liệu có bất kỳ thuật toán nào, được đưa ra văn bản đào tạo phù hợp (ví dụ: bài báo và cách gõ riêng của người dùng) có thể đưa ra các đề xuất hợp lý phù hợp cho từ tiếp theo không. Nếu không (liên kết đến) thuật toán, các phương pháp cấp cao chung để tấn công vấn đề này được hoan nghênh.

Câu trả lời:


9

Hãy nhìn vào n-gram . Một n-gram là một chuỗi các ntừ. Trong trường hợp của bạn, bạn muốn ntrở thành 3, vì bạn cần hai query wordsvà a resulting word. Một gram 3 sẽ là ví dụ "Tôi mệt", một câu khác "Tôi hạnh phúc".

Những gì bạn cần sau đó là một bộ 3 gram được thu thập qua ngôn ngữ mục tiêu của bạn, nói tiếng Anh. Vì bạn không thể thu thập nó trên tất cả mọi thứ được viết bằng tiếng Anh, bạn cần phải lựa chọn. Sự lựa chọn các văn bản đại diện được gọi là a corpus. Nếu văn bản của bạn tốt, nó sẽ cho bạn biết tần suất một chuỗi ba từ cụ thể xuất hiện cùng nhau trong tiếng Anh. Từ đó bạn có thể tính xác suất của 3 gram.

Thu thập loại dữ liệu này là phần khó nhất. Khi bạn có danh sách tất cả 3 gram cùng với xác suất của chúng, bạn có thể lọc danh sách của mình thành tất cả 3 gram bắt đầu bằng "Tôi là". Sau đó, bạn sắp xếp tất cả danh sách này theo xác suất et voilà: dự đoán của bạn.


Được rồi, và có một giá trị tối ưu của nđiều đó mang lại kết quả tốt đẹp? Nó không phải lúc nào cũng thể là kết luận thứ ba được dự đoán, bạn sẽ thấy
Yati sagade

2
Chà, một cái lớn hơn nmang lại một danh sách dài hơn sẽ đưa ra dự đoán chính xác hơn nhưng cũng tốn kém hơn để tìm kiếm. Vì vậy, đó là sự đánh đổi giữa độ chính xác và thời gian tính toán.
sebastiangeiger

2
Ngoài ra, bạn cần một khối lượng lớn hơn cho n-gram lớn hơn để thực sự hữu ích.
liori

4
ừ, đây đúng là một Chuỗi Markov ... không chỉ vậy, mà theo nghĩa đen là ví dụ trong sách giáo khoa nhất ...
Justin L.

2

Có vẻ như miền vấn đề là một tập hợp con của tìm kiếm chuỗi. Bằng cách mở rộng các từ để bao gồm khoảng trắng, kết hợp chuỗi mờ có thể được áp dụng ở đây.

Bạn có thể muốn xem xét / cho phép tất cả người dùng nhập dưới dạng một từ trong quá trình đào tạo ngoài từ điển của bạn. Điều này cho phép bạn đề xuất từ ​​tiếp theo nhưng cũng gợi ý tự động hoàn thành từ hoặc cụm từ.

Đây là một liên kết đến một trình biên dịch các thuật toán tìm kiếm chuỗi mờ

http://ntz-develop.blogspot.com/2011/03/fuzzy-opes-search.html


1

Bạn đang tìm kiếm một mô hình ngôn ngữ (thống kê) .

Một mô hình ngôn ngữ thống kê gán một xác suất cho một chuỗi các từ m P(w_1,...,w_m)bằng cách phân phối xác suất ...

Trong nhận dạng giọng nói và nén dữ liệu, một mô hình như vậy cố gắng nắm bắt các thuộc tính của ngôn ngữ và dự đoán từ tiếp theo trong chuỗi lời nói ...


Ồ Nhưng tôi nghĩ câu trả lời của @ sebastiangeiger giải thích điều này cho n = 3.
yati sagade

Câu trả lời của ông mô tả một mô hình ngôn ngữ cụ thể, cụ thể là mô hình n-gram. Có các mô hình ngôn ngữ khác, ví dụ: mô hình ngôn ngữ cú pháp ( goo.gl/ffPOg ).
dùng3287
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.