我正在学习分类。我阅读了有关使用向量的信息。但是我找不到将带有单词的文本翻译成向量的算法。是关于生成单词的散列并将 1 添加到向量中的散列位置吗?
2 回答
当大多数人谈论将文本转换为特征向量时,他们的意思是记录单词(token)的存在。
编码向量的两种主要方法。一个是显式的,其中0
每个不存在的单词都有一个(但在您的词汇表中)。另一种方式是隐式的——就像一个稀疏矩阵(但只是一个向量)——你只用一个频率值编码术语>= 1
。
词袋模型
最能解释这一点的主要文章很可能是词袋模型,它广泛用于自然语言处理应用程序。
显式弓向量示例:
假设你有以下词汇:
{brown, dog, fox, jumped, lazy, over, quick, the, zebra}
该句子"the quick brown fox jumped over the lazy dog"
可以编码为:
<1, 1, 1, 1, 1, 1, 1, 2, 0>
记住,位置很重要。
句子"the zebra jumped"
——即使它的长度更短——将被编码为:
<0, 0, 0, 1, 0, 0, 0, 1, 1>
显式方法的问题在于,如果您有数十万个词汇表,那么每个文档也将有数十万个术语(大部分为零)。
隐式弓向量示例:
在这种情况下,句子"the zebra jumped"
可以编码为:
<'jumped': 1, 'the': 1, 'zebra': 1>
顺序是任意的。
如果您正在学习分类,我将从更简单、更直观的文本表示词袋开始。
但是,如果您对使用特征散列方法感兴趣,特别是如果您有大量数据,我建议您使用这篇描述散列在文本表示和分类中的使用的文章。