zoukankan      html  css  js  c++  java
  • Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果

    Python 1行代码实现文本分类(实战笔记),含代码详细说明及运行结果


    一、详细说明及代码 tc.py

    =================================================================

    #coding=utf-8
    __author__ = 'huangzhi'
    
    #pip install textblob #需要安装
    #python -m textblob.download_corpora #需要安装
    
    from textblob.classifiers import NaiveBayesClassifier
    from textblob import TextBlob
    import pickle
    
    #训练数据
    train = [
        ('ACACIA 骑行 服 套装 男 抓绒 长袖 山  车 秋冬 自行车 服  装备 骑行 裤 长裤', '服装'),
        ('自行车 行车 货架 货架 单车 货架 自行 自行车 行车 装备', '自行车配件'),
        ('acacia  骑行 裤 长裤  夏季 骑行 服饰 透气 防晒 自行车 裤  春秋 防风 裤', '服装'),
        ('ACACIA 自行车  LED 尾灯 骑行 警示灯 鞍座 灯 坐垫 灯  山  车 配件  尾灯', '自行车配件'),
        ('秋冬 加厚 打底 底裤 黑色 弹力 紧身 女裤 铅笔 裤子', '服装'),
        ('自行车 把 套 副 把  人体工学 把 套  羊角 把 套 套装  骑行 装备 山  车 配件', '自行车配件'),
        ("ACACIA 自行车  LED 尾灯 山  车 警示灯 骑行 车尾灯 自行车 装备 配件", '自行车配件'),
        ('acacia 山  车 挡泥板 山  自行车 挡泥板 挡雨板 快 拆 加长 全包 挡泥 配件', '自行车配件'),
        ('彩宝莉  春秋季 睡衣 女 长袖 长裤 针织 棉 可爱 卡通 pink 家居服 套装', '服装'),
        ("男士 保暖 裤加绒 秋冬 棉裤 男 绒裤 加厚 男士 打 底裤 冬 紧身 秋裤 单件 毛裤", '服装'),
        ('可外 穿  夏季 情侣 睡衣 女  格子裙  纯棉 短袖 家居服 套装 男士 全棉 夏款', '服装'),
        ('自行车 码表 磁头  扁 辐条 圆 辐条 磁头  码表  山  车 测速器 磁铁 强力', '自行车配件')
    ]
    
    #测试用例
    test = [
        ('新款 纯棉 夏季 短袖 睡衣 蕾丝 可爱 爱家 家居 家居服 套装', '服装'),
        ('ACACIA 自行车 多功能 组合 工具 山  车 修车 工具 骑行 带 截连器 修车 套装', '自行车配件'),
        ("屏幕 自行车 码表 夜光 防水 温度 骑行 码表 有线  骑行 装备", '自行车配件'),
        ("秋冬 加厚 打底 底裤 黑色 弹力 紧身 女裤 铅笔 裤子", '服装'),
        ('秋季 新款 打底 底裤 蕾丝 仿皮 铅笔 长裤 裤子', '服装'),
        ("自行 自行车 行车 条形 彩色 支架 防盗 防盗锁 电动 电动车 动车 锁具 钢丝 骑行 行装 装备", '自行车配件')
    ]
    
    #训练
    cl = NaiveBayesClassifier(train)
    
    # 文本分类
    print(cl.classify("屏幕 自行车 码表 夜光 防水 温度 骑行 码表 有线  骑行 装备"))  # "自行车配件"
    print(cl.classify("男士 保暖 裤加绒 秋冬 棉裤 男 绒裤 加厚 男士 打 底裤 冬 紧身 秋裤 单件 毛裤"))   # "服装"
    
    # 段落分类
    blob = TextBlob("奶奶的 一大早 我的 自行车 坐垫 破了. 赶紧 叫 小明 穿上 他的 新款 打底裤. "
                    "小明 骑上 他的 自行车 帮我买 自行车 坐垫.", classifier=cl)
    
    print(blob.classify())
    
    for sentence in blob.sentences:
        print(sentence) #段落中的句子
        print(sentence.classify()) #句子分类
    
    # 测试用例的精度
    print("Accuracy: {0}".format(cl.accuracy(test)))
    #
    # 显示10条对比信息
    cl.show_informative_features(10)
    
    #模型保存
    f = open('D:/pyfenlei/Text_Classification/huangzhicl1.pickle', 'wb')
    pickle.dump(cl, f)
    f.close()
    
    #加载模型
    f = open('D:/pyfenlei/Text_Classification/huangzhicl1.pickle', 'rb')
    hzcl = pickle.load(f)
    f.close()
    
    #用加载的模型测试用例数据
    print("Accuracy: {0}".format(hzcl.accuracy(test)))
    =================================================================

    二、运行结果如下:

    D:ProgramsPythonPython36-64python.exe D:/pyfenlei/Text_Classification/tc1.py
    自行车配件
    服装
    自行车配件
    奶奶的 一大早 我的 自行车 坐垫 破了.
    自行车配件
    赶紧 叫 小明 穿上 他的 新款 打底裤.
    服装
    小明 骑上 他的 自行车 帮我买 自行车 坐垫.
    自行车配件
    Accuracy: 1.0
    Most Informative Features
                 contains(山) = False              服装 : 自行车配件  =      3.7 : 1.0
                 contains(车) = False              服装 : 自行车配件  =      3.7 : 1.0
                 contains(山) = True            自行车配件 : 服装     =      3.7 : 1.0
                 contains(车) = True            自行车配件 : 服装     =      3.7 : 1.0
               contains(自行车) = True            自行车配件 : 服装     =      2.6 : 1.0
                contains(配件) = False              服装 : 自行车配件  =      2.6 : 1.0
                contains(装备) = True            自行车配件 : 服装     =      2.3 : 1.0
                contains(套装) = True               服装 : 自行车配件  =      2.3 : 1.0
                contains(秋冬) = False           自行车配件 : 服装     =      1.9 : 1.0
                contains(长裤) = False           自行车配件 : 服装     =      1.9 : 1.0
    Accuracy: 1.0


    Process finished with exit code 0

    三、保存模型

    f = open('D:/pyfenlei/Text_Classification/huangzhicl1.pickle', 'wb')
    pickle.dump(cl, f)
    f.close()

    四、加载模型并用测试数据进行预测

    f = open('D:/pyfenlei/Text_Classification/huangzhicl1.pickle', 'rb')
    hzcl = pickle.load(f)
    f.close()
    
    #用加载的模型测试用例数据
    print("Accuracy: {0}".format(hzcl.accuracy(test)))


    本人原创,未经许可,可随意转载

  • 相关阅读:
    ExtJs之表单(form)
    tf.where
    kuiper流式计算完整实例演示
    centos下搭建kuiper以及kuiper-manager
    Centos搭建EMQX和EMQ-Dashboard(踩坑精华版)
    代码生成器
    [MIT新技术大会]Jeff Bezos把EC2、S3和土耳其机器人描述为亚马逊“11年来的大规模万维网计算”方面的结晶,强调把后台基础设施作为服务
    《商业周刊》封面文章《谷歌和云的智慧》,讲到谷歌的新战略是“把惊人的计算能力放到众人手里”
    C# 连接 Sqlserver2005 Analysis Service的总结
    POJ_1064 二分搜索
  • 原文地址:https://www.cnblogs.com/bdccloudy/p/7665208.html
Copyright © 2011-2022 走看看