Loading [MathJax]/jax/output/CommonHTML/jax.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【深度学习】序列生成模型(五):评价方法计算实例:计算BLEU-N得分【理论到程序】

【深度学习】序列生成模型(五):评价方法计算实例:计算BLEU-N得分【理论到程序】

作者头像
Qomolangma
发布于 2024-07-30 03:28:37
发布于 2024-07-30 03:28:37
16200
代码可运行
举报
文章被收录于专栏:深度学习深度学习
运行总次数:0
代码可运行

一、BLEU-N得分(Bilingual Evaluation Understudy)

1. 定义

  设 𝒙 为模型生成的候选序列,

为一组参考序列,𝒲 为从生成的候选序列中提取所有N元组合的集合。BLEU算法的精度(Precision)定义如下:

其中

是N元组合

生成序列

中出现的次数,

是N元组合

参考序列

中出现的次数。

  为了处理生成序列长度短于参考序列的情况,引入长度惩罚因子

其中

是生成序列的长度,

是参考序列的最短长度。

  BLEU算法通过计算不同长度的N元组合的精度,并进行几何加权平均,得到最终的BLEU分数:

其中

为最长N元组合的长度,

是不同N元组合的权重,一般设为

2. 计算

N=1
  • 生成序列
  • 参考序列
N=2
  • 生成序列
  • 参考序列

w w w

c w ( x ) c_w(\mathbf{x}) cw​(x)

c w ( s ( 1 ) ) c_w(\mathbf{s^{(1)}}) cw​(s(1))

c w ( s ( 2 ) ) c_w(\mathbf{s^{(2)}}) cw​(s(2))

max ⁡ k = 1 K c w ( s ( k ) ) ) \max_{k=1}^{K} c_w(\mathbf{s}^{(k)})) maxk=1K​cw​(s(k)))

min ⁡ ( c w ( x ) , max ⁡ k = 1 K c w ( s ( k ) ) ) \min(c_w(\mathbf{x}), \max_{k=1}^{K} c_w(\mathbf{s}^{(k)})) min(cw​(x),maxk=1K​cw​(s(k)))

the cat

1

1

0

1

1

cat sat

1

0

0

0

0

sat on

1

0

1

1

1

on the

1

1

1

1

1

the mat

1

1

0

1

1

the cat11011cat sat10000sat on10111on the11111the mat11011

BLEU-N 得分

  为了处理生成序列长度短于参考序列的情况,引入长度惩罚因子

其中

是生成序列的长度,

是参考序列的最短长度。

  这里

,因此

  BLEU算法通过计算不同长度的N元组合的精度,并进行几何加权平均,得到最终的BLEU分数:

其中

为最长N元组合的长度,

是不同N元组合的权重,一般设为

3. 程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
main_string = 'the cat sat on the mat'
string1 = 'the cat is on the mat'
string2 = 'the bird sat on the bush'

# 计算单词
unique_words = set(main_string.split())
total_occurrences, matching_occurrences = 0, 0

for word in unique_words:
    count_main_string = main_string.count(word)
    total_occurrences += count_main_string
    matching_occurrences += min(count_main_string, max(string1.count(word), string2.count(word)))

similarity_word = matching_occurrences / total_occurrences
print(f"N=1: {similarity_word}")

# 计算双词
word_tokens = main_string.split()
bigrams = set([f"{word_tokens[i]} {word_tokens[i + 1]}" for i in range(len(word_tokens) - 1)])
total_occurrences, matching_occurrences = 0, 0

for bigram in bigrams:
    count_main_string = main_string.count(bigram)
    total_occurrences += count_main_string
    matching_occurrences += min(count_main_string, max(string1.count(bigram), string2.count(bigram)))

similarity_bigram = matching_occurrences / total_occurrences
print(f"N=2: {similarity_bigram}")

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
N=1: 1.0
N=2: 0.8
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vim第七讲 帮助、个性化和补全
Vim 拥有一个细致全面的在线帮助系统。要启动该帮助系统,请选择如下三种方 法之一:
宋天伦
2020/07/15
6010
Vim 学习
本文的内容来自 vimtutor(v1.7),在 Unix 系统下输入 “vimtutor” 即可进入教学模型。这里记录下来学习点滴,方便以后查看。
李振
2021/11/26
6990
Vimtutor中文版
=============================================================================== = 欢 迎 阅 读 《 V I M 教 程 》 —— 版本 1.5 = =============================================================================== vim 是一个具有很多命令的功能非常强大的编辑器。限于篇幅,在本教程当中 就不详细介绍了。本教程的设计目标是讲述一些必要的基本命令,而掌握好这 些命令,您就能够很容易将vim当作一个通用的万能编辑器来使用了。
大数据流动
2019/08/08
1.7K0
Vim第一讲 基础操作
特别提示:按下 <ESC> 键会带您回到正常模式或者撤消一个不想输入或部分完整 的命令。
宋天伦
2020/07/15
4000
vim 从嫌弃到依赖(12)——打开及保存文件
在前几篇文章中,我们从vim各种模式的使用着手介绍了vim如何进行文本本身的编辑。也通过缓冲区列表的介绍了解到了vim是如何进行打开文件的管理。这篇我们将会着眼于文件的打开和保存的基本操作。通过这篇的阅读,我们可以正式开始尝试将vim用做代码编辑器,而不再是像之前那样作为普通的文本编辑器。
Masimaro
2022/05/19
2K0
vim 从嫌弃到依赖(12)——打开及保存文件
vim配置即.vimrc文件的配置及vim操作技巧
1.下载vim(略)。让vi命令也可以使用vim的配置,需要修改 vi /etc/bashrc 增加如下一行内容
Twcat_tree
2022/11/30
4.4K0
Vim命令使用说明
vim是我最喜欢的编辑器,也是linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效。 如果是初学vi,运行一下vimtutor是个聪明的决定。 (如果你的系统环境不是中文,而你想使用中文的vimtutor,就运行vimtutor zh)
mikelLam
2022/10/31
3.1K0
VIM 操作记录
选择指定符号 (", ', ), }, ]) 区域内的内容 举个例子 : [ a + cda [daff ] ], 当前光标在 [daff] 范围
orientlu
2018/09/13
2K0
VIM 操作记录
2023最全vim编辑器教程(详细、完整)-编辑器之神
vi和vim是两款常用的文本编辑器。vi是Unix系统中最早的文本编辑器之一,vim是vi的改进版本。
Python兴趣圈
2023/11/10
3.6K0
2023最全vim编辑器教程(详细、完整)-编辑器之神
Vim 常用操作命令整理
打开关闭 vim xxx,vim +num xxx 命令行打开文件 vim + filename 启动跳到文件结尾 vim +143 filename 打开跳到143行 调试代码有用 vim +/search-term filename 跳到第一个匹配 vim +/search-term filename 跳到最后一个匹配 vim -t tag vim —cmd command filename 加载文件前执行命令 vim -c “:50” filename 加载文件后执行命令 :e xxx vim中打开文
哲洛不闹
2018/09/14
1K0
vim 退出命令(保存、放弃保存)_linux保存并退出vim
今天第一次接触这个vim文本编辑器,拿到一个陌生的工具,我们想的当然是最短的时间掌握它的基本操作,体会到成就感。如果你跟我一样,那么这篇教程或许对你有所帮助。
全栈程序员站长
2022/09/23
21.2K0
【Python Learning第一篇】Linux命令学习及Vim命令的使用
学了两天,终于把基本命令学完了,掌握以后可以当半个程序员了♪(^∇^*) 此文是一篇备忘录或者查询笔记,如果哪位大佬看上了并且非常嫌弃的话,还请大佬不吝赐教,多多包涵 以下是我上课做的一些笔记,非常的凌乱,(⊙﹏⊙)反正是留给自己看的 Day1学习: 以Ubuntu为例子 Ctrl + Shift +‘+’ 变大 Ctrl + ‘-’变小 ls 能显示当前路径下的所有文件名及文件夹名的命令 Ubuntu没有盘符的概念,只有一个根目录 bin 放的是程序相关的 boot 和Ubuntu的启动项相关,开机项相关
Angel_Kitty
2018/04/08
1.1K0
vim-神之编辑器-命令汇总笔记
能够手不离键盘快速的书写,代码,文件等,但是要练熟了才能形成战斗力,否则几乎寸步难行。。
十四君
2019/11/25
1.2K0
Linux学习笔记之vim操作指令大全
Vim是款强大的文本编辑器,但是众多指令需要学习,这次记录了指令大全方便以后翻阅。
Jetpropelledsnake21
2019/07/01
3.5K0
Linux学习笔记之vim操作指令大全
一篇就学会vim
学会一个软技能,总结一篇文章就够了。 剩下要做的就是不停的练习,不停的尝试,本文是在学习这个仓库之后的极简总结中。 主要作为一个备忘录使用。
六个周
2022/10/28
3.6K0
一篇就学会vim
【Vim 核心攻略】 —— 文本编辑高手的进阶秘籍
Vim 是一种强大且高度可定制的文本编辑器,广泛用于软件开发、系统管理和各种文本处理任务。它基于更早期的编辑器 Vi,并对其进行了扩展,因此也被称为 “Vi Improved”(Vi 的增强版)。Vim 的特点是快捷键驱动、支持多模式编辑以及可扩展性强。
换一颗红豆
2024/12/23
3650
【Vim 核心攻略】 —— 文本编辑高手的进阶秘籍
无插件Vim编程技巧
相信大家看过《简明Vim教程》也玩了《Vim大冒险》的游戏了,相信大家对Vim都有一个好的入门了。我在这里把我日常用Vim编程的一些技巧列出来给大家看看,希望对大家有用,另外,也是一个抛砖引玉的过程,也希望大家把你们的技巧跟贴一下,我会更新到这篇文章中。另外,这篇文章里的这些技巧全都是vim原生态的,不需要你安装什么插件。我的Vim的版本是7.2。
bear_fish
2018/09/19
1.5K0
无插件Vim编程技巧
vim 个性化设置
Vimscript,一门用于定制Vim的脚本语言。它其实就是 Vim命令。如,在Vim中,保存一个文件使用命令:write(或者缩写 :w)并回车确认。在Vimscript中,使用write实现文件保存功能。
PedroQin
2019/12/18
1.7K0
vim 个性化设置
玩转vim(vi)编辑器
vi编辑器是Linux下的标准编辑器,vi编辑器并非只是用来写程序,还可以用来对一些配置文件进行编辑。vim是vi的加强版,我们一般使用vim对文件进行编辑。本文介绍了vim编辑器的三大模式,以及相应的命令,最后介绍了如何通过vim编辑器的配置文件.vimrc根据自己的需求对vim进行配置。
mindtechnist
2024/08/08
1.2K0
玩转vim(vi)编辑器
终端文本编辑神器--Vim命令详解。如何配置Vim以及Vim插件?
Vim是一款跨平台的文本编辑器,不但可以运行在Unix,还可以运行在GNU、Windows平台,并且还支持丰富的插件,助力开发和使用。
Mintimate
2021/08/24
2.5K0
终端文本编辑神器--Vim命令详解。如何配置Vim以及Vim插件?
相关推荐
Vim第七讲 帮助、个性化和补全
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验