#python# #jieba# #Transformers#
文本概括实践,适合初步总结分析概括文本。
一、简易模式
使用到 jieba
import jieba
import jieba.analyse
# 示例中文文本
text = """这里是您想要概括的中文文本。将示例文本替换为您实际希望概括的段落。"""
# 使用jieba的textrank提取关键句
def extract_summary(text, topK=3):
# 使用jieba的textrank接口提取关键句,topK指定要提取的句子数量
key_sentences = jieba.analyse.textrank(text, topK=topK, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'))
return ' '.join(key_sentences)
# 打印概括后的文本
print(extract_summary(text))
二、进阶模式
使用到 Hugging Face的Transformers库。为了提高准确性,我将文本先转化为英文,再转化汉语。提升概括的准确性。初次使用 Transformers 会加载模型库,比较慢。
from transformers import pipeline
# 加载中文到英文的翻译模型
translator_to_en = pipeline("translation_zh_to_en", model="Helsinki-NLP/opus-mt-zh-en")
# 加载预训练的概括模型和tokenizer
summarizer = pipeline("summarization", model="t5-base", tokenizer="t5-base", framework="pt")
# 加载英文到中文的翻译模型
translator_to_zh = pipeline("translation_en_to_zh", model="Helsinki-NLP/opus-mt-en-zh")
# 示例中文文本,替换为您想要概括的文本
chinese_text = "这里是您的中文文本,将会被翻译、概括,并再次翻译回中文。"
# 将示例文本翻译成英文
translated_text_to_en = translator_to_en(chinese_text)[0]['translation_text']
# 使用概括模型进行文本概括
summary_text = summarizer(translated_text_to_en, max_length=130, min_length=30, do_sample=False)
# 将概括好的英文文本翻译回中文
summary_text_in_chinese = [translator_to_zh(summary['summary_text'])[0]['translation_text'] for summary in summary_text]
# 输出概括并翻译后的中文结果
for summary in summary_text_in_chinese:
print(summary)