机器学习之新闻文本分类。(代码片段)

帅超007 帅超007     2022-11-30     362

关键词:

新闻文本分类首先需要通过大量的训练之后获得一个存放关键字的表,

之后再输入一个新闻内容,通过代码就可以自动判断出这个新闻的类别,

我这里是在已经有了新闻文本的关键词表后的处理,

# encoding=utf-8                                #遍历文件,用ProsessofWords处理文件
from imp import reload
import jieba
import os
import sys
from imp import reload
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer
from sklearn.neighbors import KNeighborsClassifier


reload(sys)
VECTOR_DIR = \'vectors.bin\'
MAX_SEQUENCE_LENGTH = 100
EMBEDDING_DIM = 200
TEST_SPLIT = 0.2


def deposit_txt(title, content):
    textpath = "news/news.txt"
    f = open(textpath, \'w+\', encoding=\'utf-8\')
    f.write(title+content)
    f.close()


def EnumPathFiles(path, callback, stop_words_list):
    if not os.path.isdir(path):
        print(\'Error:"\', path, \'" is not a directory or does not exist.\')
        return
    list_dirs = os.walk(path)

    for root, dirs, files in list_dirs:
        for d in dirs:
            print(d)
            EnumPathFiles(os.path.join(root, d), callback, stop_words_list)
        for f in files:
            callback(root, f, stop_words_list)


def ProsessofWords(textpath, stop_words_list):
    f = open(textpath, \'r\', encoding=\'utf-8\')
    text = f.read()
    f.close()
    result = list()
    outstr = \'\'
    seg_list = jieba.cut(text, cut_all=False)
    for word in seg_list:
        if word not in stop_words_list:
            if word != \'\\t\':
                outstr += word
                outstr += " "
    f = open(textpath, \'w+\', encoding=\'utf-8\')
    f.write(outstr)
    f.close()


def callback1(path, filename, stop_words_list):
    textpath = path + \'\\\\\' + filename
    print(textpath)
    ProsessofWords(textpath, stop_words_list)


def fenci():
    stopwords_file = "stopword/stopword.txt"
    stop_f = open(stopwords_file, "r", encoding=\'utf-8\')
    stop_words = list()
    for line in stop_f.readlines():
        line = line.strip()
        if not len(line):
            continue
        stop_words.append(line)
    stop_f.close()
    print(len(stop_words))
    EnumPathFiles(r\'news\', callback1, stop_words)


def CV_Tfidf():

    reload(sys)

    # 数据获取
    print(\'(1) load texts...\')
    train_texts = open(\'dataset_train/x_train.txt\', encoding=\'utf-8\').read().split(\'\\n\')
    train_labels = open(\'dataset_train/y_train.txt\', encoding=\'utf-8\').read().split(\'\\n\')
    test_texts = open(\'news/news.txt\', encoding=\'utf-8\').read().split(\'\\n\')
    all_text = train_texts + test_texts

    # 特征值抽取
    print(\'(2) doc to var...\')

    count_v0 = CountVectorizer()
    counts_all = count_v0.fit_transform(all_text)
    count_v1 = CountVectorizer(vocabulary=count_v0.vocabulary_)
    counts_train = count_v1.fit_transform(train_texts)
    print("the shape of train is " + repr(counts_train.shape))
    count_v2 = CountVectorizer(vocabulary=count_v0.vocabulary_)
    counts_test = count_v2.fit_transform(test_texts)
    print("the shape of test is " + repr(counts_test.shape))

    tfidftransformer = TfidfTransformer()
    train_data = tfidftransformer.fit(counts_train).transform(counts_train)
    test_data = tfidftransformer.fit(counts_test).transform(counts_test)

    x_train = train_data
    y_train = train_labels
    x_test = test_data

    # KNN算法建模
    print(\'(3) KNN...\')
    knnclf = KNeighborsClassifier(n_neighbors=3)
    knnclf.fit(x_train, y_train)
    preds = knnclf.predict(x_test)
    preds = preds.tolist()
    for i, pred in enumerate(preds):
        print(pred)
        if pred == \'1\':
            return"此新闻为娱乐类新闻"
        elif pred == \'2\':
            return "此新闻为汽车类新闻"
        elif pred == \'3\':
            return "此新闻为游戏类新闻"
        elif pred == \'4\':
            return "此新闻为科技类新闻"
        elif pred == \'5\':
            return "此新闻为综合体育最新类新闻"
        elif pred == \'6\':
            return "此新闻为财经类新闻"
        elif pred == \'7\':
            return "此新闻为房产类新闻"
        elif pred == \'8\':
            return "此新闻为教育类新闻"
        elif pred == \'9\':
            return "此新闻为军事类新闻"
def news(title, content):
    deposit_txt(title, content)
    fenci()
    result = CV_Tfidf()
    return result

 

系统学习机器学习之总结--多标签分类问题(代码片段)

前沿本篇记录一下自己项目中用到的keras相关的部分。由于本项目既有涉及multi-class(多类分类),也有涉及multi-label(多标记分类)的部分,multi-class分类网上已经很多相关的文章了。这里就说一说multi-labe... 查看详情

机器学习之knn鸢尾花分类(代码片段)

KNN简介邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。kNN算法的核... 查看详情

深度学习之nlp(代码片段)

...检查、关键字检索2、文本挖掘3、文本分类(二分类)4、机器翻译5、客服系统6、复杂对话系统4)p(S)=p(w1,w2,w3,w4,w5,&helli 查看详情

机器学习之集成学习算法(代码片段)

...#xff0c;因此优于任何一个单分类的做出预测。1.2复习:机器学习的两个核⼼任务任务一:如何优化训练数据 —>主要用于解决欠拟合问题任务二:如何提升泛化性能 — 查看详情

强烈推荐机器学习之算法篇(代码片段)

机器学习算法机器学习算法数据类型:可用数据集:监督学习和无监督学习:算法分类:scikit-learn数据集获取数据集:获取数据集方式:数据集的划分:本地数据集:分类数据集:回归数据集&#x... 查看详情

强烈推荐机器学习之算法篇(代码片段)

机器学习算法机器学习算法数据类型:可用数据集:监督学习和无监督学习:算法分类:scikit-learn数据集获取数据集:获取数据集方式:数据集的划分:本地数据集:分类数据集:回归数据集&#x... 查看详情

机器学习之深度学习二分类多分类多标签分类多任务分类(代码片段)

多任务学习可以运用到许多的场景。首先,多任务学习可以学到多个任务的共享表示,这个共享表示具有较强的抽象能力,能够适应多个不同但相关的目标,通常可以使主任务获取更好的泛化能力。此外,由... 查看详情

python机器学习之svm(支持向量机)实例(代码片段)

其实在很早以前写过一期SVM,只不过当时对SVM只是初步的了解,现在重新来看,其实SVM还是有很多值得学习的地方。1.SVM介绍SVM可以理解为:使用了支持向量的算法,支持向量机是一种基于分类边界分界的方法。以... 查看详情

集成学习之随机森林案例专题python机器学习系列(十七)(代码片段)

集成学习之随机森林案例专题【Python机器学习系列(十七)】文章目录1.Bagging与随机森林简介2.随机森林--分类任务2.1准备数据2.2python实现随机森林--分类任务2.3绘制ROC曲线与计算AUC2.4绘制决策树3.随机森林--回归任务集成... 查看详情

机器学习之k-近邻(knn)算法(代码片段)

 一.K-近邻算法(KNN)概述   最简单最初级的分类器是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹配时,便可以对其进行分类。但是怎么可能所有测试对象都会找到... 查看详情

机器学习之数据处理与可视化鸢尾花数据分类|特征属性比较(代码片段)

@[toc]一,前言1.1本文基于原理大部分的机器学习模型所处理的都是特征,特征通常是输入变量所对应的可用于模型的数值表示。大部分情况下,收集得到的数据需要经过处理后才能够为算法所使用。通常情况下,一个数据集当中... 查看详情

python机器学习之垃圾短信分类(用朴素贝叶斯算法的伯努利模型和多项式模型分类垃圾短信数据集smsspamcollection.txt)(代码片段)

一.数据集下载地址SMSSpamCollection.txt二.打开下载的.txt文件,可以看到数据集长这样,标签(ham和spam,spam就是指垃圾短信)与文本之间的分隔符是一个tab键,也就是‘\\t’三.首先用pd.read_csv函数读取该数据集时要注意... 查看详情

深度学习实战案例:新闻文本分类(代码片段)

深度学习多分类案例:新闻文本分类公众号:机器学习杂货店作者:Peter编辑:Peter大家好,我是Peter~这里是机器学习杂货店MachineLearningGrocery~之前介绍过一个单分类的问题。当每个数据点可以划分到多个类别... 查看详情

深度学习实战案例:新闻文本分类(代码片段)

深度学习多分类案例:新闻文本分类公众号:机器学习杂货店作者:Peter编辑:Peter大家好,我是Peter~这里是机器学习杂货店MachineLearningGrocery~之前介绍过一个单分类的问题。当每个数据点可以划分到多个类别... 查看详情

[python从零到壹]十四.机器学习之分类算法五万字总结全网首发(决策树knnsvm分类对比实验)(代码片段)

欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分... 查看详情

机器学习之tensorflow-补充学习中20220821(代码片段)

文章目录前言一、前置基础1.1什么是神经网络1.2什么是线性回归1.3示例:识别手写数字1.4示例:图像识别分类1.5待定番外Java/Python业务通信二、待定总结前言以下内容是在学习过程中的一些笔记,难免会有错误和纰漏... 查看详情

深度学习之图像分类(二十六)--convmixer网络详解(代码片段)

深度学习之图像分类(二十六)ConvMixer网络详解目录深度学习之图像分类(二十六)ConvMixer网络详解1.前言2.ASimpleModel:ConvMixer2.1PatchEmbedding2.2ConvMixerLayer2.3ConvMixer网络结构2.4实现代码:3.WeightVisualizations4 查看详情

机器学习之五:神经网络反向传播算法(代码片段)

一、逻辑回归的局限在逻辑回归一节中,使用逻辑回归的多分类,实现了识别20*20的图片上的数字。但所使用的是一个一阶的模型,并没有使用多项式,为什么?可以设想一下,在原有400个特征的数据样本中,增加二次、三次、... 查看详情