Python 中的文本分类

介绍

词袋

在上一章中,我们已经推导出了计算文档d属于类别c的概率的公式,记为P(c|d)。

我们已将 P(c|d) 的标准公式(如许多论文1 中使用的那样)转换为数值稳定的形式。

我们使用朴素贝叶斯分类器在 Python 中实现。朴素贝叶斯方法的正式介绍可以在我们的前一章中找到。

Python 是文本分类的理想选择,因为它是强大的字符串类和强大的方法。此外,Python 的正则表达式模块 re 为用户提供了超越其他编程语言的工具。

唯一的缺点可能是这个 Python 实现没有针对效率进行调整。

上一章的Python实现

文件表示

基于词袋模型的文档表示如下图所示:

文件表示

需要进口

我们的实现需要正则表达式模块 re 和 os 模块:

导入 
导入 操作系统

我们将在我们的实现中使用字典章节练习 1 中的函数 dict_merge_sum :

def  dict_merge_sum ( d1 ,  d2 ): 
    """ 将带有数值和
    可能不相交的键的
两个字典 d1 和 d2合并,如果    两个值中都存在,
则将这些值相加,否则将缺失值视为    0"""
    
    返回 {  k :  d1 得到( k ,  0 )  +  d2 get ( k ,  0 )  for  k  in  set ( d1 )  |  设置(d2 ) }

d1  =  dict ( a = 4 ,  b = 5 ,  d = 8 ) 
d2  =  dict ( a = 1 ,  d = 10 ,  e = 9 )

dict_merge_sum ( d1 ,  d2 )

输出:

{'e':9,'d':18,'a':5,'b':5}

词袋类

class  BagOfWords ( object ): 
    """ 实现一个词袋,词与它们
    在“文档”中的使用频率
相对应,    Document 类、Category 类和 Pool 类使用。"""
    
    def  __init__ ( self ): 
        self __number_of_words  =  0 
        self __bag_of_words  =  {}
        
        
    def  __add__ ( self ,  other ): 
        """ 重载 "+" 运算符以连接两个 BagOfWords """
        
        erg  =  BagOfWords ()  
        erg __bag_of_words  =  dict_merge_sum ( self . __bag_of_words ,  
                                            other . __bag_of_words )
        返回 erg
        
    def  add_word ( self , word ): 
        """ 在字典 __bag_of_words""" 
        self 中添加了一个单词__number_of_words  +=  1
        如果 单词  self 中__bag_of_words :
            自我__bag_of_words [ word ]  +=  1 
        else 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值