新闻分类
当前位置:首页 > 数据分析
新闻分类

蝈蝈

2022/7/11 7:58:18

基于贝叶斯的文本分类任务


【任务】

  对给定的新闻进行任务分类,根据新闻的内容来判断它属于哪一个类别,科技?教育?还是健康?
  给出的可选分类为十类:['体育', '文化', '健康', '财经', '汽车', '时尚', '娱乐', '科技', '教育', '军事']   【处理步骤】

我们的处理过程分为以下几步:

    新闻数据集处理:爬取的新闻数据,需要我们对文本数据进行很多预处理才能使用

    文本分词:通常我们处理的都是词而不是一篇文章

    去停用词:停用词会对结果产生不好的影响,所以一定得把他们去剔除掉

    构建文本特征:如何构建合适特征是自然语言处理中最重要的一步,这俩我们选择两种方案来进行对比

    贝叶斯分类:基于贝叶斯算法来完成最终的分类任务  
    #### 数据源:http://www.sogou.com/labs/resource/ca.php 


一、数据处理
    安装、导入我们所需要的库:jieba分词;盘符路径操作:os;数据处理:pandas、numpy。

In [1]: import pandas as pd

   ...: import numpy as np

   ...: import jieba #pip install jieba

   ...: import os

   ...: print(os.getcwd()) #print(os.path.abspath('.'))#查看当前工作路径

C:\Users\yubg


二、导入数据
    先来看一下数据长什么样子吧。把需要导入的数据放到当前的路径下os.getcwd()。
In [2]: df_news = pd.read_table(r'e:\0海医\0教学\python数据分析基础\素材\新闻文本分类\data\data.txt',


   ...: names=['classify','topic','URL','content'],encoding='utf-8')

   ...: df_news = df_news.dropna() #删除空值的行

   ...: df_news.tail()

Out[2]:

classify ... content

4995 时尚 ... 随着天气逐渐炎热,补水变得日益重要。据美国《跑步世界》杂志报道,喝水并不是为身体补充水分的唯...

4996 时尚 ... 我其实不想说这些话刺激他,他也是不得已。可是,我又该怎样说,怎样做?我只能走,离开这个伤心地...

4997 时尚 ... 58岁刘晓庆最新嫩照O衷诘牧跸庆绝对看不出她已经58岁了,她绝对可以秒杀刘亦菲、范冰冰这类美...

4998 时尚 ... 导语:做了爸爸就是一种幸福,无论是领养还是亲生,更何况出现在影视剧中。时尚圈永远是需要领军人...

4999 时尚 ... 全球最美女人合成图::国整形外科教授李承哲,在国际学术杂志美容整形外科学会学报发表了考虑种族...


[5 rows x 4 columns]


In [3]: df_news.columns #查数据的属性,共4列

Out[3]: Index(['classify', 'topic', 'URL', 'content'], dtype='object')


In [4]: df_news.iloc[4995,[3]] #查看索引编号为4995列索引为3的行列交叉位置上内容,即content中的内容

Out[4]:

content 随着天气逐渐炎热,补水变得日益重要。据美国《跑步世界》杂志报道,喝水并不是为身体补充水分的唯...

Name: 4995, dtype: object


In [5]: df_news.iat[4995,3] #同上。查看索引编号为4995的content中的内容

Out[5]: '随着天气逐渐炎热,补水变得日益重要。据美国《跑步世界》杂志报道,喝水并不是为身体补充水分的唯一方式,各种瓜果蔬菜其实也是营养丰富的补水剂。:电解质的水果:哈密瓜、桃子、草莓。这几种水果含水量丰富,而且钾元素含量高,能调节身体的电解质平衡,稳定心率,促进血液循环。:维生素C的水果:西瓜、猕猴桃、柑橘。维生素C能保持关节和软骨的灵活度,还能阻挡紫外线、污染对皮肤造成的伤害,预防晒伤。:抗癌物质的水果:西红柿、西兰花。西红柿所含的番茄红素能够降低肺癌、胃癌、前列腺癌、乳腺癌等一系列癌症的发病率,而西兰花90%的成分都是水,它所含的异硫氰酸盐也具有防癌效果。:修复因子的水果:菠萝、樱桃。研究表明,菠萝所含的菠萝蛋白酶能减少感染,加速肌肉的自我修复;樱桃所含的花青素和褪黑素同样能抑制炎症的发生。:益生菌的食物:酸奶。富含益生菌的食物可以预防呼吸道感染疾病,同时酸奶蛋白质丰富,有助于增强免疫力。:消化液的食物:豆类。一杯煮熟的豆子含有半杯水分,两个鸡蛋那么多的蛋白质和大量的膳食纤维。吃豆类食品能促进胃肠消化,且具有降脂功效。'


In [6]: df_news.shape

Out[6]: (5000, 4)


In [7]: content = df_news.content.values.tolist() #将每一篇文章转换成一个list。df_news.content.tolist()

   ...: print (content[1000])

阿里巴巴集团昨日宣布,将在集团管理层面设立首席数据官岗位(Chief Data Officer),阿里巴巴B2B公司CEO陆兆禧将会出任上述职务,向集团CEO马云直接汇报。>菹ぃ和6月初的首席风险官职务任命相同,首席数据官亦为阿里巴巴集团在完成与雅虎股权谈判,推进“one company”目标后,在集团决策层面新增的管理岗位。0⒗锛团昨日表示,“变成一家真正意义上的数据公司”已是战略共识。记者刘夏


In [8]: print('content是一个list,共有元素',len(content),'个,也就是有文章这么多篇,\n content类型为',type(content))

content是一个list,共有元素 5000 个,也就是有文章这么多篇,

content类型为 <class 'list'>


In [9]: content_S = [] #接收每一篇文章的分词后列表作为其元素

   ...: for i in content:

   ...: doc_words = jieba.lcut(i) #对每一篇文章进行分词

   ...: if len(doc_words) > 1 and doc_words != '\r\n': #换行符

   ...: content_S.append(doc_words) #保存分词的结果

Building prefix dict from the default dictionary ...

Dumping model to file cache C:\Users\yubg\AppData\Local\Temp\jieba.cache

Loading model cost 0.797 seconds.

Prefix dict has been built successfully.


In [10]: content_S[0][:5]

Out[10]: ['经销商', '\u3000', '电话', '\u3000', '试驾']


In [11]:

    ...: df_content=pd.DataFrame({'content_S':content_S}) #专门展示分词后的结果

    ...: print(len(df_content))

    ...: df_content.head()

5000

Out[11]:

content_S

0 [经销商,  , 电话,  , 试驾, /, 订车, U, 憬, 杭州, 滨江区, 江陵, ...

1 [呼叫, 热线,  , 4, 0, 0, 8, -, 1, 0, 0, -, 3, 0, 0...

2 [M, I, N, I, 品牌, 在, 二月, 曾经, 公布, 了, 最新, 的, M, I...

3 [清仓, 大, 甩卖, !, 一汽, 夏利, N, 5, 、, 威志, V, 2, 低至, ...

4 [在, 今年, 3, 月, 的, 日内瓦, 车展, 上, ,, 我们, 见到, 了, 高尔夫...


还可以输入200个字

蝈蝈派【海南省教改项目(Hnjg2022-80)支持】 网站版权所有

Python remained the copyright of our website

吉公网安备 22020402000437号

备案号:吉ICP备2020005062号-2

关注QQ群

了解Python

实时动态