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


  • 相关阅读:
    大一秋学期记录
    韦尼克区受损者如何说话
    暑假训练idea汇总
    高三树洞
    OI回忆录
    NOI2018游记
    收藏
    PKUSC2018游记
    CTSC/APIO2018游记
    Caused by: org.xml.sax.SAXParseException: 外部 DTD: 无法读取外部 DTD 'mybatis-generator-config_1_0.dtd'
  • 原文地址:https://www.cnblogs.com/rav009/p/5131105.html
Copyright © 2011-2022 走看看