NLG常用metric整理
2022/8/15 23:32:38
本文主要是介绍NLG常用metric整理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
概览
- BLEU:基于比较词/短语的重叠比例,关注precision
- Rouge:基于比较词/短语的重叠比例,关注recall
- Meteor:基于比较词/短语的重叠比例,关注f1
- Distinct:
- Perplexity:
BLEU
BLEU (其全称为Bilingual Evaluation Understudy), 其意思是双语评估替补。所谓Understudy (替补),意思是代替人进行翻译结果的评估。尽管这项指标是为翻译而发明的,但它可以用于评估一组自然语言处理任务生成的文本。
计算公式:
举例:
主流的计算BLEU的python库有nltk和sacrebleu,计算结果的不同源自使用了不同的smooth算法。
from sacrebleu.tokenizers.tokenizer_zh import TokenizerZh from sacrebleu.tokenizers.tokenizer_13a import Tokenizer13a from sacrebleu import BLEU import nltk.translate.bleu_score as nltkbleu def tokenizer(s, lang): if lang == "zh": return TokenizerZh()(s).split(" ") else: return Tokenizer13a()(s).split(" ") def sacre_bleu(refs, pred, n): bleu = BLEU(lowercase=True, tokenize="zh", max_ngram_order=n, effective_order=True) score = bleu.sentence_score(references=refs, hypothesis=pred).score print(score) def nltk_bleu(refs, pred, n): """ 一般smoothing_function选择默认即可; 默认n=4 """ refs = [tokenizer(ref, "zh") for ref in refs] pred = tokenizer(pred, "zh") weights = [1 / n for _ in range(n)] score = nltkbleu.sentence_bleu( refs, pred, smoothing_function=nltkbleu.SmoothingFunction().method7, weights=weights ) print(score) if __name__ == "__main__": s = "你好世界" sacre_bleu([s], s, 4) nltk_bleu([s], s, 4)
Rouge
这篇关于NLG常用metric整理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升
- 2024-05-08代码报错不用愁,CodeGeeX一键完成代码修复、错误解释的功能上线了!