专栏首页深度学习自然语言处理一分钟搞懂的算法之BPE算法

一分钟搞懂的算法之BPE算法

昨天总结实验数据分析的时候发现一个机器翻译的其中的一个脚本,其中用到的算法就是BPE算法,刚开始感觉很高大上的,因为总是听到带上算法帽子的东西就觉得666。等自己好好研究研究,网上各种找资料才知道,其实还挺好理解的,所以真的应了那句老话,眼见为实呀。

总说

BPE,(byte pair encoder)字节对编码,也可以叫做digram coding双字母组合编码,主要目的是为了数据压缩,算法描述为字符串里频率最常见的一对字符被一个没有在这个字符中出现的字符代替的层层迭代过程。具体在下面描述。该算法首先被提出是在Philip Gage的C Users Journal的 1994年2月的文章“A New Algorithm for Data Compression”。

算法过程

这个算法个人感觉很简单,下面就来讲解下:

比如我们想编码:

aaabdaaabac

我们会发现这里的aa出现的词数最高(我们这里只看两个字符的频率),那么用这里没有的字符Z来替代aa:

ZabdZabac

Z=aa

此时,又发现ab出现的频率最高,那么同样的,Y来代替ab:

ZYdZYac

Y=ab

Z=aa

同样的,ZY出现的频率大,我们用X来替代ZY:

XdXac

X=ZY

Y=ab

Z=aa

最后,连续两个字符的频率都为1了,也就结束了。就是这么简单。

解码的时候,就按照相反的顺序更新替换即可。

参考

Byte pair encoding

https://en.wikipedia.org/wiki/Byte_pair_encoding

下一篇预告:

TreeLstm Sentiment Classification 树形LSTM情感分类理论篇

本文分享自微信公众号 - 深度学习自然语言处理(zenRRan),作者:zenRRan

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【机器学习】决策树的理论与实践

    zenRRan二十出头了,到了婚配的年龄啦。又因为家是名门望族,所以一堆人抢着想来应聘配偶的职位。但是zenRRan比较挑剔,必须达到他的要求才能有机会成为他的...

    zenRRan
  • 轻松看懂机器学习十大常用算法

    通过本篇文章可以对ML的常用算法有个常识性的认识,没有代码,没有复杂的理论推导,就是图解一下,知道这些算法是什么,它们是怎么应用的,例子主要是分类问题。

    zenRRan
  • 分类问题的label为啥必须是 one hot 形式?

    作者:桔了个仔 链接:https://www.zhihu.com/question/359742335/answer/930586793 来源:知乎

    zenRRan
  • 一分钟明白MySQL聚簇索引和非聚簇索引

    MySQL的InnoDB索引数据结构是B+树,主键索引叶子节点的值存储的就是MySQL的数据行,普通索引的叶子节点的值存储的是主键值,这是了解聚簇索引和非聚簇索...

    阿伟
  • 揭秘:短信拦截木马背后的黑色产业

    0×01 概述 从2013年5月至今,AVL移动安全团队持续监测到了一类高活跃高危害的短信拦截类型木马。短信拦截马,顾名思义是一种可以拦截他人短信木马,就是让被...

    FB客服
  • 基础知识 | 每日一练(109)

    学生:我如何在 printf 的格式串中输出一个 ’%’?我试过 \%, 但是不 行。

    闫小林
  • ASP.NET SignalR 2.0入门指南介绍SignalRSignalR和WebSocket传输和回滚HTML5 传输协议Comet transports传输协议选择过程监测传输指定传输协议连接

    介绍SignalR ASP.NET SignalR 是一个为 ASP.NET 开发人员的库,简化了将实时 web 功能添加到应用程序的过程。实时Web功能使服务...

    小白哥哥
  • TypeScript typeof 操作符

    在 TypeScript 中,typeof 操作符可以用来获取一个变量或对象的类型。

    阿宝哥
  • 密码学术语以及nodejs实现

    MrTreasure
  • LeetCode:94_Binary Tree Inorder Traversal | 二叉树中序遍历 | Medium

    题目:Binary Tree Inorder Traversal 二叉树的中序遍历,和前序、中序一样的处理方式,代码见下: 1 struct TreeNode...

    CloudDeveloper

扫码关注云+社区

领取腾讯云代金券