文本分类问题

一、文本向量化

  1、中文文本分词:jieba库 (深度学习中实现)如:‘ ’.join(list(jieba.cut(strs))

  2、词袋模型(Bag of words),文本无顺序

  3、CountVectorizer(词频统计) (稀疏矩阵)sklearn 中  

vectorizer = t2v.CountVectorizer()
vectors = vectorizer.fit_transform( )

  4、TF*IDF (词频统计+逆文档频率)

    降低非关键字的权重  

  注意:同一个任务中字典只能是一个,fit只能用一次;  

  即:对训练数据x_train,进行fit_transform(),而对测试数据X_test,只进行transform()就行了,不能再用fit(),否则会造成同一个模型

  用不同的字典,导致分类出错

vectorizer = t2v.CountVectorizer()
vectors = vectorizer.fit_transform(text)
print("单词向量:\n", vectors.todense())

todense()得到单词向量,如果不加,会得到稀疏矩阵,即通过单词的位置坐标表示的单词

二、文本问题建模

  1、朴素贝叶斯解决文本分类问题:

公式分析:C为类别,词a,词b,词c,为C类新闻中的单词

因为是朴素贝叶斯算法,所以各个单词之间是相互独立的,概率为P(C)P(词a|C)P(词b|C)P(词c|C)    

根据公式得到结论:只要统计某一类新闻中的每一个词出现的次数就可以。

问题:平滑技术是给未出现在训练集中的词语一个估计的概率,而相应地调低其他已经出现的词语的概率。

猜你喜欢

转载自www.cnblogs.com/1112-msf/p/12537377.html
今日推荐