美文网首页
词袋模型(新闻文本分类)

词袋模型(新闻文本分类)

作者: MGK_Tracy | 来源:发表于2018-11-18 22:50 被阅读0次

                我们要用词袋模型进行文本分类,训练模型大致可以分为两步:第一步,用TF-IDF表示文本特征;第二步,把TF-IDF值和标签值送入分类模型训练。


            第一步用TF-IDF表示文本特征:     

                                         “TF-IDF值” = “TF值” ✖ “IDF值”     (在实操中,我们会把TF值进行归一化,以防止它偏向长文本)

            TF值:某个词(字)在文本(一段话)中出现的频率

            IDF值:某个词(字)在文本(一段话)中的普遍重要性的度量。某一词(字)的IDF值,可以由总文本数目除以包含该词(字)的文本的数目,再将得到的商取 10为底的对数。

    这里我们使用sklearn中的TfidfVectorizer方法计算出TF-IDF值:

             首先看一下数据,此数据集为训练数据集,分为“频道”和“文章”两列,后面将使用这样的数据集来进行模型训练。

    训练数据集

    由于在文本中有许多没有用的词(字)和标点符号,所以要去停用词

    TfidfVectorizer方法计算TF-IDF值

    参数解释:

                    tokenizer = jieba.lcut  用jieba分词中的精确模式;stop_words 定义停用词词典,会在结果中删除词典中包含的词;norm 表示对TF-IDF矩阵的每一行使用l2范数归一化; use_idf 表示在TF矩阵的基础上计算IDF,并相乘得到TF-IDF;smooth_idf 表示通过加1到文档频率平滑idf权重,为防止除零,加入一个额外的文档(防止计算IDF时出现除0的尴尬情况);sublinear_tf 表示使用 1+log(tf)替换原来的tf, True值表示使用    

                    contents参数就是我们要计算成TF-IDF值的文本数据集(即文章那一列的数据)

    得到的TF-IDF值:

    计算出的TF-IDF值

    我们可以看看这个词袋包含多少词:

    词表中有25359个词


    第二步,把TF-IDF值和标签值送入分类模型训练:

               我们在得到TF-IDF模型之后,我们还需要对频道那一列进行处理。频道那列其实就是标签值,包含娱乐,体育,音乐之类的类别。

                把频道那一列进行编码,得到标签值y ,再用刚刚训练好的tfidf模型计算出x值:

    得到x和y

                这里我们在分割训练集和测试集时,不再直接用x,y来分割,因为此时数据量太大,会让分割时间变长,所以通过分割index值来得到训练集和测试集:

    分割训练集和测试集

                这里使用逻辑回归模型:

    训练模型

                训练完我们评估一下模型效果:

    通过混淆矩阵可以观察其分类正确和错误的数量

    最后保存模型:

    保存模型

    使用模型预测新的新闻文本:

                                加载保存的模型:

    加载模型,并运用模型转换为词袋并预测

    和实际类别进行比对:

    预测值和实际值对比

    总结:

                上面整个流程就是一个简单的通过词袋模型进行新闻文本分类,通过计算出TF-IDF值,再送入分类模型进行预测。

    相关文章

      网友评论

          本文标题:词袋模型(新闻文本分类)

          本文链接:https://www.haomeiwen.com/subject/vxvgfqtx.html