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中的过滤器来提取特征了。


  • 相关阅读:
    硬盘的结构和介绍,硬盘MBR详细介绍(超详细彩图)
    websocket协议学习
    Qt4可以使用trUtf8函数,其内容可以是中文,也可以是F硬编码
    QString转换为LPTSTR(使用了reinterpret_cast,真是叹为观止,但是也开阔了思路),三篇文章合起来的各种转换方法
    系统高可用
    Visual Studio
    管道是如何建立起来的?
    CLR和.Net对象
    任务调度
    路由与控制器
  • 原文地址:https://www.cnblogs.com/rav009/p/5131105.html
Copyright © 2011-2022 走看看