使用贝叶斯算法完成新闻分类任务

文本分析:新闻分类任务

停用词(符号,字符都有):1.语料中大量出现 2.没啥作用

Tf-idf:关键词提取
《中国的蜜蜂养殖》:进行词频(Term Frequency,缩写为TF)统计
出现次数最多的词是----“的” “是” “在”----这一类最常用的词(停用词)
“中国” “蜜蜂” “养殖”这三个词出现的频率一样多,重要性一样?
"中国"是很常见的词,相对而言,“蜜蜂”和“养殖”不那么常见

“逆文档频率” (Inverse Document Frequent,缩写为IDF)
如果这个词比较少见,但它在该文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们需要的关键词

词频(TF) = 某个词在文章中出现的次数 / 文章总的词数

逆文档频率(IDF) = log(语料库的文档总数 / 包含该词的文档数 + 1)

TF-IDF = 词频(TF) X 逆文档频率(IDF)

相似度
句子A:我喜欢看电视,不喜欢看电影。
句子B:我不喜欢看电视,也不喜欢看电影。

分词:
句子A:我/喜欢/看/电视,不/喜欢/看/电影。
句子B:我/不/喜欢/看/电视,也/不/喜欢/看/电影。

语料库:我,喜欢,看,电视,电影,不,也。

词频:
句子A:我1,喜欢2,看2,电视1,电影1,不1,也0
句子B:我1,喜欢2,看2,电视1,电影1,不2,也1

词频向量:
句子A:[1,2,2,1,1,1,0]
句子B:[1,2,2,1,1,2,1]

根据两个向量求出余弦值

下面是代码实例,使用结巴分词器进行分词

In[1]:import pandas as pd
	  import jieba	
In[2]:df_news = pd.read_table('val.txt', names=['category', 'theme', 'URL', 'content'], encoding='utf-8')
	  df_news.dropna()
	  df_news.head()
# 使用结吧分词器分词
In[3]:content = df_news.content.values.tolist()
      # 将数据转换为列表形式
      print(content[1000])
In[4]:content_S = []
	  for line in content:
	      current_segment = jieba.lcut(line)
	      if len(current_segment) > 1 and current_segment != '\r\n':
	          content_S.append(current_segment)
	          # 每个分词器结果都是一个列表
In[5]:content_S[1000]
In[6]:df_content = pd.DataFrame({
   'content_S':content_S})
	  df_content.head()
	  stopwords =  pd.read_csv('stopwords.txt', index_col=False, sep='\t', quoting=3, names=['stopwords'], encoding='utf-8')
	  stopwords.head(
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值