我对使用深度学习和教程的自动完成很感兴趣,我发现它们总是以特定数量的字符为条件(假设 40 个字符预测下一个字符或整个完整的单词)。但在现实世界中,自动完成是在输入第一个字母后完成的。
我正在检查自动完成在 Whatsapp 中的工作原理,我有以下观察结果:
#1。自动完成在第一个字母之后就已经开始工作了。
#2。在我输入空格之前,Whatsapp 建议继续一个单词,例如:输入“L”将导致建议“L”、“Like”、“Last”。
#3。如果我在一个单词后输入一个空格,自动完成会提示我整个下一个单词,例如:输入“Last”将导致提示“time”、“night”、“week”。
#4。如果我输入“I am ru”,它会提示“running”、“run”。(注意:语法上,run是错误的)
可以使用带有 one-hot 编码或词嵌入的 RNN/LSTM 来做这些事情。
但是,我想知道火车数据集应该是什么样子:
- 它是基于字符的模型,具有不同的 n-gram 单词吗,例如:
1.1 char-based 1-gram ('l', 'i', 'k', 'e') word 将涵盖 #1 和 #2 的情况,因为我将能够对下一个字符进行采样。
1.2. 基于字符的 2-gram 单词 ('l', 'i', 'k', 'e', '', 's','u','n') 将涵盖#3,因为我将能够预测整个完整的下一个单词(基于字符),它还保留了对前一个单词的依赖。
通过使用 1.1 和 1.2,我可以涵盖案例 #1、#2 和 #3 并模拟 2 字依赖。
- 它是具有不同 n-gram 的基于单词的模型吗,例如:
2.1 基于单词的具有 1 个克的模型,例如。“像太阳”-> 序列:“像”,预测:“太阳”。这将允许我
用 2 克对 #3 2.2 基于单词的模型进行建模,例如。“像太阳和”-> 序列:“像太阳”,预测:“和”。这将使我能够模拟更长的依赖关系。
通过使用 1.1 和 2.1,我将涵盖案例 #1、#2、#3。
问题:
我想知道什么会更好:使用 1.1 和 1.2 或 1.1 和 2.1。
另外,让我知道我的思维方式是否正确,或者我是否在某个地方完全错误,或者我错过了什么,或者您是否认为有一些更简单的方法可以做到这一点。很高兴有任何建议。