4.5 使用Python进行文本分类
4.5.1准备数据:从文本中构建词向量
程序清单4-1 词表到向量的转换函数
import bayes
from numpy import *
def loadDataSet():
"""
描述:创建一些实验样本
输出:第一个变量,进行词条切分后的文档集合;
第二个变量,类别标签的集合
"""
postingList = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'],
['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'],
['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'],
['stop', 'posting', 'stupid', 'worthless', 'garbage'],
['mr', 'licks', 'ate', 'my', 'steak',
'how', 'to', 'stop', 'him'],
['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']]
classVec = [0, 1, 0, 1, 0, 1]
return postingList, classVec
def createVocabList(dataSet):
"""
创建一个包含在所有文档中出现的不重复词的列表
输出:返回一个不重复的词表
"""
vocabSet = set([])
for document in dataSet:
vocabSet = vocabSet | set(document)
return list(vocabSet)
def setOfWords2Vec(vocabList, inputSet):
"""
输入:词汇表、某个文档
输出:文档向量,向量中的每一元素为0或1,代表词汇表中的单词在输入文档中是否出现
"""
returnVec = [0]*len(vocabList)
for word in inputSet:
if word in vocabList:
returnVec[vocabList.index(word)] = 1
else:
print("the word: %s is not in my Vocabulary!" % word)
return returnVec
4.5.2 训练算法:从词向量计算概率
程序清单4-2 朴素贝叶斯分类器训练函数
4.5.3 测试算法:根据实际情况修改分类器
程序清单4-3 朴素贝叶斯分类函数
4.5.4 准备数据:文档词袋模型
程序清单4-4 朴素贝叶斯词袋模型
4.6 示例:使用朴素贝叶斯过滤垃圾邮件
4.7 示例:使用朴素贝叶斯分类器从个人广告中获取区域倾向
|