北邮数据挖掘与数据仓库——文本分类实验(一)
实验要求:收集10类文本,每类文本包含100000,总计100万条数据,利用朴素贝叶斯或SVM进行文本分类。
- 收集数据(爬虫)
- 利用中科院分词工具pynpir分词
- 利用sklearn计算单词的tf-idf
- 利用朴素贝叶斯进行文本分类
收集数据(爬虫)
由于新闻类的实验数据比较容易收集,我们就从各大新闻网站如新浪,中国新闻网等爬取了十类文本数据,分别是军事、汽车、金融、教育、游戏、健康、IT、体育、娱乐、时尚十类新闻文章,爬取的每一类数据多余10万,因为我们自己利用scrapy框架写的爬虫程序执行效率比较差,且有的新闻文章正文内容比较有限,分词后不能确定是否还有数据保留下来。
以下是爬虫代码:
-------items.py,
对每一类新闻定义了一个类,爬取的数据包括标题,URL,以及正文内容。
# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html
import scrapy
class SportsItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
content = scrapy.Field()
pass
class EconomyItem(scrapy.Item):
title = scrapy.Field()
link = scrapy.Field()
content = scrapy.Field()
pass
class PoliItem(scrapy.Item):
No = scrapy.Field()
title = scrapy.Field()
link = scrapy.Field()
content = scrapy.Field()
class CultureItem(scrapy.Item):
No = scrapy.Field()
title = scrapy.Field()
link = scrapy.Field()
content = scrapy.Field()
class EduItem(scrapy.Item):
No = scrapy.Field()
title = scrapy.Field()
link = scrapy.Field()
content = scrapy.Field()
class ArmyItem(scrapy.Item):
No = scrapy.Field()
title = scrapy.Field()
link = scrapy.Field()
content = scrapy.Field()
class SciItem(scrapy.Item):
No = scrapy.Field()
title = s