模型中字符串(关键字/主题)的表示选项

数据挖掘 nlp 词嵌入 主题模型 javascript
2022-03-03 09:26:06

在机器学习模型中表示关键字的所有可能方法是什么?

我知道的两个是:

  • 一种热编码,使用静态索引。
  • 矢量表示,使用嵌入层。

我们有一个特定的问题,我们正在执行客户端(浏览器)ml,并且需要将文本数据转换为模型可以使用的东西,而无需将其发送到服务器。

编辑:(注释说明)文本数据是从我们的脚本加载的页面中提取的,然后我们希望在浏览器上本地运行模型 - 使用页面中基于文本的功能(理想情况下)。我们正在最小化所有元素中需要发送到服务器的任何数据。

就模型而言,在这个阶段没有定义,这个问题也主要涉及基于文本的特征的表示。

1个回答

由于问题中已经提到了(基于单词的)单热编码和实值向量表示,我只会添加 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 编码可能更有意义。