由于问题中已经提到了(基于单词的)单热编码和实值向量表示,我只会添加 n-gram 表示,尤其是基于字符的 n-gram 表示。
对于基于单词的n-gram 表示,您考虑的不是单个单词,而是它们在文本中的有序组合,并对组合使用 one-hot 编码。例如,对于 n=2,您最终可能会得到二元组 [“John likes”、“likes to”、“to watch”、“watch movies”],并且它们中的每一个都将使用静态索引分配给某个维度。
这也适用于字符,因此您可以使用以下 3-gram 表示单词“encoding”:[“enc”、“nco”、“cod”、“odi”、“din”、“ing”]。通常会添加 n-gram 的 one-hot 编码,因此在生成的 Bag-of-n-gram 表示中可以识别同一 n-gram 的多次出现。这种表示对于具有丰富形态和/或复合的语言特别有用字。在 one-hot 表示中,每个单词形式都将在其自己的维度中编码,而字符 n-gram 方法有助于保持不同形式之间的相似性。英语中的一个例子是“encode”、“encoded”和“encoding”之间的相似性,它将以这种方式保持不变。一些考虑子词信息的词嵌入算法也使用类似的技术,例如FastText。
此外,虽然它不是直接的编码,但根据您的用例和语言,可能值得查看不同的预处理选项,例如词形还原和词干提取,您可以将不同的单词形式简化为基本形式。这也会影响表示的选择,例如,如果您选择使用这些预处理技术,则基于单词的 one-hot 编码可能更有意义。