数据挖掘——自动摘要

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

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

  算法步骤:

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

 代码步骤:

#构建语料库与词频统计


####自动摘要的获取

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

 
filecontents = []
summarys = []
filepaths =[]
#遍历语料库,得到每篇文章的子语料库(按标点符号分割的短句)
for index, row in corpos.iterrows():
    filepath = row['filePath']
    filecontent = row['fileContent']
    #建立子语料库,以该文档的子句组成
    subcorpos = [filecontent] + re.split(r'[。?!\n]\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})
    

 

posted @ 2018-10-04 21:25  没有神保佑的瓶子  阅读(465)  评论(0编辑  收藏  举报