智能信息检索——NB算法的训练及分类过程实现

智能信息检索——NB算法的训练及分类过程实现

  • 1.实验目的
  • 2.实验任务与要求
  • 3.实验说明书
    • ⑴功能描述
    • ⑵概要设计
    • ⑶详细设计
    • ⑷代码实现
  • 4.实验成果
  • 5.程序调试过程

《信息检索导论》部分实验python实现汇总请进入此博客查看。

1.实验目的

通过实验,使学生掌握多项式NB文本分类方法。

2.实验任务与要求

文本分类是信息检索系统的关键技术,多项式NB文本分类算法是有监督的基于概率的学习方法,优势是速度快,精确率很高。本实验需要编程实现这个训练和应用NB分类器的算法。

3.实验说明书

⑴功能描述

用户输入训练集中的属于类的文档和不属于类的文档,以及文档的内容;测试文档的内容。系统计算并输出测试文档的属于类和不属于类的结果。

⑵概要设计

通过概率计算模块实现NB算法的训练及分类过程。

⑶详细设计

  • 总体流程图

智能信息检索——NB算法的训练及分类过程实现_第1张图片

  • 概率计算模块

智能信息检索——NB算法的训练及分类过程实现_第2张图片

⑷代码实现

  • 示例输入
d:document
c:class
请输入文档:Chinese Beijing Chinese
属于China类输入1,不属于输入01
要继续输入吗?[y|n]:y
请输入文档:Chinese Chinese Shanghai
属于China类输入1,不属于输入01
要继续输入吗?[y|n]:y
请输入文档:Chinese Macao
属于China类输入1,不属于输入01
要继续输入吗?[y|n]:y
请输入文档:Tokyo Japan Chinese
属于China类输入1,不属于输入00
要继续输入吗?[y|n]:n
请输入测试文档:Chinese Chinese Chinese Tokyo Japan
  • 主程序

程序中while下语句用于获取用户输入的训练文档,cn用于记录属于C类的训练文档个数,lcn记录训练文档总个数。testd 所在语句获取用户输入的测试文档。
for引导的循环用于计算概率,其中PctestdPc为属于C类的概率,FPctestdFPc为不属于C类的概率,Pc为总文档中属于C类文档的概率,FPc为不属于C类文档的概率。

cn, lcn, df = 0, 0, {1: [], 0: []}
while(1):
    d = input('请输入训练文档:').split(' ')
    c = eval(input('属于China类输入1,不属于输入0:'))
    if c == 1:
        cn += 1
    lcn += 1    
    df[c] = df[c] + d
    flag = input('要继续输入吗?[y|n]:')
    if flag == 'n':
        break

testd = input('请输入测试文档:').split()

#df = {1: ['Chinese', 'Beijing', 'Chinese', 'Chinese', 'Chinese', 'Shanghai', 'Chinese', 'Macao'], 0: ['Tokyo', 'Japan', 'Chinese']}
#testd = ['Chinese', 'Chinese', 'Chinese', 'Tokyo', 'Japan']

testdin = set(testd)
Pc = cn/lcn
FPc = 1 - Pc

Pctestd, FPctestd = 1, 1
lc, Flc, l = len(df[1]), len(df[0]), len(set(df[1] + df[0]))
tt, Ftt = '', ''
for i in testdin:
    mi = testd.count(i)
    Pctestd *= ((df[1].count(i) + 1)/(lc + l))**mi
    FPctestd *= ((df[0].count(i) + 1)/(Flc + l))**mi
 
Pctestd = round(Pctestd*Pc, 4)
FPctestd = round(FPctestd*FPc, 4)
flag = 'China' if Pctestd > FPctestd else '非China'
print('\n计算属于China的概率为{},不属于China类的概率为{},\n所以分类器将测试文档分到{}类。'.format(Pctestd, FPctestd, flag))   

4.实验成果

运行程序,根据提示进行输入,得到结果如下图。

智能信息检索——NB算法的训练及分类过程实现_第3张图片

5.程序调试过程

在程序调试过程中,预设训练文档与测试文档,得到结果如下图。

智能信息检索——NB算法的训练及分类过程实现_第4张图片

你可能感兴趣的:(智能信息检索)