欢迎访问宙启技术站
智能推送

使用get_summaries()函数自动生成中文摘要的示例代码

发布时间:2023-12-29 03:38:53

以下是一个使用get_summaries()函数自动生成中文摘要的示例代码:

from transformers import T5ForConditionalGeneration, T5Tokenizer

def get_summaries(texts):
    # 加载T5模型和tokenizer
    model = T5ForConditionalGeneration.from_pretrained('t5-base')
    tokenizer = T5Tokenizer.from_pretrained('t5-base')

    # 对输入文本进行分词和编码
    inputs = tokenizer.batch_encode_plus(texts, padding='longest', truncation=True, max_length=512, return_tensors="pt")
    
    # 生成摘要
    summary_ids = model.generate(inputs['input_ids'], num_beams=4, max_length=100, early_stopping=True)
    
    # 解码生成的摘要
    summaries = [tokenizer.decode(summary, skip_special_tokens=True) for summary in summary_ids]
    
    return summaries

# 示例输入文本
texts = [
    '机器学习是人工智能的一个分支,它通过让机器自动学习规律和模式来实现任务。机器学习在各个领域都有应用,如医疗、金融、自然语言处理等。',
    '自然语言处理是研究计算机与人类自然语言之间的交互的领域。其中包括文本分类、机器翻译、情感分析等任务。',
    '深度学习是一种机器学习方法,其主要特点是模拟人脑神经元之间的连接方式来构建神经网络。深度学习在计算机视觉、语音识别等领域取得了巨大的成功。',
    '计算机视觉是指利用计算机和摄像机等设备来模拟人类的视觉感知和理解能力。计算机视觉在自动驾驶、图像识别等方面有广泛应用。',
]

# 生成摘要
summaries = get_summaries(texts)

# 打印摘要
for i, summary in enumerate(summaries):
    print(f"摘要 {i+1}: {summary}")

上述示例代码中,我们首先加载了T5模型和tokenizer。然后,我们定义了一个get_summaries()函数,该函数接受一个文本列表作为输入,对每个文本进行摘要生成,并返回生成的摘要列表。

get_summaries()函数中,我们首先使用tokenizer对输入文本进行分词和编码。然后,我们使用T5模型生成摘要,通过调整num_beams参数控制生成摘要的多样性。最后,我们使用tokenizer对生成的摘要进行解码,跳过特殊标记,并返回解码后的摘要列表。

在示例中,我们使用了包含四个文本的示例列表texts作为输入,并生成了相应的摘要。最后,我们循环打印每个文本的摘要。

请注意,T5模型的训练是基于大规模英语数据集的,对于中文摘要生成可能效果会受到限制。如需更好的中文摘要生成效果,可以使用基于中文数据进行预训练的模型,或者对T5模型进行进一步的微调。