textrank“批量”提取摘要

目前,已有提取单篇txt摘要的代码,不知道怎么分别提取多篇txt的摘要(所有txt都在一个文件夹里)

import sys 
from imp import reload

try:
    reload(sys)
    sys.setdefaultencoding('utf-8')
except:
    pass
 
import codecs
from textrank4zh import TextRank4Keyword, TextRank4Sentence

file = r'/Users/xiongying/Desktop/有关农业经济的几个问题_许涤新.txt'
 
# 打开并读取文本文件
 
text = codecs.open(file, 'r', 'utf-8').read()

 
# 创建分词类的实例
 
tr4w = TextRank4Keyword()
 
# 对文本进行分析,设定窗口大小为2,并将英文单词小写
 
tr4w.analyze(text=text, lower=True, window=2)

"""输出"""
 
print('关键词为:')
 
# 从关键词列表中获取前20个关键词
 
for item in tr4w.get_keywords(num=20, word_min_len=1):
    print(item.word, item.weight)
    print('\n')
    print('关键短语为:')
# 从关键短语列表中获取关键短语
 
for phrase in tr4w.get_keyphrases(keywords_num=20, min_occur_num=2):
    print(phrase)
    print('\n')
# 创建分句类的实例
 
tr4s = TextRank4Sentence()
 
# 英文单词小写,进行词性过滤并剔除停用词
 
tr4s.analyze(text=text, lower=True, source='no_filter')
 
print('摘要为:')
 
# 抽取3条句子作为摘要
 
for item in tr4s.get_key_sentences(num=3):

# 打印句子的索引、权重和内容
 print(item.index, item.weight, item.sentence)

大概调整了一下,加了个读目录文件的方法。
试试, 看行不行

import sys
from imp import reload
import os

try:
    reload(sys)
    sys.setdefaultencoding('utf-8')
except:
    pass

import codecs
from textrank4zh import TextRank4Keyword, TextRank4Sentence

def work(file):
    # file = r'/Users/xiongying/Desktop/有关农业经济的几个问题_许涤新.txt'

    # 打开并读取文本文件

    text = codecs.open(file, 'r', 'utf-8').read()

    # 创建分词类的实例

    tr4w = TextRank4Keyword()

    # 对文本进行分析,设定窗口大小为2,并将英文单词小写

    tr4w.analyze(text=text, lower=True, window=2)

    """输出"""

    print('关键词为:')

    # 从关键词列表中获取前20个关键词

    for item in tr4w.get_keywords(num=20, word_min_len=1):
        print(item.word, item.weight)
        print('\n')
        print('关键短语为:')
    # 从关键短语列表中获取关键短语

    for phrase in tr4w.get_keyphrases(keywords_num=20, min_occur_num=2):
        print(phrase)
        print('\n')
    # 创建分句类的实例

    tr4s = TextRank4Sentence()

    # 英文单词小写,进行词性过滤并剔除停用词

    tr4s.analyze(text=text, lower=True, source='no_filter')

    print('摘要为:')

    # 抽取3条句子作为摘要

    for item in tr4s.get_key_sentences(num=3):
        # 打印句子的索引、权重和内容
        print(item.index, item.weight, item.sentence)

def check_all_files(check_path):
    list_files = []
    # 列出文件夹下所有文件
    cur_list = os.listdir(check_path)
    for i in range(0 ,len(cur_list)):
        file_path = os.path.join(check_path, cur_list[i])
        if os.path.isfile(file_path):
            if cur_list[i].upper()[-4:]=='.TXT':
                list_files.append([cur_list[i], file_path])
    return list_files


f_lst = check_all_files(r"/Users/xiongying/Desktop")

for f in f_lst:
    print("处理",f[0])
    work(f[1])

17~58行作为一个整体,之前再加一层循环。 files作为一个多文件列表:

files = [r'/Users/xiongying/Desktop/有关农业经济的几个问题_许涤新1.txt', r'/Users/xiongying/Desktop/有关农业经济的几个问题_许涤新2.txt', ......]

for file in files:
17~58行