朴素贝叶斯(四)示例:从个人广告中获取区域倾向
转载请注明作者和出处:https://blog.csdn.net/weixin_45814668
微信公众号:qiongjian0427
知乎:https://www.zhihu.com/people/qiongjian0427
Github代码获取:https://github.com/qiongjian/Machine-learning/
Python版本: Python3.x
流程
(1)收集数据:从RSS源收集内容,这里需要对RSS创建一个接口。
(2)准备数据:将文本文件解析成词条向量。
(3)分析数据:检查词条确保解析的正确性。
(4)训练算法:使用我们之间建立的trainNB0()函数。
(5)测试算法:观察错误率,确保分类器可用,可以修改切分程序,以降低错误率,提高分类结果。
(6)使用算法:构建一个完整的程序,封装所有内容,给定两个RSS源,该程序会显示最常用的公共词。
简易信息聚合(也叫聚合内容)是一种RSS基于XML标准,在互联网上被广泛采用的内容包装和投递协议。RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。
Craigslist是美国最火的。该网站上没有图片,只有密密麻麻的文字,标着各种生活信息,是个巨大无比的网上分类广告加BBS的组合。
这个例子是使用Craigslist上的广告,分别从美国的两个城市中选取一些人,通过分析这些人发布的征婚广告信息,来比较这两个城市的人们在广告用词上是否不同。
由于作者提供的RSS源链接不可访问了,这里改用其他的源。
收集数据:导入RSS源
在网址后面加上?format=rss,就可以得到该网页的RSS文件了。
from numpy import *
import feedparser
import feedparser
ny = feedparser.parse('https://newyork.craigslist.org/d/rooms-shares/search/roo?format=rss')
print (len(ny['entries']))
25条。
接下来构建一个类似于spamTest()的函数对测试过程自动化。代码如下:
import random
from numpy import *
import feedparser
import re
import operator
import numpy as np
def calcMostFreq(vocabList, fullText):
import operator
freqDict = {
}
for token in vocabList:
freqDict[token] = fullText.count(token)
sortedFreq = sorted(freqDict.items(), key=operator.itemgetter(1), reverse=True)
return sortedFreq[:30]#返回排序最高的30词
def localWords(feed1,feed0):
import feedparser
docList=[]
classList = []
fullText = []
minLen = min(len(feed1['entries']), len(feed0['entries'