当前位置:   article > 正文

【机器学习】文本数据简单向量化_机器学习怎么将中文数据向量化

机器学习怎么将中文数据向量化

一个文本数据指的是一篇文章,或者一段话,或者一句话。这个文本数据通常称为document,或者text。我们平常的文本都是以人的表达方式展现的,是一个流数据,时间序列数据。我们如果要用计算机对文本数据进行处理,就必须将文本数据表示为计算机能理解的方式。这篇博客就讲解给定一个已经分词、去除停用词后的文本数据集,如何将其向量化的方法。

one-hot表示法

one-hot表示法先将文本数据集中不重复的单词提取出来,得到一个大小为V的词汇表。然后用一个V维的向量来表示一个文章,向量中的第d个维度上的1表示词汇表中的第d个单词出现在这篇文章中。比如给定一个数据集
这里写图片描述

首先提取出其中的不重复单词(不考虑单词在文本中出现的先后顺序),得到一个含有7个单词的词汇表:
这里写图片描述

那么文本数据集就转化为one-hot矩阵:
这里写图片描述

vocab = sorted(set(words), key=words.index)

def doc2onehot_matrix(vocab, docs):
    ''' 
      transform a document to onehot vector
    '''
    M = len(docs)
    V = len(vocab)
    onehot = np.zeros((M, V))
    for d, doc in enumerate(docs):
        for word in doc:
            if word in vocab:
                pos = vocab.index(word)
                onehot[d][pos] = 1
    return onehot
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

如果文本数据集太大,那么得到的词汇表中可能存在几千个单词,这样会文本的维度太大,不仅会导致计算时间增加,而且带来了稀疏问题(one-hot矩阵中大多数元素都是0)。因此,我们通常在计算词汇表的时候,会排除那些出现次数太少的单词,从而降低文本维度。

tf 表示法

不同于one-hot表示法只关心单词是否出现,tf (term-frequency)表示法还关心单词出现的次数,因此tf矩阵中每个元素表示其对应的单词在文章中出现的次数/文章中的总次数,即单词在文章中的频率。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/710416
推荐阅读
相关标签
  

闽ICP备14008679号