PyMining - 基于Python的数据挖掘平台来进行文本分类

http://code.google.com/p/python-data-mining-platform/

 

里面有介绍一些关于机器学习的一些算法。

 

从搜狗实验室下载语料

http://www.sogou.com/labs/dl/c.html

注:这些都是分好类别的 http://code.google.com/p/python-data-mining-platform/wiki/Additional_Tools

解压到d盘。

 

检出pymining代码 http://python-data-mining-platform.googlecode.com/svn/trunk/

 

将整个代码复制到一个python的项目。

 


将搜狗的语料转换成pymining的语料格式。

tools/sogou_importer.py

 

 

#encoding=utf-8

import dircache
import sys
import os

if __name__ == "__main__":
#    if len(sys.argv) <> 3:
#        print "python sogou_importer.py sogou_path output_file_path"
#        sys.exit()
    
    dirNameDict = { \
                   "C000008":0, \
                   "C000010":1, \
                   "C000013":2, \
                   "C000014":3, \
                   "C000016":4, \
                   "C000020":5, \
                   "C000022":6, \
                   "C000023":7, \
                   "C000024":8, \
                  }
     
#    outputPath = sys.argv[2]
#    inputDir = sys.argv[1]
    outputPath = "sougou_train.txt"
    inputDir = "D:\Reduced";
    ofs = open(outputPath, "w")

    if inputDir[len(inputDir) - 1] != "/":
        inputDir += "/"

    for dirName in dirNameDict.keys():
        newDir = inputDir + dirName + "/"
        if (not os.path.exists(newDir)):
            continue
        fileList = dircache.listdir(newDir)
        for fileName in fileList:
            filePath = newDir + fileName
            if (not os.path.exists(filePath)):
                continue
            ifs = open(filePath, "r")
            fileContent = ifs.read()
            fileContent = fileContent.decode("gb18030", "ignore")
            fileContent = fileContent.replace("\n", " ")
            fileContent = fileContent.replace("\t", " ")
            ofs.write(fileContent.encode("utf-8") + "\t" + str(dirNameDict[dirName]) + "\n")
            ifs.close()

    ofs.close()
 

一共8个类别,自行判断每个文件夹的新闻类别

 

将格式化后的语料复制到项目的example/data/目录下。在example目录下新建mining目录

 

 

开始测试分类的准确性:

在example/data/sougou_train.txt中复制一个语料保存到example/data/sougou_test.txt中(后面带一个数字,这个数字代表的一个新闻的类别)。格式要与sougou_train.txt的格式保持一致。

运行 example/naive_bayes_only_test.py

 

 

#coding: utf8
import sys, os
sys.path.append(os.path.join(os.getcwd(), '../'))
from pymining.math.matrix import Matrix
from pymining.math.text2matrix import Text2Matrix
from pymining.nlp.segmenter import Segmenter
from pymining.common.global_info import GlobalInfo
from pymining.common.configuration import Configuration
from pymining.preprocessor.chisquare_filter import ChiSquareFilter
from pymining.classifier.naive_bayes import NaiveBayes

if __name__ == "__main__":
    config = Configuration.FromFile("conf/test.xml")
    GlobalInfo.Init(config, "__global__")
    txt2mat = Text2Matrix(config, "__matrix__")
    [trainx, trainy] = txt2mat.CreateTrainMatrix("data/sougou_train.txt")
    chiFilter = ChiSquareFilter(config, "__filter__")
    chiFilter.TrainFilter(trainx, trainy)
    [trainx, trainy] = chiFilter.MatrixFilter(trainx, trainy)

    nbModel = NaiveBayes(config, "naive_bayes")
    nbModel.Train(trainx, trainy)

    [testx, testy] = txt2mat.CreatePredictMatrix("data/sougou_test.txt")
    [testx, testy] = chiFilter.MatrixFilter(testx, testy)
    [resultY, precision] = nbModel.Test(testx, testy)
    
    print precision

    

 

 

 

一会就输出准确率了 

 


 

example/mining目录下会生成一些文件,这是pymining的一些学习模型,分类的时候可以加载这些文件来判别新的新闻来分类,或者直接在线的学习不加载这些文件。

参考http://code.google.com/p/python-data-mining-platform/wiki/Tutorial 

 

 

 

比如ClassifiterMatrix类初始化的时候,将读取标签为matrix的信息(某些模块如果不需要读取某种标签的信息,这个标签下面将是无内容的,具体请见后面的xml)。
初始化的时候,需要指定最后一个布尔参数(isFromFile),表示是否这个模块从配置类中指定的文件中载入得到。
一般在训练的时候,指定这个参数为False,而在单独测试的时候,需要指定这个参数为True,因为需要从训练的时候生成的文件中载入训练的模型才能够进行测试。
 

开始分类:

我们选择不加载学习模型的文件来分类,从百度的新闻中找一个新闻。

 

运行example/naive_bayes_train_test_bysample.py

 

#encoding=utf8
import sys, os
sys.path.append(os.path.join(os.getcwd(), '../'))

from pymining.math.matrix import Matrix
from pymining.math.text2matrix import Text2Matrix
from pymining.nlp.segmenter import Segmenter
from pymining.common.global_info import GlobalInfo
from pymining.common.configuration import Configuration
from pymining.preprocessor.chisquare_filter import ChiSquareFilter
from pymining.classifier.naive_bayes import NaiveBayes


if __name__ == "__main__":
    config = Configuration.FromFile("conf/test.xml")
    GlobalInfo.Init(config, "__global__")
    txt2mat = Text2Matrix(config, "__matrix__")
    [trainx, trainy] = txt2mat.CreateTrainMatrix("data/sougou_train.txt")
    chiFilter = ChiSquareFilter(config, "__filter__")
    chiFilter.TrainFilter(trainx, trainy)

    nbModel = NaiveBayes(config, "naive_bayes")
    nbModel.Train(trainx, trainy)
    
    inputStr = "朝鲜人民军总参谋长李英浩被解职后,美韩不断猜测朝鲜内幕。据环球网报道,韩国《京乡新闻》22日分析称,“炸铜像事件可能成为朝鲜半岛紧张的新火种”,甚至揣测朝鲜可能借此牵制美国并实施第三次核试验。据京华时报报道,7月19日,朝方当天在首都平壤召开记者会,一名嫌疑人自称受韩国和美国情报机构指使,企图炸毁朝鲜建国领袖金日成的铜像。朝鲜外务省发言人20日表示,由于美国不改变其对朝敌视政策,朝鲜“不得不全面重新考虑核问题”。"

    [cols, vals] = txt2mat.CreatePredictSample(inputStr.decode("utf-8"))
    [cols, vals] = chiFilter.SampleFilter(cols, vals)
    probTuple = nbModel.TestSample(cols, vals)
    print probTuple
 

 

 

输出这个新闻的每个类别的相似概率。

 

 

朝鲜人民军总参谋长李英浩被解职后,美韩不断猜测朝鲜内幕。
据环球网报道,韩国《京乡新闻》22日分析称,“炸铜像事件可能成为朝鲜半岛紧张的新火种”,甚至揣测朝鲜可能借此牵制美国并实施第三次核试验。
据京华时报报道,7月19日,朝方当天在首都平壤召开记者会,一名嫌疑人自称受韩国和美国情报机构指使,企图炸毁朝鲜建国领袖金日成的铜像。
朝鲜外务省发言人20日表示,由于美国不改变其对朝敌视政策,朝鲜“不得不全面重新考虑核问题”。
((0, 3.9413063433550935e-60), (1, 1.5063156437023602e-39), (2, 6.35241774643204e-48), (3, 2.2260167379491118e-68), (4, 7.13553884486322e-30), (5, 7.708008674579432e-40), (6, 1.5767993409024485e-48), (7, 0.06578001159339009), (8, 0.9342199884066099))

 

(8, 0.9342199884066099)从这个可以看出,这个新闻属于我们的新闻类别中的第8类。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
《RPA开发 从入门到实战》-基于Python是一本关于自动化过程机器人 (Robotic Process Automation, RPA) 开发的书籍。RPA 是指利用机器人软件来处理重复性和繁重的任务,提高工作效率的技术。本书以Python作为开发语言,深入介绍了RPA的基本概念、原理和工具。 首先,书中从RPA的基础知识开始讲解,介绍了RPA在日常工作中的应用场景以及其重要性。然后,详细介绍了Python编程语言的基础知识和相关工具。读者可以学习Python的基本语法和编程概念,并了解如何使用Python进行RPA开发。通过学习这些内容,读者可以了解如何使用Python来创建一个自动化过程机器人。 接下来,书中介绍了一些常用的Python库和框架,如Selenium和PyAutoGUI。这些工具可以帮助开发人员在RPA中进行自动化操作。读者可以学习如何使用这些工具来模拟用户的操作和自动执行任务。 此外,书中还介绍了如何处理不同类型的数据,如Excel、数据库和API等。通过这些内容,读者可以学习如何使用Python来处理和分析数据,并将其与RPA结合起来以实现自动化。 最后,书中提供了一些实战案例,通过这些案例,读者可以学习到如何使用Python和RPA来解决实际问题。案例涵盖了各种领域,如财务、销售和客户服务等。通过实际操作,读者可以加深对RPA开发和Python编程的理解和应用能力。 总之,《RPA开发 从入门到实战》-基于Python是一本很好的学习RPA开发和Python编程的指南。它适用于想要了解RPA和Python的初学者,也适用于已经有一定经验的开发人员。读者通过学习本书,可以掌握RPA开发的基本原理和技术,进一步提高工作效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值