4-4 朴素贝叶斯词袋模型

在之前的案例中,使用的是如下朴素贝叶斯的词集模型:

def setWordsToVec(vocabList, inputSet):
    returnVec = [0] * len(vocabList)  # 创建一个其中所含元素都为0的向量
    for word in inputSet:  # 遍历每个词条
        if word in vocabList:  # 如果词条存在于词汇表中,则置1
            returnVec[vocabList.index(word)] = 1
        else:  # 不会出现如下情况
            print("the word: %s is not in my Vocabulary!" % word)
    return returnVec  # 返回文档向量

词袋模型

        若一个词在文档中出现不止一次,这可能意味着包含该词是否出现在文档中所不能表达的某种信息,这种方法称为词袋模型。

 

        下面是基于词袋模型的朴素贝叶斯代码,唯一与上面代码不同的是每遇到一个单词时,它会增加词向量中的对应值,而不是将数值设为1。

def setWordsToVecBag(vocabList, inputSet):
    returnVec = [0] * len(vocabList)  # 创建一个其中所含元素都为0的向量
    for word in inputSet:  # 遍历每个词条
        if word in vocabList:  # 如果词条存在于词汇表中,则置1
            returnVec[vocabList.index(word)] += 1
    return returnVec  # 返回文档向量

 

更多推荐