Views
No views yet
11. 环境准备
2!git clone https://github.com/IDEA-CCNL/Fengshenbang-LM
3!ls ./Fengshenbang-LM/fengshen/examples/pegasus/
4import sys
5# 添加 Fengshenbang-LM 到 sys.path
6sys.path.append('./Fengshenbang-LM/')
7
82. 加载模型和分词器
9from fengshen.examples.pegasus.tokenizers_pegasus import PegasusTokenizer
10from transformers import PegasusForConditionalGeneration
11
12# 初始化分词器
13tokenizer = PegasusTokenizer.from_pretrained("guo1006/Pegasus-523M-Chinese-finetuned-lcsts-accelerate")
14
15# 加载微调后的模型
16model = PegasusForConditionalGeneration.from_pretrained(
17 "guo1006/Pegasus-523M-Chinese-finetuned-lcsts-accelerate"
18)
19import jieba
20import evaluate
21from rouge_score import rouge_scorer, scoring
22import datasets
23
243. 中文 ROUGE 评估指标
25class ChineseRouge(evaluate.Metric):
26 def _info(self):
27 return evaluate.MetricInfo(
28 description="中文 ROUGE 分数(基于 jieba 分词)",
29 citation="https://github.com/google-research/google-research/tree/master/rouge",
30 inputs_description="预测和参考均为原始中文字符串列表",
31 features=datasets.Features({
32 "predictions": datasets.Value("string"),
33 "references": datasets.Value("string"),
34 }),
35 reference_urls=["https://en.wikipedia.org/wiki/ROUGE_(metric)"],
36 )
37
38 def _compute(self, predictions, references, rouge_types=None, use_stemmer=False):
39 if rouge_types is None:
40 rouge_types = ["rouge1", "rouge2", "rougeL"]
41
42 class JiebaTokenizer:
43 def tokenize(self, text):
44 return jieba.lcut(text)
45
46 tokenizer = JiebaTokenizer()
47 scorer = rouge_scorer.RougeScorer(
48 rouge_types=rouge_types,
49 use_stemmer=use_stemmer,
50 tokenizer=tokenizer
51 )
52 aggregator = scoring.BootstrapAggregator()
53
54 for pred, ref in zip(predictions, references):
55 scores = scorer.score(ref, pred)
56 aggregator.add_scores(scores)
57
58 result = aggregator.aggregate()
59 return {key: result[key].mid.fmeasure for key in result}
60from transformers import pipeline
614. 文本摘要示例
62# 加载Pipeline
63hub_model_id = "guo1006/Pegasus-523M-Chinese-finetuned-lcsts-accelerate"
64summarizer = pipeline("summarization", model=hub_model_id, tokenizer=tokenizer, framework='pt')
65
66# 推理示例
67sample_text = dataset["val"][0]["text"]
68generated_summary = summarizer(sample_text)[0]['summary_text']
69print(generated_summary)
705. ROUGE评估示例
71rouge = ChineseRouge()
72# 添加预测和参考数据
73rouge.add_batch(
74 predictions=[generated_summary],
75 references=[dataset["val"][0]["summary"]]
76)
77# 计算ROUGE得分
78result = rouge.compute()
79print(result)
80