栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

第四章 基于概率论的分类方法——朴素贝叶斯

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第四章 基于概率论的分类方法——朴素贝叶斯

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]  # 1 代表侮辱性文字, 0 代表正常言论
    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)  # 创建一个其中所含元素都为0的向量
    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

# 测试
# listOPosts, listClasses = bayes.loadDataSet()
# myVocabList = bayes.createVocabList(listOPosts)
# myVocabList
# bayes.setOfWords2Vec(myVocabList,listOPosts[0])
# bayes.setOfWords2Vec(myVocabList,listOPosts[3])
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/313786.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号