zoukankan      html  css  js  c++  java
  • 数据挖掘——自动摘要

    摘要:是全面准确地反应某一文献中心内容的简单连贯的短文。

    同样使用余弦相似度获取自动摘要。

      算法步骤:

    • 获取需要摘要的文章
    • 对该文章进行词频统计
    • 对该文章进行分句(根据中文的标点符号,一般采用‘。’、‘?’、‘!’等进行分句)
    • 计算分句与文章之间的余弦相似度
    • 获取相似度最高的分据作为文章摘要。

     代码步骤:

    #构建语料库与词频统计


    ####自动摘要的获取

    #先创建需要的3个数组:文章内容、摘要、文件路径

     
    filecontents = []
    summarys = []
    filepaths =[]
    #遍历语料库,得到每篇文章的子语料库(按标点符号分割的短句)
    for index, row in corpos.iterrows():
        filepath = row['filePath']
        filecontent = row['fileContent']
        #建立子语料库,以该文档的子句组成
        subcorpos = [filecontent] + re.split(r'[。?! ]s*', filecontent)   
    #根据子语料库中的子句进行分词,得到每个子句的分词集合
        segments = []
        suitcorpos = []
        for a in subcorpos:
            segs = jieba.cut(a)  
            segment = ' '.join(segs)
            if len(segment.strip())>10:  #只选区长度大于10 的短句
                segments.append(segment)
                suitcorpos.append(a)
    #将子句的分词集合向量化
        textVector = countVectorizer.fit_transform(segments)
    #根据余弦值计算距离
        distance_matrix = pairwise_distances(textVector,metric='cosine')
    #按距离进行排序
        sort = np.argsort(distance_matrix,axis=1)
        summary = pd.Index(suitcorpos)[sort[0]].values[1] #获得距离最近的子句作为摘要
     
        summarys.append(summary)  
        filepaths.append(filepath)
        filecontents.append(filecontent)
     

    最后得到含有文章摘要的数据框

    summaryDF = pd.DataFrame({
            '文件路径':filepaths,
                '文件内容':filecontents,
                    '摘要':summarys})
        
  • 相关阅读:
    编译不通过:提示XXXX不是类或命名空间名 的解决办法
    nginx应用总结(2)--突破高并发的性能优化
    nginx应用总结(1)--基础认识和应用配置
    springboot内置tomcat验证授权回调页面域名
    MySQL实现类似Oracle中的nextval和currval
    Notepad++中删除连续的任意n行
    Spring Boot系列二 Spring @Async异步线程池用法总结
    Spring线程池配置
    Spring异步方法注解 @Async
    异步任务spring @Async注解源码解析
  • 原文地址:https://www.cnblogs.com/rix-yb/p/9721376.html
Copyright © 2011-2022 走看看