一、文本向量化
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)
根据公式得到结论:只要统计某一类新闻中的每一个词出现的次数就可以。
问题:平滑技术是给未出现在训练集中的词语一个估计的概率,而相应地调低其他已经出现的词语的概率。