zoukankan      html  css  js  c++  java
  • 从WekaWiki上的一个文本聚类的示例开始(1)

    WekaWiki 上有一个文本聚类的示例,简述了使用 weka 进行文本聚类的过程,本系列文章将使用其中的text_example 演示一遍 文本挖掘从 预处理 到 特征提取 再到挖掘的全过程。

    下载完 text_example 完后,解压,其中有3个文件夹,分别为class1,class2,class3,每个文件夹中各有数篇文章,这就是分类好的样本。class1,class2,class3就是类别。在示例中,所有的文本都是HTML网页,所以第一步就是将网页中的HTML标签去掉。

    下面这段代码使用了 BeautifulSoup 和 正则表达式来从网页中提取数据,其中正则表达式的部分可以参见我的另一篇博文:http://blog.csdn.net/rav009/article/details/12888027。而 BeautifulSoup 的文档在:http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html

    #py2.7
    #coding:utf-8
    
    
    import re
    import os
    import chardet
    from BeautifulSoup import BeautifulSoup as bs, Comment
    
    
    def BsHandler(str):
        '''
        用BeautifulSoup提取内容
        '''
        soup=bs(str)
        comments = soup.findAll(text=lambda text : isinstance(text, Comment))
        [comment.extract() for comment in comments]
        scripts=soup.body.findAll('script')
        for script in scripts:
            script.extract()
        styles = soup.body.findAll('style')
        for style in styles:
            style.extract()
        rs=' '.join(soup.body.findAll(text=True))
        return rs
    
    
    
    
    
    
    def HtmlCharEntityHandler(htmltext):
        '''
        过滤html的保留符号,比如 
        '''
        htmlentity=re.compile('&#?w+;?')
        return htmlentity.sub(' ', htmltext)
    
    
    
    
    def Handler(str):
        rs= HtmlCharEntityHandler(BsHandler(str))
        fuhao=re.compile('[\r\n[]()|]')
        return fuhao.sub(' ', rs)
    
    
    if __name__=='__main__':
        path='E:\forshare\text_example'
        for root,dirs,files in os.walk(path):
            for file in files:
                if file.endswith('.htm'):
                    fname=root+os.path.sep+file
                    f=open(fname)
                    stream=f.read()
                    f.close()
                    encoding=chardet.detect(stream)['encoding']
                    htmlstr=stream.decode(encoding)
                    rs=Handler(htmlstr)
                    f=open(fname+'.txt','w')
                    f.write(rs.encode('utf-8'))
                    f.close()
    
    
    

    通过这段代码完成了对这些 htm 文件的预处理,接下来就轮到 WEKA中的过滤器来提取特征了。


  • 相关阅读:
    C#快速生成数据数组
    PHP访问Oracle数据库
    C# 监听HTTP请求
    三维重建基础
    三维重建技术概述
    python+OpenCV 特征点检测
    windows10,redhat6.5下python3.5.2使用cx_Oracle链接oracle
    《读书报告 -- Elasticsearch入门 》-- 安装以及简单使用(1)
    2016年简直一晃而过
    windows下python3.5使用pip离线安装whl包
  • 原文地址:https://www.cnblogs.com/rav009/p/5131105.html
Copyright © 2011-2022 走看看