精华内容
下载资源
问答
  • 新闻分类

    2012-11-30 21:01:11
    最近手头有一个新闻分类的工作。分类是个古老的话题。我贴出来一些有意思的发现,具体的细节此处略过。 首先说一下我用到的特征: 标题tfidf正文tfidf单词首次出现的位置,计算公式为log(|D|/first_pos),(我...

    最近手头有一个新闻分类的工作。分类是个古老的话题。我贴出来一些有意思的发现,具体的细节此处略过。

    首先说一下我用到的特征:

    • 标题tfidf
    • 正文tfidf
    • 单词首次出现的位置,计算公式为log(|D|/first_pos),(我试过|D|/first_pos,不过效果不理想)
    分类器我采用了线性的SVM,训练测试集是从sina, sohu, qq, 163, ifeng, people, newschina, xinhuanet等新闻网站的各个频道抓取的内容,总共19个类。其中训练数据168186条,测试数据84094条。

    只用正文TFIDF特征

    F1= 0.828632839406
    classification report:
                 precision    recall  f1-score   support

        society       0.66      0.62      0.64      3183
       politics       0.61      0.24      0.34       709
         sports       0.98      0.98      0.98     16501
           tech       0.81      0.85      0.83      8029
            ent       0.87      0.95      0.91     11178
        finance       0.79      0.81      0.80     13396
           life       0.00      0.00      0.00       257
            mil       0.75      0.76      0.75      1406
           auto       0.85      0.90      0.87      3175
          world       0.72      0.52      0.60      3038
           game       0.93      0.88      0.90      2391
         travel       0.66      0.71      0.68      1621
         health       0.71      0.83      0.77      2275
          house       0.87      0.88      0.87      7952
        fashion       0.83      0.67      0.74      1807
           book       0.69      0.77      0.73      3910
      education       0.70      0.70      0.70      2060
        culture       0.46      0.02      0.04       695
           home       0.68      0.69      0.68       511

    avg / total       0.83      0.84      0.83     84094

    正文特征 + 标题特征

    F1= 0.835025935861
    classification report:
                 precision    recall  f1-score   support

        society       0.68      0.65      0.66      3183
       politics       0.63      0.25      0.36       709
         sports       0.98      0.98      0.98     16501
           tech       0.82      0.85      0.83      8029
            ent       0.89      0.95      0.92     11178
        finance       0.80      0.81      0.81     13396
           life       0.33      0.00      0.01       257
            mil       0.77      0.77      0.77      1406
           auto       0.85      0.90      0.88      3175
          world       0.72      0.53      0.61      3038
           game       0.92      0.89      0.91      2391
         travel       0.69      0.71      0.70      1621
         health       0.73      0.83      0.78      2275
          house       0.87      0.88      0.88      7952
        fashion       0.83      0.68      0.75      1807
           book       0.70      0.79      0.74      3910
      education       0.71      0.72      0.72      2060
        culture       0.52      0.05      0.09       695
           home       0.67      0.68      0.68       511

    avg / total       0.84      0.84      0.84     84094

    可见标题特征对于分类的作用还是比较明显的


    正文特征 + 标题特征 + 单词首次出现位置特征

    F1= 0.847837374012
    classification report:
                 precision    recall  f1-score   support

        society       0.69      0.68      0.69      3183
       politics       0.63      0.32      0.42       709
         sports       0.99      0.98      0.98     16501
           tech       0.83      0.86      0.85      8029
            ent       0.90      0.96      0.93     11178
        finance       0.81      0.83      0.82     13396
           life       0.50      0.01      0.02       257
            mil       0.78      0.78      0.78      1406
           auto       0.87      0.92      0.89      3175
          world       0.73      0.57      0.64      3038
           game       0.93      0.90      0.92      2391
         travel       0.70      0.73      0.72      1621
         health       0.74      0.84      0.79      2275
          house       0.88      0.89      0.89      7952
        fashion       0.84      0.71      0.77      1807
           book       0.72      0.82      0.77      3910
      education       0.73      0.74      0.73      2060
        culture       0.54      0.07      0.12       695
           home       0.69      0.72      0.70       511

    avg / total       0.85      0.85      0.85     84094


    单词首次出现位置特征对于文本分类效果的影响在某种程度上来说超过了标题的贡献。

    这里我只给出了一种位置特征,按道理来说其他类型的位置特征也应该能够对于分类起到较大的作用。


    展开全文
  • 新闻分类 根据新闻标题将新闻分类。 尝试了各种分类器-决策树,支持向量分类器,多项朴素贝叶斯分类器,多层感知器,随机森林。 多项式朴素贝叶斯分类器效果最好。 即使我们人类根据关键字进行分类,多项式朴素...
  • 新闻分类语料

    2020-01-30 04:13:11
    新闻分类语料,9个类别财经,教育,军事,科技,政治等 按新闻标签爬取的。 新闻分类语料,9个类别财经,教育,军事,科技,政治等 按新闻标签爬取的。
  • 搜狗新闻分类语料

    2018-10-30 11:32:07
    整理自搜狗实验室中的新闻分类。含有金融、体育、军事等11个分类集。
  • 新闻分类浏览app

    2016-07-11 15:52:47
    新闻分类浏览app
  • 新闻分类-源码

    2021-02-10 03:34:14
    新闻分类 webapp- 数据集-https:
  • 新闻分类器-源码

    2021-02-18 11:26:23
    新闻分类
  • 原标题:新闻分类:多分类问题(Python深度学习)

    原标题:新闻分类:多分类问题(Python深度学习)

    展开全文
  • 新闻分类数据文件

    2018-03-23 13:59:54
    用于机器学习分类算法的新闻分类数据,一共有10大类,统一整理到一个csv文件中。
  • 新闻分类标注集

    2016-03-01 17:21:23
    最近在做新闻分类 ,人工标注了部分新闻 ,共32个类别 ,5,715 个新闻文件,模型训练出来后预测效果还不错,需要做新闻分类的同学可以下载...
  • Python之新闻分类

    千次阅读 2020-04-22 17:51:04
    新闻分类 背景 新闻分类是文本分类中常见的应用场景。传统的分类模式下,往往是通过人工对新闻进行核对,从而将新闻进行分类。但是这种方式效率不高。 能够对文本数据进行预处理 能够通过Python统计词频,生成...

     

    新闻分类

    背景

    新闻分类是文本分类中常见的应用场景。传统的分类模式下,往往是通过人工对新闻进行核对,从而将新闻进行分类。但是这种方式效率不高。

    • 能够对文本数据进行预处理
    • 能够通过Python统计词频,生成词云图
    • 能够通过方差分析,进行特征选择。
    • 能够根据文本内容,对文本数据进行分类。

    1、加载数据集

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import matplotlib
    import warnings
    
    plt.rcParams["font.family"] = "SimHei"
    plt.rcParams["axes.unicode_minus"] = False
    plt.rcParams["font.size"] = 15
    warnings.filterwarnings("ignore")
    %matplotlib inline
    
    news = pd.read_csv("./news.csv", encoding="utf-8")
    display(news.head())

    2、数据预处理

    2.1 缺失值处理

    news.info()

    ##使用新闻标题填充缺失的新闻内容
    index = news[news.content.isnull()].index
    news["content"][index]=news["headline"][index]  
    news.isnull().sum()

    2.2 重复值处理

    ###自定义背景
    wc = WordCloud(font_path=r"C:\Windows\Fonts\STFANGSO.ttf", mask=plt.imread("./imgs/map3.jpg"))
    
    plt.figure(figsize=(15,10))
    img = wc.generate_from_frequencies(c)
    plt.imshow(img)
    plt.axis("off")
    print(news[news.duplicated()])

    news.drop_duplicates(inplace=True)

    2.3 文本内容清洗

    import re  ####文本的处理 sub调用编译后的正则对象对文本进行处理
    re_obj = re.compile(r"['~`!#$%^&*()_+-=|\';:/.,?><~·!@#¥%……&*()——+-=“:’;、。,?》《{}':【】《》‘’“”\s]+")
    
    def clear(text):
        return re_obj.sub("", text)
    news["content"] = news["content"].apply(clear)
    
    news.sample(10)

    2.4 分词

    import jieba
    def cut_word(text):   ###分词,使用jieba的lcut方法分割词,生成一个列表,
        ####cut()  生成一个生成器, 不占用空间或者说占用很少的空间,使用list()可以转换成列表
        return jieba.lcut(text)
    
    news["content"] = news["content"].apply(cut_word)
    news.sample(5)

     2.5 停用词处理

    def get_stopword():####删除停用词,就是在文中大量出现,对分类无用的词 降低存储和减少计算时间
        s = set()   ###通过hash处理后的键映射数据    列表则是通过下标的顺序存储映射数据
        with open("./stopword.txt", encoding="utf-8") as f:
            for line in f:
                s.add(line.strip())
        return s         
    
    def remove_stopword(words):
        return [word for word in words if word not in stopword]
    
    stopword = get_stopword()
    news["content"] = news["content"].apply(remove_stopword)
    news.sample(5)

     3、数据探索

    3.1 类别数量分布

    ###数据探索  描述性分析
    ###tag统计
    t = news["tag"].value_counts()
    print(t)
    t.plot(kind="bar")

    3.2 年份统计

    ###年份数量分布  指定expand=True生成DataFrame
    """
    str.split()有三个参数:第一个参数就是引号里的内容:就是分列的依据,可以是空格,符号,字符串等等。
    第二个参数就是前面用到的expand=True,这个参数直接将分列后的结果转换成DataFrame。
    第三个参数的n=数字就是限制分列的次数。
    如果我想从最右边的开始找分列的依据,可以使用rsplit(),rsplit和split()的用法类似,
    一个从右边开始,一个从左边开始。
    """
    t = news["date"].str.split("-", expand=True)
    
    t2 = t[0].value_counts()
    t2.plot(kind="bar")

    3.3 词汇统计

    ###词汇统计
    
    ##词汇频数统计
    
    from itertools import chain
    from collections import Counter
    
    li_2d = news["content"].tolist()  ###转二维数组
    
    ###二维数组转一维数组
    li_1d = list(chain.from_iterable(li_2d))
    print(f"词汇总量:{len(li_1d)}")
    c = Counter(li_1d)
    print(f"不重复词汇数量:{len(c)}")
    print(c.most_common(15))

    common = c.most_common(15)
    d = dict(common)
    plt.figure(figsize=(15,5))
    plt.bar(d.keys(), d.values())

     3.4 生成词云图

    ###词云图
    
    from wordcloud import WordCloud
    
    wc = WordCloud(font_path=r"C:\Windows\Fonts\STFANGSO.ttf", width=800, height=600,  background_color='green')
    join_word = " ".join(li_1d)   ####词云图需要以空格的格式产生
    img = wc.generate(join_word)
    plt.figure(figsize=(15,10))
    plt.imshow(img)
    plt.axis("off")
    wc.to_file("wordcloud.png")  

    #自定义背景
    wc = WordCloud(font_path=r"C:\Windows\Fonts\STFANGSO.ttf", mask=plt.imread("./imgs/map3.jpg"))
    
    
    plt.figure(figsize=(15,10))
    img = wc.generate_from_frequencies(c)
    plt.imshow(img)
    plt.axis("off")

    4、文本向量化

    将文本转换为数值特征向量的过程,称为文本向量化。将文本向量化,可以分为如下步骤:

    • 对文本分词,拆分成更容易处理的单词
    • 将单词转换为数值类型。

    4.1 词袋模型

    词袋模型是一种能够将文本向量化的方式。在词袋模型中,每一个文档为一个样本,每个不重复的单词为一个特征,单词在文档中出现的次数作为特征值。

    4.2 TF-IDF

    有些单词,我们不能仅以当前文档中的频数来进行衡量,还要考虑其在语料库中,在其他文档中出现的次数。

    TF 词频,指一个单词在文档中出现的次数。

    IDF 逆文档频率

    计算方式为:

    from sklearn.feature_extraction.text import CountVectorizer
    count = CountVectorizer()
    docs = [
        "Where there is a will, there is a way",
        "There is no royal road to learning."
    ]
    bag = count.fit_transform(docs)
    ###bag 是一个稀疏的矩阵
    
    print(bag)
    ###调用toarray()方法,将稀疏矩阵转换成稠密矩阵
    print(bag.toarray())

     

    print(count.get_feature_names())###特征
    print(count.vocabulary_)  ###单词和编号的映射关系

    ​
    from sklearn.feature_extraction.text import CountVectorizer
    count = CountVectorizer()
    docs = [
        "Where there is a will, there is a way",
        "There is no royal road to learning."
    ]
    bag = count.fit_transform(docs)
    ###bag 是一个稀疏的矩阵
    
    print(bag)
    ###调用toarray()方法,将稀疏矩阵转换成稠密矩阵
    print(bag.toarray())

    from sklearn.feature_extraction.text import TfidfVectorizer
    
    docs = [
        "Where there is a will, there is a way",
        "There is no royal road to learning."
    ]
    tfidf = TfidfVectorizer()
    t = tfidf.fit_transform(docs)
    print(t.toarray())

    5、建立模型

    5.1 构建训练集和测试集

    ##文本向量化需要传递空格分开的字符串数组类型
    
    def join(text_list):
        return " ".join(text_list)
    news["content"] = news["content"].apply(join)
    news["tag"] = news["tag"].map({"详细全文": 0, "国内":0, "国际":1})
    news["tag"].value_counts()
    from sklearn.model_selection import train_test_split
    
    X = news["content"]
    y = news["tag"]
    
    X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.25)

    5.2 特征选择

    vec = TfidfVectorizer(ngram_range=(1, 2))####考虑二维的特征 临近的两个特征组合
    
    X_train_vec = vec.fit_transform(X_train)
    X_test_vec = vec.transform(X_test)
    display(X_train_vec, X_test_vec)

     5.2.1 方差分析

    使用词袋模型向量化后,会产生过多的特征,这些特征会对存储与计算造成巨大的压力,同时,并非所有的特征对建模有帮助。

    使用方差分析来进行特征选择。

    from sklearn.feature_selection import f_classif
    
    
    #根据y进行分组,计算X中,每个特征的F值与P值
    #F值越大,P值越小。
    f_classif(X_train_vec, y_train)

     

    from sklearn.feature_selection import SelectKBest
    
    X_train_vec = X_train_vec.astype(np.float32)
    X_test_vec = X_test_vec.astype(np.float32)
    selector = SelectKBest(f_classif, k=min(20000, X_train_vec.shape[1]))
    selector.fit(X_train_vec, y_train)
    
    X_train_vec = selector.transform(X_train_vec)
    X_test_vec = selector.transform(X_test_vec)
    print(X_train_vec.shape, X_test_vec.shape)

     5.3 逻辑回归

    from sklearn.linear_model import LogisticRegression
    from sklearn.model_selection import GridSearchCV
    from sklearn.metrics import classification_report
    param=[{"penalty":["l1","l2"],"C":[0.1,1,10],"solver":["liblinear"]},
          {"penalty":["elasticnet"],"C":[0.1,1,10],"solver":["saga"], "l1_ratio":[0.5]}]
    
    gs = GridSearchCV(estimator=LogisticRegression(), param_grid=param, cv = 5, scoring="f1",n_jobs=-1,verbose=10)
    
    gs.fit(X_train_vec, y_train)
    
    print(gs.best_params_)
    y_hat = gs.best_estimator_.predict(X_test_vec)
    print(classification_report(y_test,y_hat))

    5.4 朴素贝叶斯

    from sklearn.naive_bayes import GaussianNB, BernoulliNB, MultinomialNB, ComplementNB
    
    from sklearn.pipeline import Pipeline
    
    from sklearn.preprocessing import FunctionTransformer
    
    ###定义函数转换器,将稀疏矩阵转换成稠密矩阵
    
    steps = [("dense",FunctionTransformer(func=lambda X:X.toarray(), accept_sparse=True)),
            ("model", None)]
    pipe = Pipeline(steps=steps)
    param = {"model":[GaussianNB(), BernoulliNB(), MultinomialNB(), ComplementNB()]}
    
    gs = GridSearchCV(estimator=pipe, param_grid=param, cv=5, scoring="f1", n_jobs=-1,verbose=10)
    gs.fit(X_train_vec, y_train)
    gs.best_estimator_.predict(X_test_vec)
    print(classification_report(y_test, y_hat))

     

    展开全文
  • 新闻分类:多分类问题 转载于:https://www.cnblogs.com/liuys635/p/11184212.html

    新闻分类:多分类问题

     

    转载于:https://www.cnblogs.com/liuys635/p/11184212.html

    展开全文
  • 搜狐新闻分类语料库

    2017-06-19 17:26:04
    搜狐新闻分类语料库,主要包含 0 汽车 1 财经 2 IT 3 健康 4 体育 5 旅游 6 教育 7 招聘 8 文化 9 军事 十个分类,共50多万条记录
  • 目的很简单,就是根据新闻标题对新闻分类 大致思路:1.抓取数据抓取某个新闻网站的新闻标题和新闻分类写入本地,存放为CSV文件2.数据清洗因为要对中文文本进行分类,首先去重并删除每条标题的数字和英文字母使用...
  • NLP-新闻分类 训练和部署基于ULMFit的新闻分类器。 实时版本: : 无服务器版本: : 博客文章: : 在云/本地计算机上运行 要运行该应用程序,我们可以使用Docker Hub上可用的预构建docker映像,只需运行以下命令...
  • 新闻分类web项目.rar

    2020-06-23 00:57:00
    新闻分类系统,可上传新闻自动划分类别,上传页为/upload,使用textcnn模型,python 3.6,tensorflow 1.3,前端展示使用Django框架 版本2.0.3,数据库使用默认Sqlite3,所需数据链接:...提取码:bf4m ...
  • 【深度学习kears+tensorflow】新闻分类:多分类问题

    万次阅读 多人点赞 2020-04-26 12:38:16
    目录Classifying newswires: a multi-class classification example新闻分类:多分类问题The Reuters dataset路透社数据集Preparing the data准备数据Building our network构建网络Validating our approach验证你的...
  • 朴素贝叶斯新闻分类java代码 有训练和测试数据
  • NLP实战新闻分类

    2020-05-01 15:46:41
    NLP实战新闻分类 1、数据 国内的新闻数据主要是两种:一种是新浪新闻(长新闻),共分为14类,一种是今日头条(短新闻),分为15类。 dataset可以通过paddlepaddle的hub直接下载。更多数据:...
  • 新闻分类:多分类问题 1、代码 import keras from keras.datasets import reuters (train_data,train_labels),(test_data,test_labels)=reuters.load_data(num_words=10000) len(train_labels) len(train_data) ...
  • 使用python实现的朴素贝叶斯算法新闻分类。希望有帮助。
  • 采用深度学习,cnn,rnn 两种方式对新闻类信息。进行分类预测。。。。仅供初学者练习使用
  • Python数据分析与机器学习-新闻分类任务 Python数据分析与机器学习-新闻分类任务
  • 常用新闻分类TAB选项卡js特效
  • 搜狗实验室新闻分类语料库,主要有10个分类,共50多万条记录 0 汽车 1 财经 2 IT 3 健康 4 体育 5 旅游 6 教育 7 招聘 8 文化 9 军事
  •  使用简数采集平台采集今日头条新闻资讯,非常简单,可以只输入新闻分类ID就可以搜索采集相应的新闻资讯文章。 使用步骤: 创建今日头条采集任务 今日头条采集任务配置 采集结果 附录(新闻分类ID) 1. 创建...
  • 记:新闻分类问题时多分类问题,与电影评论分类很类似又有一些差别,电影评论只有两个分类,而新闻分类有46个分类,所以在空间维度上有所增加,多分类问题的损失函数与二分类问题选择不同,最后一层使用的激活函数...
  • 格式为:category^theme^content三列,多个新闻分类,共1000条新闻。对应唐宇迪第12章新闻分类任务数项目。python读取格式: df_news_small = pd.read_csv('./data/data.txt',names=['category','theme','content'],...
  • @新闻分类大赛赛题分析 本文对天池新闻文本分类比赛进行赛题分析。 1 数据格式 训练集为csv格式文件,使用pandas读取前十行,结果如图。 import pandas as pd train_df = pd.read_csv(r'train_set.csv', sep='\t') ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,274
精华内容 3,309
关键字:

新闻分类