关于nlp:搜索语义模型的大规模量化实践

作者 | 把酒问青天 导读  通过近几年的技术演进,语义模型在百度搜寻场景中被宽泛地利用,耗费了大量的GPU资源,模型压缩技术也随之失去大量钻研和实际。通过兼顾推理性能、业务成果和迭代效率的优化指标,咱们胜利地将INT8量化技术大面积地利用到了搜寻场景中,极大地提高了资源效力。此外,目前大模型正在被钻研和利用,算力资源曾经成为瓶颈,如何以更低的老本进行落地是一个十分热点的问题。基于对模型压缩技术的实际和积攒,咱们可能更好地助力大模型的摸索和利用。 全文6287字,预计浏览工夫16分钟。 01 搜寻语义模型现状ERNIE: Enhanced Representation through Knowledge Integration是百度在2019年4月的时候,基于BERT模型做的进一步优化,在中文的NLP工作上失去了state-of-the-art的后果。 近年来,ERNIE 1.0/2.0/3.0等语义模型在搜寻各个重点业务场景下失去了广泛应用,包含相关性、排序等多个子方向,耗费了大量GPU资源。每个业务方向个别由多个模型组成链路来实现最终计算,整体搜寻业务所波及的模型数量多、迭代快。目前,线上全流量模型超过几百个,月级迭代近百次。语义模型的大量利用对搜寻产生了微小影响,相干业务指标对模型精度的变动十分敏感。总的来说,在模型压缩技术的工程实际中,推理性能、业务指标和迭代效率三者的优化指标该当对立思考: 1、推理性能:采纳INT8量化,ERNIE模型的性能减速均匀达25%以上。其次要影响因素蕴含输出数据量大小(batch size、sequence length等)、暗藏节点数、非标准网络结构与算子交融优化。 2、业务指标:以某相关性场景下的ERNIE模型为例,模型输入在数值上的diff率不超过1%,在离线测试集上的评估指标达到简直无损。 3、迭代效率:离线量化达小时级,流水线式疾速产出量化模型,不阻塞模型全生命周期的相干环节(如模型多版本迭代、小流量试验、全量化推全等)。 02 模型量化简述简而言之,模型量化就是将高精度存储(运算)转换为低精度存储(运算)的一种模型压缩技术。劣势如下: 更少的存储开销与带宽需要:如每层权重量化后,32位比特压缩到8比特甚至更低比特,模型占用空间变小;内存拜访带宽的压力天然也会变小。更快的计算速度:单位工夫内执行整型计算指令比浮点计算指令更多;另,英伟达安培架构芯片还有专用INT8 Tensor core。如果咱们从不同的技术角度来对待它,那么: 从映射函数是否是线性,分为线性和非线性。非线性量化计算较为简单,个别次要钻研线性量化,其公式如下: Q = clip(round(R/S) + Z),其中R: high precision float number,Q:quantized integer number,s:scale,z:zero point。 从零点对应地位辨别,线性量化又分为对称和非对称。 △1:对称与非对称量化 以矩阵乘为例,计算公式如下: = = = ( − ) ( − ) = − − + 在理论利用中,两者精度差别不大,对称量化在推理上更容易实现、计算更快。 从量化粒度上,分为逐层量化、逐组量化和逐通道量化。第一种在推理上最易实现,性能更好,个别利用在输出矩阵。第二和第三种在推理上难实现,但业务精度好,个别利用在权重矩阵。从浮点矩阵中统计最大值是否截断上,分为饱和量化和非饱和量化。个别权重采纳非饱和量化;输出/输入矩阵数据分布不平均,采纳饱和量化。从是否参加训练上,分为训练后量化(Post-Traning Quantization,PTQ)和量化感知训练(Quantization Aware Training, QAT)。从实际上看,前者性价比最高,在精度损失可承受范畴内可能疾速产出量化后模型,并取得不错的性能减速;后者须要联合训练来看,往往是在PTQ造成精度损失过大时采取的进一步伎俩。 △图2:PTQ与QAT流程 从是否在推理中动静生成尺度因子,分为在线(动静)量化和离线(动态)量化。在线量化须要在推理过程中依据理论激活计算量化参数,会影响推理速度。03 训练后量化结合实际的利用场景,咱们率先对训练后INT8量化技术进行了粗疏钻研和大规模实际。本文中波及到的硬件测试环境为GPU A10,CUDA 11.2,TensorRT8,工具链包含PaddlePaddle、PaddleInference、PaddleSlim等。 3.1 量化损失的精细化剖析低精度示意空间远远小于高精度示意空间,无论采纳何种校准办法和校准数据,量化肯定会带来不同水平上的数值误差。为了尽可能的减小误差、不影响模型业务指标,那么误差的起源和解决方案该当被全面粗疏地探索与剖析。比方,哪些算子适宜量化,每个算子量化后带来的端到端误差如何掂量,是否将误差较大的局部算子不作量化等问题。 ...

June 27, 2023 · 1 min · jiezi

关于nlp:分集与路径合并方式

本专栏蕴含信息论与编码的外围常识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。分集分集的概念分集是一种抗衰败技术。原理是利用两个以上信号传送同一个信息,并且这些不同信号的衰败互相独立。在接收端以适当形式将这些信号合并利用,以升高合成信号电平起伏,减小各种衰败对接管信号的影响,进而复原信息。 设同一信息通过两路信号传输, 包络为 $v_{1}(t)$ 和 $v_{2}(t)$ , 设 $u_{0}$ 为门限电平, 当小于门限电平时则产生谬误, 令 $$P[v_{1}(t) \lt u_{0}] = P[v_{1}(t) \lt u_{0}] = 10^{-3}$$ 若 $v_{1}(t)$ 和 $v_{2}(t)$ 独立, 则二者同时小于 $u_{0}$ 的概率为 $$P[v_{1}(t) \lt u_{0}, v_{2}(t) \lt u_{0}]=10^{-3} \times 10^{-3}=10^{-6} \ll 10^{-3}$$ 此时若同时利用 $v_{1}(t)$ 和 $v_{2}(t)$ 来复原信息,则可缩小错 若 $v_{1}(t)$ 和 $v_{2}(t)$ 齐全相干则 : $$P[v_{1}(t) \lt u_{0}, v_{2}(t) \lt u_{0}]=10^{-3}$$ 论断: 要达到抗多径成果, 要求 $v_{1}(t)$ 和 $v_{2}(t)$ 统计独立或不相干或弱相干. 分集的办法取得不相干门路信号的办法: 空间分集采纳多天线接管同一信号, 相邻天线间间隔大于载波波长 3 倍以上。(注:实践最小值为 $\lambda / 2$ )。 ...

June 10, 2023 · 2 min · jiezi

关于nlp:java-如何计算两个汉字的相似度如何获得一个汉字的相似汉字

计算汉字类似度情景有时候咱们心愿计算两个汉字的类似度,比方文本的 OCR 等场景。用于辨认纠正。 实现引入 maven <dependency> <groupId>com.github.houbb</groupId> <artifactId>nlp-hanzi-similar</artifactId> <version>1.3.0</version></dependency>java 实现 double rate1 = HanziSimilarHelper.similar('末', '未');返回对应的类似度: 0.9629629629629629返回一个汉字的类似列表情景找到类似的汉字,有很多乏味的场景。 实现List<String> list = HanziSimilarHelper.similarList('爱');Assert.assertEquals("[爰, 爯, 受, 爭, 妥, 憂, 李, 爳, 叐, 雙]", list.toString());开源地址为了便于大家学习,上述代码已开源 https://github.com/houbb/nlp-hanzi-similar在线体验在线体验拓展浏览NLP 中文形近字类似度计算思路 中文形近字类似度算法实现,为汉字 NLP 尽一点绵薄之力 当代中国最贵的汉字是什么? NLP 开源形近字算法补完打算(完结篇) NLP 开源形近字算法之形近字列表(番外篇) 开源我的项目在线化 中文繁简体转换/敏感词/拼音/分词/汉字类似度/markdown 目录

April 12, 2023 · 1 min · jiezi

关于nlp:NLP-开源形近字算法之相似字列表番外篇

创作目标国内对于文本的类似度计算,开源的工具是比拟丰盛的。 然而对于两个汉字之间的类似度计算,国内根本一片空白。国内的参考的材料少的可怜,国外相干文档也是如此。 本我的项目旨在抛砖引玉,实现一个根本的类似度计算工具,为汉字 NLP 奉献一点绵薄之力。 举荐浏览: NLP 中文形近字类似度计算思路 中文形近字类似度算法实现,为汉字 NLP 尽一点绵薄之力 当代中国最贵的汉字是什么? NLP 开源形近字算法补完打算(完结篇) NLP 开源形近字算法之形近字列表(番外篇) 开源我的项目在线化 中文繁简体转换/敏感词/拼音/分词/汉字类似度/markdown 目录 需要有时候咱们并不是须要返回两个字的类似,而是须要返回一个汉字的类似列表。 实现思路咱们能够别离计算所有的汉字之间的类似度,而后保留最大的前100个,放在字典中。 而后实时查问这个字典即可。 实现形式bihuashu_2w.txt 中咱们次要须要的是对应的 2W 常见汉字。 hanzi_similar_list.txt 用来寄存汉字和类似字的映射关系。 数据初始化public static void main(String[] args) { final String path = "D:\\code\\coin\\nlp-hanzi-similar\\src\\main\\resources\\hanzi_similar_list.txt"; // 读取列表 List<String> lines = FileUtil.readAllLines("D:\\code\\coin\\nlp-hanzi-similar\\src\\main\\resources\\nlp\\bihuashu_2w.txt"); // 所有的单词 Set<String> allWordSet = new HashSet<>(); for(String line : lines) { String word = line.split(" ")[0]; allWordSet.add(word); } // 循环比照 for(String word : allWordSet) { List<String> list = getSimilarListData(word, allWordSet); String line = word +" " + StringUtil.join(list, ""); FileUtil.append(path, line); }}优先级队列取前 100 个咱们通过优先级队列存储: ...

March 28, 2023 · 2 min · jiezi

关于nlp:java-中文繁简体转换工具-opencc4j-使用介绍-180

Opencc4jOpencc4j 反对中文繁简体转换,思考到词组级别。 在线体验Features 特点严格辨别「一简对多繁」和「一简对多异」。齐全兼容异体字,能够实现动静替换。严格审校一简对多繁词条,准则为「能分则不合」。词库和函数库齐全拆散,能够自在批改、导入、扩大。兼容 Windows、Linux、Mac 平台。反对自定义分词反对判断单个字(词)是否为简体/繁体反对返回字符串中简体/繁体的列表信息反对中国台湾地区繁简体转换v1.8.0 版本变更丰盛工具类办法优化繁简体判断逻辑变更日志创作原因OpenCCOpenCC 的思维十分优良,做的也特地棒。然而没有特地为 java 提供的工具。 jopenccjopencc 没有提供分词性能。 疾速开始maven 引入<dependency> <groupId>com.github.houbb</groupId> <artifactId>opencc4j</artifactId> <version>1.8.0</version></dependency>api 概览外围工具列表如下: 序号工具类简介1ZhConverterUtil根底的繁简体转换2ZhTwConverterUtil台湾地区的繁简体转换所有的工具类办法具备雷同的办法设计,便于记忆。 外围办法如下: 序号api 办法简介1toSimple(String)转为简体2toTraditional(String)转为繁体3simpleList(String)返回蕴含的简体列表4traditionalList(String)返回蕴含的繁体列表5toSimple(char)返回单个汉字对应的所有简体字列表6toTraditional(char)返回单个汉字对应的所有繁体字列表7isSimple(String)是否全副为简体8isSimple(char)单个字符是否为简体9containsSimple(String)字符中是否为蕴含简体10isTraditional(String)是否全副为繁体11isTraditional(char)单个字符是否为繁体12containsTraditional(String)字符中是否为蕴含繁体13isChinese(String)是否全副为中文14isChinese(char)单个字符是否为中文15containsChinese(char)字符串中是否蕴含中文繁简体转换转为简体 toSimpleString original = "生命不息,奮鬥不止";String result = ZhConverterUtil.toSimple(original);Assert.assertEquals("生命不息,奋斗不止", result);转为繁体 toTraditionalString original = "生命不息,奋斗不止";String result = ZhConverterUtil.toTraditional(original);Assert.assertEquals("生命不息,奮鬥不止", result);繁简体判断对单个字符或者词组进行繁简体判断。 是否为简体 isSimpleAssert.assertTrue(ZhConverterUtil.isSimple('奋'));Assert.assertTrue(ZhConverterUtil.isSimple("奋"));Assert.assertTrue(ZhConverterUtil.isSimple("奋斗"));Assert.assertFalse(ZhConverterUtil.isSimple('奮'));Assert.assertFalse(ZhConverterUtil.isSimple("奮"));Assert.assertFalse(ZhConverterUtil.isSimple("奮鬥"));Assert.assertFalse(ZhConverterUtil.isSimple("奮斗"));Assert.assertFalse(ZhConverterUtil.isSimple("beef"));是否蕴含简体 containsSimpleAssert.assertTrue(ZhConverterUtil.containsSimple("奋"));Assert.assertTrue(ZhConverterUtil.containsSimple("奋斗"));Assert.assertTrue(ZhConverterUtil.containsSimple("奋斗2023"));Assert.assertFalse(ZhConverterUtil.containsSimple("編"));Assert.assertFalse(ZhConverterUtil.containsSimple("編號"));是否为繁体 isTraditionalAssert.assertTrue(ZhConverterUtil.isTraditional('編'));Assert.assertTrue(ZhConverterUtil.isTraditional("編"));Assert.assertTrue(ZhConverterUtil.isTraditional("編號"));Assert.assertFalse(ZhConverterUtil.isTraditional('编'));Assert.assertFalse(ZhConverterUtil.isTraditional("编"));Assert.assertFalse(ZhConverterUtil.isTraditional("编号"));Assert.assertFalse(ZhConverterUtil.isTraditional("编號"));是否蕴含繁体 containsTraditionalAssert.assertTrue(ZhConverterUtil.containsTraditional("編"));Assert.assertTrue(ZhConverterUtil.containsTraditional("編號"));Assert.assertTrue(ZhConverterUtil.containsTraditional("編號2023"));Assert.assertFalse(ZhConverterUtil.containsTraditional("号"));Assert.assertFalse(ZhConverterUtil.containsTraditional("编号"));句子中蕴含的繁简体列表返回返回字符串中繁简体对应的词、字列表,默认反对中文分词。 繁简体列表返回的词组和分词策略严密相干。 简体列表 simpleListfinal String original = "生命不息奋斗不止";final List<String> resultList = ZhConverterUtil.simpleList(original);Assert.assertEquals("[生, 命, 不, 息, 奋斗, 不, 止]", resultList.toString());繁体列表 traditionalListPS: 很多字是同体字。 final String original = "生命不息奮鬥不止";final List<String> resultList = ZhConverterUtil.traditionalList(original);Assert.assertEquals("[生, 命, 不, 息, 奮, 鬥, 不, 止]", resultList.toString());单个汉字对应的繁简体列表繁体字列表Assert.assertEquals("[幹, 乾, 干]", ZhConverterUtil.toTraditional('干').toString());Assert.assertEquals("[發, 髮]", ZhConverterUtil.toTraditional('发').toString());简体字列表Assert.assertEquals("[测]", ZhConverterUtil.toSimple('測').toString());中文工具办法是否为中文 isChineseAssert.assertTrue(ZhConverterUtil.isChinese("你"));Assert.assertTrue(ZhConverterUtil.isChinese("你好"));Assert.assertTrue(ZhConverterUtil.isChinese('你'));Assert.assertFalse(ZhConverterUtil.isChinese("你0"));Assert.assertFalse(ZhConverterUtil.isChinese("10"));Assert.assertFalse(ZhConverterUtil.isChinese('0'));Assert.assertFalse(ZhConverterUtil.isChinese(""));Assert.assertFalse(ZhConverterUtil.isChinese(null));是否蕴含中文 containsChineseAssert.assertTrue(ZhConverterUtil.containsChinese("你"));Assert.assertTrue(ZhConverterUtil.containsChinese("你好"));Assert.assertTrue(ZhConverterUtil.containsChinese("你0"));Assert.assertFalse(ZhConverterUtil.containsChinese("10"));Assert.assertFalse(ZhConverterUtil.containsChinese(""));Assert.assertFalse(ZhConverterUtil.containsChinese(null));中国台湾繁简体转换工具类为保障办法的一致性,引入 ZhTwConverterUtil 工具类,反对办法和 ZhConverterUtil 保持一致。 ...

March 14, 2023 · 2 min · jiezi

关于nlp:如何提高IT运维效率深度解读京东云基于NLP的运维日志异常检测AIOps落地实践

作者:京东科技  张宪波、张静、李东江 基于NLP技术对运维日志聚类,从日志角度疾速发现线上业务问题 日志在IT行业中被宽泛应用,日志的异样检测对于识别系统的运行状态至关重要。解决这一问题的传统办法须要简单的基于规定的有监督办法和大量的人工工夫老本。咱们提出了一种基于自然语言解决技术运维日志异样检测模型。为了进步日志模板向量的品质,咱们改良特征提取,模型中应用了词性(PoS)和命名实体辨认(NER)技术,缩小了规定的参加,利用 NER 的权重向量对模板矢量进行了批改,剖析日志模板中每个词的 PoS 属性,从而缩小了人工标注老本,有助于更好地进行权重调配。为了批改模板向量,引入了对日志模板标记权重的办法,并利用深度神经网络(DNN)实现了基于模板修改向量的最终检测。咱们的模型在三个数据集上进行了有效性测试,并与两个最先进的模型进行了比拟,评估结果表明,咱们的模型具备更高的准确度。 日志是记录操作系统等 IT 畛域中的操作状态的次要办法之一,是识别系统是否处于衰弱状态的重要资源。因而,对日志做出精确的异样检测十分重要。日志异样个别有三种类型,即异样个体日志、异样日志序列和异样日志定量关系。咱们次要是辨认异样个体日志,即蕴含异样信息的日志。 一般来说,日志的异样检测包含三个步骤: 日志解析、特征提取和异样检测。解析工具提取的模板是文本数据,应将其转换为数字数据,以便于输出到模型中。为此,特征提取对于取得模板的数字示意是必要的。在模板特征提取方面,业界提出了多种办法来实现这一工作。独热编码是最早和最简略的办法之一,能够轻松地将文本模板转换为便于解决的数字示意,然而独热编码是一种效率较低的编码方法,它占用了太多的贮存空间来造成一个零矢量,而且在应用独热编码时,疏忽了日志模板的语义信息。除了这种不便的编码方法外,越来越多的钻研人员利用自然语言解决(NLP)技术来实现文本的数字转换,其中包含词袋,word2vec 等办法。尽管上述办法能够实现从文本数据到数字数据的转换,但在日志异样检测方面依然存在一些缺点。词袋和 word2vec 思考到模板的语义信息,能够无效地取得单词向量,然而它们不足思考模板中呈现的每个模版词的重要性调节能力。此外,深度神经网络(DNN)也被用于模板的特征提取。 咱们的模型次要改良特征提取,同时思考每个标记的模版词语义信息和权重调配,因为标记后果对最终检测的重要性不同。咱们利用两种自然语言解决技术即PoS和命名实体辨认(NER),通过以下步骤实现了模板特色的提取。具体来说,首先通过 FT-Tree 将原始日志音讯解析为日志模板,而后通过 PoS 工具对模板进行解决,取得模板中每个词的 PoS 属性,用于权重向量计算。同时,通过 word2vec 将模板中的标记向量化为初始模板向量,并利用权值向量对初始模板向量进行进一步批改,那些重要的模版词的 PoS属性将有助于模型更好地了解日志含意。对于标记完 PoS 属性的模版词,词对异样信息辨认的重要性是不同的,咱们应用 NER 在模版的 PoS属性中找出重要性高的模版词,并且被 NER 辨认为重要的模版词将取得更大的权重。而后,将初始模板向量乘以这个权重向量,生成一个复合模板向量,输出到DNN模型中,失去最终的异样检测后果。为了缩小对日志解析的人力投入,并为权重计算做筹备,咱们采纳了 PoS 分析方法,在不引入模板提取规定的状况下,对每个模版词都标记一个 PoS 属性。 解析模板的特征提取过程是异样检测的一个重要步骤,特征提取的次要目标是将文本格式的模板转换为数字向量,业界提出了各种模板特征提取办法: One-hot 编码:在 DeepLog 中,来自一组 k 模板ti,i∈[0,k)的每个输出日志模板都被编码为一个One-hot编码。在这种状况下,对于日志的重要信息ti 结构了一个稠密的 k 维向量 V = [ v0,v1,... ,vk-1] ,并且满足j不等于i, j∈[0,k),使得对于所有vi= 1和 vj = 0。 自然语言解决(NLP):为了提取日志模板的语义信息并将其转换为高维向量,LogRobust 利用现成的 Fast-Text 算法从英语词汇中提取语义信息,可能无效地捕获自然语言中词之间的外在关系(即语义相似性) ,并将每个词映射到一个 k 维向量。应用 NLP 技术的各种模型也被业界大部分人应用,如 word2vec 和 bag-of-words 。 ...

January 28, 2023 · 1 min · jiezi

关于nlp:排除-spaCy-的部分组件qbit

前言官网文档:https://spacy.io/usage/spacy-101spaCy GitHub:https://github.com/explosion/...本文环境 Windows 10Python 3.8.10spaCy 3.4.2spcCy 的组件很多,有时咱们并不需要全副组件,能够排除掉一些办法spaCy 内置组件清单:https://spacy.io/usage/proces...查看默认组件 >>> spaNLP = spacy.load("zh_core_web_sm")>>> spaNLP.pipe_names['tok2vec', 'tagger', 'parser', 'attribute_ruler', 'ner']比方只须要词性标注,能够排除其余组件 >>> spaNLP = spacy.load("zh_core_web_md", exclude=['parser', 'ner'])>>> spaNLP.pipe_names['tok2vec', 'tagger', 'attribute_ruler']>>> doc = spaNLP('考察显示:PDA性能金玉其外;败絮其中') for token in doc: print(token.pos_, token.text)NOUN 考察VERB 显示PUNCT :NOUN PDANOUN 性能VERB 金玉其外;败絮其中本文出自 qbit snap

November 4, 2022 · 1 min · jiezi

关于nlp:词对齐任务依附于机器翻译

前情概括词对齐工作分为三大实现形式,详情见词对齐工作概述,此为其一。 NMT附丽下的word alignment说道机翻显然就想到transformer,其encoder-decoder构造其实即使是在应用了lstm等模型上也是这样的,附丽在NMT的word alignment工作就能够间接应用seq2seq的输入对输出的词attention(动图https://www.bilibili.com/vide...,36:00)来表征word alignment。 词互信息(PMI)直算这个是很intuitive的办法,我不应用任何模型,间接用概率统计的办法,算出两词间的互信息值,很多文章里叫PMI(pointwise mutual information),间接用这个值作为根据,填出词相关矩阵。互信息是什么?这个场景下的互信息怎么算?见https://blog.csdn.net/index20...。 附丽NMT的词对齐这种模式的word alignment的最终解决形式是求得word的相关矩阵,用分数示意各个词的相关度,文章中名词叫做soft align。经典seq2seq+att的模型和transformer based模型会在decoder阶段失去以后输入词与原sentence的词的attention,利用此能够组成相关矩阵。对于老式的seq2seq+att来说, 对于transformer来说, 值得注意的一点是,只管bert是在transformer的根底上倒退来的,只取了transformer的encoder,在文字了解、浏览等工作有宽泛应用和很好成绩,然而在机器翻译这一工作上bert encoder的体现 很个别 ,甚至不如lstm等老牌rnn,连带的word alignment也不算好(ACL 2019)。 MT和词对齐都做得好 (EMNLP 2019)文章简介挑明,只管机翻工作NMT完爆SMT,然而词对齐工作概率统计办法依然是下风on the closely related task of word alignment, traditional statistical word alignment models often remain the go-to solution.也就是只管深度学习fancy一点,在词对齐工作上还是打不过概率统计模型。本文提出既能很好的机翻,又能很好的词对齐的模型。 办法在原有的transformer根底上,减少词对齐loss(文章标识为multi-task),和扩增了attention的范畴(文章标识full-context)。 减少词对齐loss:新设立一个相关矩阵$G$,拿transformer的倒数第二层的att做$G$的label,用KL散度做词对齐的loss。扩增attention:transformer原型decoder阶段只计算后方的att,但词对齐是不论先后的,此文扩增了att的范畴,叫做full context。evalgiza++做baseline,在应用了giza++做训练信息后的模型能力在词对齐工作上战胜giza++。 MarianNMT自身是一个汇合了很多seq2seq和transformer的机器翻译的工具箱,word alignment能够依附于机器翻译,应用src的word embedding与target embedding计算词汇的相关矩阵。 从可解释性角度进行word align (ACL 2019)前言文章借鉴了LRP删除法判断重要性的办法(ACL 2016)。LRP最先在cv畛域提出。具体来说,对于cv来说,删掉某一部分使得模型错判,则阐明此局部对于后果是重要的。在nlp中,上文提出间接把word embedding全0示意来“删除”这个word。LRP能给出每个word对后果的相干值。·文章首先摸索了应用bert的att的办法也不咋地,应用transformer做word alignment工作的话有些甚至不如用互信息(PMI)直算: 文章一共比拟了 互信息直算(PMI)用transformer attention他的两种model agnostic的办法,一个叫PD,一个叫EAM PD(prediction difference)办法其办法如下,对于一个填词问题来说,把原sentence的某一个word $x$替换成全0embedding,把替换前后的模型输入词$y$的差值作为x与y的“相关度”。 不同于直算或者attention办法的word alignment,本篇文章间接应用删除word对后果的差别大小来作为两个语言相关矩阵的值。 EAM(Explicit Alignment Model)办法对于一个曾经训练好的NMT模型,源语言的word x和目标语言的word y是这样算的: 而后归一化一下这个$W$是要训练的。 后果fast align是IBM mode 2的一个实现,就是纯概率统计模型的词对齐模型。AER是越小越好,这表只能看出,作者的EAM和PD比应用transformer的attention做词对齐好,然而比不上IBM model 2. ...

June 24, 2022 · 1 min · jiezi

关于nlp:什么是ngram最简理解短小精悍

最简了解gram指句子中的间断的一小部分。you are my ex-girlfriend. 外面,you are my就可以看做是gram。gram中几个单词就说是几gram,you are my是3-gram。n gram指数量是n的gram。 起源在statistical language model,统计语言模型中假使要实现这个填词工作you are my ___,前面词填什么才最合适?转换成统计问题就变成了,一个句子中you are my曾经产生了,前面是什么词才冀望最大。写作$$\argmax_x P(x|w_1,w_2,w_3)$$$w_1$是you、$w_2$是are、$w_3$是my,x是要填的词。而你的抉择是整个语言中的所有的词。 咱们冀望有个模型能间接帮忙给出最合适的答案w,然而这个模型是有参数的,需要求他的参数:$$\argmax_\theta P(w|w_1,w_2,w_3)$$然而假使句子特地长,模型参数的计算量会极其宏大,为了解决计算量宏大的问题,提出假如n-gram:要填的这个词w只和词后面的n个词无关,来加重计算累赘。当然除了n-gram假如,还有bi-gram等其余假如,无非就是假如词与前后n个词相干等等的变体了。 对于下面的问题,假使我应用2-gram,那么参数求解的问题就能够简化到:$$\argmax_\theta P(w|w_2,w_3)$$$w_1$就能够不用参加相干计算。 利用ngram在统计语言模型中利用很宽泛,比方IBM model1/2等。

June 6, 2022 · 1 min · jiezi

关于nlp:EasyNLP开源|中文NLP大模型落地EasyNLP-is-all-you-need

简介:EasyNLP背地的技术框架如何设计?将来有哪些布局?明天一起来深刻理解。 作者 | 临在、岑鸣、熊兮起源 | 阿里开发者公众号 一 导读随着BERT、Megatron、GPT-3等预训练模型在NLP畛域获得注目的成绩,越来越多团队投身到超大规模训练中,这使得训练模型的规模从亿级别倒退到了千亿甚至万亿的规模。然而,这类超大规模的模型使用于理论场景中依然有一些挑战。首先,模型参数量过大使得训练和推理速度过慢且部署老本极高;其次在很多理论场景中数据量有余的问题依然制约着大模型在小样本场景中的利用,进步预训练模型在小样本场景的泛化性仍然存在挑战。为了应答以上问题,PAI团队推出了EasyNLP中文NLP算法框架,助力大模型疾速且高效的落地。 EasyNLP背地的技术框架如何设计?将来有哪些布局?明天一起来深刻理解。 二 EasyNLP简介EasyNLP是PAI算法团队基于PyTorch开发的易用且丰盛的中文NLP算法框架,反对罕用的中文预训练模型和大模型落地技术,并且提供了从训练到部署的一站式NLP开发体验。EasyNLP提供了简洁的接口供用户开发NLP模型,包含NLP利用AppZoo和预训练ModelZoo,同时提供技术帮忙用户高效的落地超大预训练模型到业务。除此之外EasyNLP框架借助PAI团队在通信优化、资源调度方面的深厚积攒,能够为用户提供大规模、鲁棒的训练能力,同时能够无缝对接PAI系列产品,例如PAI-DLC、PAI-DSW、PAI-Designer和PAI-EAS,给用户带来高效的从训练到落地的残缺体验。 EasyNLP曾经在阿里巴巴外部反对10多个BU的业务,同时在阿里云上提供了NLP解决方案和ModelHub模型帮忙用户解决业务问题,也提供用户自定义模型服务不便用户打造自研模型。在通过外部业务打磨之后,咱们将EasyNLP推向开源社区,心愿可能服务更多的NLP算法开发者和研究者,也心愿和社区一起推动NLP技术特地是中文NLP的疾速倒退和业务落地。 EasyNLP is a Comprehensive and Easy-to-use NLP Toolkit[1] EasyNLP次要个性如下: 易用且兼容开源:EasyNLP反对罕用的中文NLP数据和模型,不便用户评测中文NLP技术。除了提供易用简洁的PAI命令模式对前沿NLP算法进行调用以外,EasyNLP还形象了肯定的自定义模块如AppZoo和ModelZoo,升高NLP利用的门槛,同时ModelZoo外面常见的预训练模型和PAI自研的模型,包含常识预训练模型等。EasyNLP能够无缝接入huggingface/ transformers的模型,也兼容EasyTransfer模型,并且能够借助框架自带的分布式训练框架(基于Torch-Accelerator)晋升训练效率。大模型小样本落地技术:EasyNLP框架集成了多种经典的小样本学习算法,例如PET、P-Tuning等,实现基于大模型的小样本数据调优,从而解决大模型与小训练集不相匹配的问题。此外,PAI团队联合经典小样本学习算法和比照学习的思路,提出了一种不削减任何新的参数与任何人工设置模版与标签词的计划Contrastive Prompt Tuning,在FewCLUE小样本学习榜单获得第一名,相比Finetune有超过10%的晋升。大模型常识蒸馏技术:鉴于大模型参数大难以落地的问题,EasyNLP提供常识蒸馏性能帮忙蒸馏大模型从而失去高效的小模型来满足线上部署服务的需要。同时EasyNLP提供MetaKD算法,反对元常识蒸馏,晋升学生模型的成果,在很多畛域上甚至能够跟老师模型的成果持平。同时,EasyNLP反对数据加强,通过预训练模型来加强指标畛域的数据,能够无效的晋升常识蒸馏的成果。三 EasyNLP框架特点1 整体架构 如图所示,EasyNLP架构次要有如下几个外围模块: 根底模块:提供了预训练模型库ModelZoo,反对罕用的中文预训练模型,包含BERT,MacBERT,WOBERT等;也提供罕用的NN模块,不便用户自定义模型;应用层:AppZoo反对常见的NLP利用比方说文本分类,文本匹配等;EasyNLP反对预训练模型落地工具,包含小样本学习和常识蒸馏,助力大模型疾速落地,这里也集成了多个PAI团队自研的算法;NLP利用和解决方案:提供了多个NLP解决方案和ModelHub模型帮忙用户解决业务问题;工具层:能够反对本地拉起服务,也能够在阿里云产品上部署和调用,比方说PAI-DLC、PAI-DSW、PAI-Designer和PAI-EAS,给用户带来高效的从训练到落地的残缺体验。2 大模型常识蒸馏技术随着BERT等预训练语言模型在各项任务上都获得SOTA成果,大规模预训练模型曾经成为 NLP学习管道中的重要组成部分,然而这类模型的参数量太大,而且训练和推理速度慢,重大影响到了须要较高QPS的线上场景,部署老本十分高。EasyNLP框架集成了经典的数据加强和常识蒸馏算法,使得训练出的小模型在相应工作行为上可能迫近大模型的成果。 因为现有大部分的常识蒸馏工作都聚焦在同畛域模型的蒸馏,而疏忽了跨畛域模型对指标蒸馏工作成果的晋升。PAI团队进一步提出了元常识蒸馏算法MetaKD(Meta Knowledge Distillation),将跨畛域的可迁徙常识学出,在蒸馏阶段额定对可迁徙的常识进行蒸馏。MetaKD算法使得学习到的学生模型在相应的畛域的效果显著晋升,迫近老师模型的成果。这一算法的外围框架图如下所示: 其中,MetaKD算法包含两个阶段。第一个阶段为元老师模型学习(Meta-teacher Learning)阶段,算法从多个畛域的训练数据协同学习元老师模型,它对每个畛域的样本都计算其典型得分(Prototype Score),使更具备跨畛域典型性的样本在学习阶段有更大的权重。第二个阶段为元蒸馏(Meta-distillation)阶段,将元老师模型选择性地蒸馏到特定畛域的学习工作上。因为元老师模型可能无奈做到在所有畛域上都有准确的预测成果,咱们额定引入了畛域专业性权重(Domain-expertise Weight),使元老师模型只将置信度最高的常识迁徙到学生模型,防止学生模型对元老师模型的过拟合。 下图展现了MetaKD算法在MNLI的5个畛域数据集的跨工作蒸馏成果。由后果可见,MetaKD蒸馏出的BERT-Small模型的和原始BERT模型相比,在放弃模型精度值均匀只降落1.5%的前提下参数缩小了87%,大大减少了部署的压力。 目前,MetaKD算法也曾经集成到EasyNLP框架中开源。 常识蒸馏实际详见[2]。 3 大模型小样本学习技术预训练语言模型规模的扩充,使得这一类模型在自然语言了解等相干工作成果一直晋升。然而,这些模型的参数空间比拟大,如果在上游工作上间接对这些模型进行微调,为了达到较好的模型泛化性,须要较多的训练数据。在理论业务场景中,特地是垂直畛域、特定行业中,训练样本数量有余的问题宽泛存在,极大地影响这些模型在上游工作的准确度。为了解决这一问题,EasyNLP框架集成了多种经典的小样本学习算法,例如PET、P-Tuning等,实现基于预训练语言模型的小样本数据调优,从而解决大模型与小训练集不相匹配的问题。 此外,PAI团队联合经典小样本学习算法和比照学习的思路,提出了一种不削减任何新的参数与任何人工设置模版与标签词的计划Contrastive Prompt Tuning (CP-Tuning)。这一算法的外围框架图如下所示: 如上图,CP-Tuning算法放弃了经典算法中以“[MASK]”字符对应预训练模型MLM Head的预测输入作为分类根据,而是参考比照学习的思路,将句子通过预训练模型后,以“[MASK]”字符通过预训练模型后的间断化表征作为features。在小样本工作的训练阶段,训练指标为最小化同类样本features的组内间隔,最大化非同类样本的组间间隔。在上图中,[OMSK]即为咱们所用于分类的“[MASK]”字符,其优化的features示意为[EMB]。因而,CP-Tuning算法不须要定义分类的标签词。在输出侧,除了输出文本和[OMSK],咱们还退出了模版的字符[PRO]。与经典算法不同,因为CP-Tuning不须要学习模版和标签词之间的对应,咱们间接将[PRO]初始化为工作无关的模版,例如“it is”。在模型训练过程中,[PRO]的示意能够在反向流传过程中自动更新。除此之外,CP-Tuning还引入了输出文本的Mask,示意为[TMSK],用于同时优化辅助的MLM工作,晋升模型在小样本学习场景下的泛化性。CP-Tuning算法的损失函数由两局部组成: 如上所示,两个局部别离为Pair-wise Cost-sensitive Contrastive Loss(PCCL)和辅助的MLM损失。咱们在多个GLUE小样本数据集上进行了验证,其中训练集中每个类别限度只有16个标注样本。从下述后果能够看出,CP-Tuning的精确度超过了经典的小样本学习算法,也比规范Fine-tuning算法的精确度高10%以上。 目前,除了咱们自研的CP-Tuning算法之外,EasyNLP框架中集成了多种经典小样本学习算法例如PET、P-tuning等。 小样本学习实际详见[3]。 4 大模型落地实际上面咱们给出一个示例,将一个大的预训练模型(hfl/macbert-large-zh)在小样本场景上落地,并且蒸馏到仅有1/100参数的小模型上。如下图所示,一个大模型(3亿参数)在一个小样本场景上原始的Accuracy为83.8%,通过小样本学习能够晋升7%,达到90.6%。同时,如果用一个小模型(3百万参数)跑这个场景的话,成果仅有54.4%,能够把成果晋升到71%(晋升约17%),inference的工夫相比大模型晋升了10倍,模型参数仅为原来的1/100。 代码详见[4]。 四 利用案例EasyNLP撑持了阿里巴巴团体内10个BU20多个业务,同时过PAI的产品例如PAI-DLC、PAI-DSW、PAI Designer和PAI-EAS,给团体用户带来高效的从训练到落地的残缺体验,同时也反对了云上客户自定定制化模型和解决业务问题的需要。针对私有云用户,对于入门级用户PAI-Designer组件来通过简略调参就能够实现NLP模型训练,对于高级开发者,能够应用AppZoo训练NLP模型,或者应用预置的预训练模型ModelZoo进行finetune,对于资深开发者,提供丰盛的API接口,反对用户应用框架进行定制化算法开发,能够应用咱们自带的Trainer来晋升训练效率,也能够自定义新的Trainer。 ...

April 29, 2022 · 1 min · jiezi

关于nlp:Rasa对话机器人连载一-第121课Rasa对话机器人Debugging项目实战之电商零售对话机器人运行流程调试全程演示1

Rasa 3.X对话机器人Debugging我的项目全生命周期调试实战 Gavin大咖2022-03-20 本电子书由段智华依据Gavin大咖Rasa AI上课内容整顿编写。https://blog.csdn.net/duan_zh... NLP on Transformers高手之路137课 Rasa 3.x 源码高手之路 常识店铺:https://appybiyrtzd9613.h5.xi... Rasa培训、Rasa课程、Rasa面试、Rasa实战、Rasa对话机器人Debugging我的项目实战之电商批发对话机器人运行流程调试全程演示 -1本节课解说一个新的我的项目电子商务或零售业的智能业务对话机器人,实现一些智能业务对话外围的性能,例如,查问订单的状态,提交订单等,如果从信息检索的角度,需查问产品的库存(inventory)获取符合要求的产品;如果是服务于具体消费者,例如做电子商务,或者服装销售,可能须要维持用户的关系,有时候会提供订阅相干的性能,咱们在这个我的项目中,这些性能咱们都会实现,如果实现了这些性能,而且读者具备咱们后面解说的对于Rasa的架构,还有内核的一些能力(读者能够学习NLP on Transformers高手之路137课(模型、算法、论文、源码、案例 + 1年答疑)常识店铺的课程内容,https://appybiyrtzd9613.h5.xi...),实践上讲做任意级别的,无论是零售业还是电子商务类型类型的智能业务对话机器人都不会有问题,只不过理论在做的过程中,可能要对数据的品质特地留心或者是注意,同时要和第三方的 API整合的很好,而数据的品质或者第三方的API,可能只须要提供标准,由大数据工程师去解决,第三方接口API的整合,绝大多数时候是由微服务中心提供,微服务调用个别通过Jason及Restful的形式,在一个失常的曾经系统化运行的公司,中等规模、中上等规模或者大规模的公司,在分工合作的状况下,这些都不是问题,那咱们聚焦的外围是什么?聚焦的外围包含三点:第一点就是语言了解,是否很精密的了解零售业或者说电子商务方面的或者是任意类型的基于网络的服务,是否精密的了解任意用户的和输出的信息,判断他的用意以及要做的事件,并收集信息来实现的事件。第二点就是决策零碎对话管理系统。第三点就是异样解决以及版本迭代。可能有些同学会感觉到有点意外,为什么?因为智能业务对话机器人,或者说一所有类型的业务对话机器人,它都有一个新的简单维度,这个维度就是人的语言的不确定性,面临这种不确定性,咱们具体该怎么解决?在Rasa后期的版本,例如Rasa 1.0或者Rasa 2.0这个版本的时候,实践上讲不大可能笼罩用户的所有的状况的。用户如果说了你不了解的话,或者说他说的话,你不怎么了解,该怎么去解决这些内容,这是继续花工夫的中央,要继续的投入工作。做一个智能业务对话机器人, 从工作的角度讲,是一个能够可能让开发者继续一直奉献价值的一个工作。Rasa visualize工具学习首先,咱们运行rasa train命令训练模型: 编辑 切换为居中增加图片正文,不超过 140 字(可选) 在模型训练的过程中,运行rasa visualize命令启动可视化工具,看一下rasa整体基于story和rules相干的流程。 编辑 切换为居中增加图片正文,不超过 140 字(可选) 从整个BOT的宏观层面,次要是基于 rules和stories,以及基于domain和action进行撑持。 编辑增加图片正文,不超过 140 字(可选) 如图所示是Rasa visualize 显示的内容,这是用户和Bot进行交互的设计图,这只是一个维度,不能展示所有的货色,然而能够很分明的展现Bot具体有哪些门路,能做哪些事件,其中start节点是会话开始的终点。 编辑 切换为居中增加图片正文,不超过 140 字(可选) 一些打招呼的根底场景这里不再赘述,能够看几个很重要的场景:例如Subscribe to update、what's new on the site?、What's your Inventory(查问库存)、fallback、actually can I check the status of my order(查看订单状态)等,在批发业务、电子商务、服务餐饮等行业,这都是很罕用的。如果是餐饮行业(例如美团),订单中对话机器人的的思维逻辑是一样的,只是语言的内容不是太一样,思维逻辑一样是指作为一个对话机器人开发者,对开发者的能力要求是一样的。如下图所示,基本上都是跟form表单相干的, order_status_form示意订单状态表单,products _stock_form示意库存信息, Product_update_form示意订单产品的状态, return_form示意退回, cancel_form示意勾销。 ...

April 21, 2022 · 7 min · jiezi

关于nlp:达观数据CTO-纪达麒基于阿里云计算底座打造智能办公机器人

“机器人”一词最早呈现在1921年卡雷尔·卡佩克(Karel Capek)创作的一部科幻剧中,而在迷信智能技术创新倒退百年后的明天,智能机器人曾经成为了一个能够利用于各个行业的前沿科技产品,代替人类从事繁琐反复的枯燥劳动。 随着人工智能技术的提高,智能机器人产业如雨后春笋般蓬勃发展,政策领导、社会环境、科技冲破和待业局势均呈上升姿势,目前智能机器人已在制作、办公等寰球范畴内的多个畛域占有“一席之地”。大势所趋,同时也在行业刚需的促使下,达观数据应运而生。 达观数据是一家为企业提供各类场景智能办公机器人的国家高新技术企业,荣获中国人工智能畛域最高奖“吴文俊人工智能奖”、国家级专精特新“小伟人”企业等荣誉资质。达观利用先进的自然语言解决(NLP)、光学字符识别(OCR)、机器人流程自动化(RPA)、常识图谱等技术,为大型企业和政府机构提供办公流程自动化、文档智能审阅、文字辨认、企业级垂直搜寻、智能举荐等智能办公机器人产品,让计算机帮助人工实现业务流程自动化,大幅度提高企业效率与智能化程度。 【图】达观数据CTO 纪达麒 云原生企业,达观数据七年继续抉择阿里云实际上,达观数据是一家云原生企业,2015年成立以来始终抉择阿里云作为底层基础设施的撑持,“有了阿里云的撑持,也让达观数据可能更加专一地进行业务场景研发。”达观数据CTO 纪达麒说道。 谈到当初为何抉择阿里云时,纪达麒示意,“达观数据刚刚成立初期,只有10集体,过后的基础设施有两个抉择:自建机房或者上云。但思考到自建机房初始投入老本很高,还需装备业余的运维能力,团队成员仍心愿将更多的精力投入到产品研发下面,所以抉择了上云。而阿里云作为业界上云首选云厂商,自然而然就成了达观数据的第一抉择,也是没有过多探讨和犹豫的第一抉择。” 随着业务倒退,在阿里云的单干过程中团队成员们发现阿里云的服务器极为稳固和牢靠,服务响应迅速,即便在非工作工夫也会有业余的人员积极支持和配合排查问题。而随着业务倒退,达观数据越来越多的SaaS客户也都抉择了阿里云,与客户抉择同一云平台,还能够通过内网进行传输、缩小提早,客户也领有了更好的体验,这也是达观数据继续抉择阿里云的起因。 神龙架构,超强算力助力达观数据减速业务翻新达观数据的外围是做文本智能解决,通过自研的NLP、OCR、RPA以及多个行业常识图谱小样本学习算法,胜利为百余家企业客户提供智能化服务,无效实现了规模化的商业利用。但客户的诉求和本身技术的翻新要求在一直减少,导致在计算性能、资源的弹性和稳定性方面的问题也面临着不同的挑战。 对于智能办公机器人,企业客户的诉求是心愿又快、又准、又稳固地进行数据处理,比方excel表格解析、word文档内容审核等工作,这也是最常见的场景,实质上是数据录入。基于此客户诉求,就要求达观数据一直降级算法,打磨产品,深耕各行业多种场景,以便更好地服务客户;另一方面对基础设施底层也提出了更高的要求,包含足够的算力、稳固的环境、监控报警等等。 在AI算法这块,不论是NLP(自然语言解决技术)还是OCR(文字辨认技术),都须要大量的计算资源和比拟多的CPU机器,但自建机房的初始老本过高,还须要搭配业余的运维能力进行辅助,依靠阿里云自研的软硬一体的神龙架构提供的超强算力和高稳定性,帮忙达观数据无效晋升了AI算法的研发效率,极致的弹性也让达观数据能够依据客户的须要,随时地疾速扩容,在算力保障的同时,超强的稳定性也让达观数据为客户提供了更加稳固、平安的服务。 目前,达观智能办公机器人曾经宽泛使用于金融、制作、通信、法律、审计、媒体、银行、政府等多种文字密集型行业。其中,针对券商客户,业务中波及了大量非结构化银行流水数据,业务人员须要从中获取要害流水数据信息,能力剖析企业流水真实性状况、股权穿透状况以及企业现金流状况,达观数据的流水智能核查零碎能使零碎平台的综合工作效率较人工晋升达人员的5-10倍;使得其券商客户体验进一步晋升提高,无缝连接客户外围诉求,满足客户要求。 继续翻新,达观数据为行业客户赋能 基于阿里云平台,达观数据打造达观智能服务引擎,提供更加翻新的企业服务,已宽泛用于金融、政务、制作、医疗、教育供应链等行业;同时打造了达观产品体系,欠缺了客户的服务流程,做到了指标晋升、产品晋升、以及业务晋升。 纪达麒示意:“将来,达观数据将与阿里云持续严密单干,实现技术创新,让反复的工作和繁琐的办公流程更加自动化和智能化,为企业客户带来更大价值,为数字化办公行业保驾护航。”

March 31, 2022 · 1 min · jiezi

关于nlp:隐马尔科夫模型

HMM根底隐马尔科夫模型(Hidden Markov model),HMM是很风行的序列模型,广泛应用在语音辨认等畛域,也能够用在词性标注、实体辨认等文本问题中。 工夫序列数据工夫序列数据(time series data)能够认为是沿着工夫的维度而变动的数据,列如股价、气温、语音、 文本等。时序的数据它的长度是不确定的,比方两个人说同一句话,可能有的人说的比拟快,有的人比较慢。 所以咱们在将逻辑回归或者SVM利用在这类数据上理论是会损失一些数据的。非时序数据比方像图片,一个人的特色等,当咱们应用它们的时候,它的维度是固定的。时序类的模型,从传统机器学习角度来说有HMM、CRF,从深度学习角度来说有RNN、LSTM。 HMM模型介绍上图是一个HMM模型的经典构造,它由下层的隐变量和上层的观测值组成。隐变量之间的传递叫作状态转移,隐变量到观测值之间的传递叫作状态生成,所以它也是生成模型。能够看到这个模型是有向的、生成的模型。HMM是一个概率图模型,在\( t=1 \)时刻: \( z_1 \)示意一个状态,然而它有多种状态,示意每种状态有着对应的概率\( z_1 \) to \( z_2 \),示意状态的转移,由前一种状态转移到下一种状态也有着对应的概率\( z_1 \) to \( x_1 \),示意在这种状态下生成了一个值,这个值也有不同的取值(通常可分为间断和离散值),在这种状态下生成了这种值也有着对应的概率。由以上介绍不难晓得HMM模型存在三大次要问题: 一是在已知模型参数的条件下,对于任何一个观测值序列,去推出背地状态转移的序列,这种问题也叫inference 或者decoding。比如说如果这个序列是针对语音辨认,那么咱们能够依据听到的音乐或人的声音来反推出他到底说了哪些单词或者哪些句子。二是给定观测值,咱们去预测出或者估算出整个模型的参数。三是计算某一个观测值序列的边缘概率。利用举例 Part of Speech Tagging(POS)当咱们的问题变成词性标注时,咱们关怀的是:给定一句话,晓得观测值(单词)\( x_1 到 x_n \)到底是什么词性。能够晓得在这个例子里\( z_i \)是离散值。接下来看咱们的三大问题: 给定咱们句子,咱们须要去反推出它每个单词的词性。这个问题也叫inference or decoding问题(怎么解决,维特比算法)给定一句话之后,咱们怎么去预计模型的参数。\( p(x_1x_2...x_n) \)呈现的概率是多少请看对下面第二个问题的详解:参数\( \theta = (A,B,\pi) \),A示意的是词性之间的转换的概率(transition probability): A是状态转移概率矩阵,也叫作transiton probability。咱们要晓得状态之间的转移不是随机产生的,而是更有可能转移到其它的状态里。\( A_{m\times m} \),m示意词性(状态)的品种个数,每一行示意一个词性(状态),每一行加起来为1。矩阵里每一个点示意从前一个词性(状态)转换到下一个词性(状态)的概率。B是生成概率(emission probability): 在\( z_1 \)状态下咱们生成的单词\( w_1 \)是某种词性的概率,它能够表白为一个概率矩阵\( B_{m\times v} \),m示意词性的品种个数,v示意词库的大小,每一行示意每一种词性对应词库里每一个单词的概率,每一行加和为1。矩阵里的每一个点示意在某个状态下(在这个例子中是单词词性)看到一个观测值(在这个例子中是单词)的概率是多少。值得注意的是生成的值也能够是间断值,对于连续型的变量咱们是不能写成矩阵的模式的,这时该当借用高斯混合(GMM)模型来解决。\( \pi \)示意句子里第一个单词(观测值)呈现某个词性(状态)的概率: 能够了解为\( \pi \)是一个初始化数组,即\( \pi = [\pi_1,\pi_2...\pi_i...\pi_m]\),加和为1在这个模型中,\( x\to \theta \),这个过程叫预测,parameter estimate ;\( x\to z \),这个过程叫infer ...

March 11, 2022 · 2 min · jiezi

关于nlp:文本表示

文本示意对于自然语言解决各类利用,最根底的工作是文本示意。文本是不能间接作为模型的输出的,都是要转化成向量的模式再导入到模型中训练。所谓文本的示意就是钻研如何将文本示意成向量或者矩阵的模式。文本示意的最小单元是单词,其次是短语、句子、段落。咱们须要懂得把这些都示意成向量的模式,其中,单词的表示法是最根底的,对于句子或者更长的文本说,其向量示意都依赖于单词的示意。单词的示意能够有多重办法,如独热编码、TF-IDF等等。 单词的示意独热编码是能够用来示意一个词向量。首先咱们须要依据文本构建本人的词库,词库的大小决定向量矩阵的大小,每个单词都有本人独特的向量示意,每个向量只有一个地位示意为1,其余全为0,列如词库的大小是5,某个单词向量能够示意为\( [0,0,1,0,0] \)。词库中所蕴含的单词的先后顺序并不影响后续工作。独热编码尽管简略,然而也存在许多问题: 因为大量0存在,极度稠密每个单词示意成长度为|V|,|V|是词库的大小无奈比拟语义类似度句子的示意晓得了单词的示意就能够晓得句子的示意,一个句子由多个单词组成。记录一下句子中单词是否呈现,咱们就能够示意这个句子的向量,当然,某些时候也须要记录单词呈现的次数。但这种表示法也存在一些问题,例如: 没有思考到一个单词的重要性没有记录单词呈现个数的表示法叫Boolean function,记录单词呈现个数的表示法叫作Count vectorizerfrom sklearn.feature_extraction.text import CountVectorizer#corpus 语料库corpus = ['I like this course,', 'I like this game,', 'I like this course,but I also like that game' ]#构建countvectorizer objectvectorizer = CountVectorizer()#失去每个文档的count向量,X为稠密矩阵X = vectorizer.fit_transform(corpus)#打印词典print(vectorizer.get_feature_names())#['also', 'but', 'course', 'game', 'like', 'that', 'this']#打印每个文档的向量print(X.toarray()) [[0 0 1 0 1 0 1] [0 0 0 1 1 0 1] [1 1 1 1 2 1 1]]print(X) (0, 4) 1 (0, 6) 1 (0, 2) 1 (1, 4) 1 (1, 6) 1 (1, 3) 1 (2, 4) 2 (2, 6) 1 (2, 2) 1 (2, 3) 1 (2, 1) 1 (2, 0) 1 (2, 5) 1文档示意 TF-IDFTF-IDF示意思考了单词的权重,也能够认为是品质。但并不是呈现的越多就越重要,也并不是呈现的越少就越不重要。具体表示法请看下式(1): ...

March 5, 2022 · 1 min · jiezi

关于nlp:词向量技术

词向量根底单词的示意独热编码存在一下问题: 无奈以一个向量的形式示意一个单词的含意向量维度高,且十分稠密没有掂量两个单词之间的语义类似度因为独热编码的毛病,一种新的形式-词向量(也叫分布式示意)示意形式如下: 独热编码词向量(分布式示意)咱们[1,0,0,0,0][0.1,0.2,0.4,0.2]爬山[0,1,0,0,0][0.2,0.3,0.1,0.2]当有了词向量的分布式的示意之后,两个单词之间的类似度是能够算进去的,当然,成果取决于词向量的品质。这个词向量的维数是由训练词向量的模型人工定义的,学习词向量的模型如Bert,Glove,SkipGram,ELMo从上能够看到: 分布式示意时向量是浓密的,很少有0分布式示意时维数远远小于独热编码词向量肯定水平上能够示意这个单词的含意,则从肯定水平上就能够示意两个单词之间的类似度总结如下: 独热编码分布式示意无奈示意单词额的含意能够认为示意单词的含意向量十分稠密向量浓密向量长度等于词库的长度向量长度是超参数不须要训练须要训练SkipGram模型参考论文:Efficient Estimation of Word Representations in Vector Space SkipGram模型的外围是通过中心词来预测四周的单词。也就是说如果咱们的词向量训练地比拟精确,预测成果就比拟强,实际上这就是咱们的指标函数。 为了便于了解,为什么通过中心词能够预测出四周的单词?咱们来理解它背地的逻辑:这里有一个假如叫做分布式的假如,这个分布式的假如意味着如果两个单词挨在一起,那有可能两个单词的含意是比拟相似的,所以我可能通过一个单词预测出它类似的单词。 上面记录Skipgram的推导:假如咱们存在这样的数据集{\(s_1,s_2,s_3,s_4,s_5\)},当然咱们的数据不可能这么少,数据通常都是一篇一篇的文章或者间接复制网页上的一段话也是咱们数据。 通过挨着的词语相相似的思维,用以上的样本想要训练出词向量,咱们能够这样做:最大可能上面的条件概率乘积: $$ p(s2|s1)·p(s1|s2)·p(s3|s2)·p(s2|s3)·p(s3|s4)·p(s5|s4)·p(s4|s5)$$ 能够发现,咱们对咱们的P(相邻词|中心词)作了一个循环,由此能够推出更通用性的公式:w-中心词,c-属于w上下文的词 $$L(\theta) = MLE \prod_{w\in Text}\prod_{c\in Context}p(c|w;\theta)\tag{1}$$ $$\theta = arg\,\max_{\theta} \sum_{w\in Text} \sum_{c\in Context}log p(c|w;\theta)\tag{2}$$ 对于条件概率 \( p(c|w;\theta)\)咱们心愿能示意为\( \theta \)的状态,所以咱们要晓得它的属性以写出适合的状态,个别它具备以下属性: 概率值在0~1之间\( \sum_{i=1}^n p(c|w;\theta) = 1 \)(w,c)类似的时候,咱们心愿它的值越大(w,c)不类似的时候,咱们心愿它的值越小所以咱们能够采纳softmax的状态: $$softmax = \frac {e^{z_i}}{\sum\limits_{c=1}^c e^c}\tag{3}$$ \( ( p(c|w;\theta) \)就能够写为下式(4):c'示意w的全副相邻词,\( u_c \)示意c的embedding,\( v_w \)示意中心词w的embedding当w和c类似的时候\( u_c v_w \)的内积也越大,反则相同。在这里,咱们采纳余弦类似度来掂量相似性,两向量愈类似,点积也愈大。 $$( p(c|w;\theta) = \frac {e^{u_c v_w}} {\sum\limits_{c'} e^{u_{c'} v_w}}\tag{4}$$ ...

March 4, 2022 · 1 min · jiezi

关于nlp:恒源云SimCSE对比学习只需要-Dropout

文章起源 | 恒源云社区(恒源云,专一 AI 行业的共享算力平台) 原文地址 | Dropout 原文作者 | Mathor 要说2021年上半年NLP最火的论文,想必非《SimCSE: Simple Contrastive Learning of Sentence Embeddings》莫属。SimCSE的全称是Simple Contrastive Sentence Embedding Sentence EmbeddingSentence Embedding始终是NLP畛域的一个热门问题,次要是因为其利用范畴比拟宽泛,而且作为很多工作的基石。获取句向量的办法有很多,常见的有间接将[CLS]地位的输入当做句向量,或者是对所有单词的输入求和、求均匀等。但以上办法均被证实存在各向异性(Anisotropy)问题。艰深来讲就是模型训练过程中会产生Word Embedding各维度表征不统一的问题,从而使得取得的句向量也无奈间接比拟 目前比拟风行解决这一问题的办法有: 线性变换:BERT-flow、BERT-Whitening。这两者更像是后处理,通过对BERT提取的句向量进行某些变换,从而缓解各向异性问题比照学习:SimCSE。 比照学习的思维是拉近类似的样本,推开不类似的样本,从而晋升模型的句子示意能力Unsupervised SimCSE SimCSE利用自监督学习来晋升句子的示意能力。因为SimCSE没有标签数据(无监督),所以把每个句子自身视为类似句子。说白了,实质上就是\( (本人,本人) \)作为正例、\( (本人,他人)\)作为负例来训练比照学习模型。当然,其实远没有这么简略,如果仅仅只是完全相同的两个样本作正例,那么泛化能力会大打折扣。一般来说,咱们会应用一些数据扩增伎俩,让正例的两个样本有所差别,然而在NLP中如何做数据扩增自身也是一个问题,SimCSE提出了一个极为简略优雅的计划:间接把Dropout当做数据扩增! 具体来说,\( N\)个句子通过带Dropout的Encoder失去向量\( \boldsymbol{h}_1^{(0)},\boldsymbol{h}_2^{(0)},…,\boldsymbol{h}_N^{(0)} \),而后让这批句子再从新过一遍Encoder(这时候是另一个随机Dropout)失去向量\( \boldsymbol{h}_1^{(1)},\boldsymbol{h}_2^{(1)},…,\boldsymbol{h}_N^{(1)} \) ,咱们能够\( (\boldsymbol{h}_i^{(0)},\boldsymbol{h}_i^{(1)}) \)视为一对(略有不同的)正例,那么训练指标为其中,\( \text{sim}(\boldsymbol{h}_1, \boldsymbol{h}_2)=\frac{\boldsymbol{h}_1^T\boldsymbol{h}_2}{\Vert \boldsymbol{h}_1\Vert \cdot \Vert \boldsymbol{h}_2\Vert} \)。实际上式(1)如果不看\( -\log \)和\( \tau \)的局部,剩下的局部十分像是\( \text{Softmax} \)。论文中设定\( \tau = 0.05 \),至于这个\( \tau \)有什么作用,我在网上看到一些解释: 如果间接应用余弦类似度作为logits输出到\( \text{Softmax} \),因为余弦类似度的值域是\( [-1,1] \),范畴太小导致\( \text{Softmax} \)无奈对正负样本给出足够大的差距,最终后果就是模型训练不充沛,因而须要进行修改,除以一个足够小的参数\( \tau \)将值进行放大超参数\( \tau \)会将模型更新的重点,聚焦到有难度的负例,并对它们做相应的惩办,难度越大,也即是与\( {h}_i^{(0)} \)间隔越近,则调配到的惩办越多。其实这也比拟好了解,咱们将\( \text{sim}(\boldsymbol{h}_i^{(0)},\boldsymbol{h}_j^{(1)}) \)除以\( \tau \)相当于同比放大了负样本的logits值,如果\( \tau \)足够小,那么那些\( \text{sim}(\boldsymbol{h}_i^{(0)},\boldsymbol{h}_j^{(1)}) \)越凑近1的负样本,通过\( \tau \)的放大后会占主导集体感觉没有严格的数学证实,单从理性的角度去思考一个式子或者一个符号的意义是不够的,因而在查阅了一些材料后我将\( \tau \)这个超参数的作用整顿成了另一篇文章:Contrastive Loss中参数\( \tau \)的了解总结一下SimCSE的办法,个人感觉切实是太奇妙了,因为给两个句子让人类来判断是否类似,这其实十分主观,例如:“我喜爱北京”跟“我不喜爱北京”,请问这两句话到底相不类似?模型就像是一个刚出生的孩子,你教它这两个句子类似,那它就认为类似,你教它不类似,于是它当前见到相似的句子就认为不类似。此时,模型的性能或者准确度与训练过程、模型构造等都没有太大关系,真正影响模型预测后果的是人,或者说是人标注的数据 ...

December 29, 2021 · 2 min · jiezi

关于nlp:通用模型全新框架WavLM语音预训练模型全解

(转载自微软研究院AI头条) 编者按:深度神经网络模型近年来尽管在各项语音工作上都有所停顿,但却仍依赖于大量的标注数据。而自监督训练方法的呈现和倒退则在肯定意义上缓解了该问题。近日,微软亚洲研究院与微软 Azure 语音组的研究员们在判别式自监督预训练方法的根底上,沿用研究院自然语言计算组在自然语言预训练的 Transformer 模型架构,提出了全新的 Denoising Masked Speech Modeling 框架。通过94,000小时的英语语音进行预训练,通用语音预训练模型 WavLM 在 SUPERB 所有13项语音工作测评中超过先前所有模型,排名第一,并在其它4个不同的语音经典测评数据集上都获得了很好成果。 近两年来,预训练模型在自然语言解决和计算机视觉畛域引起了学术界和工业界的宽泛关注。利用大规模无监督数据进行训练的预训练模型有着十分好的泛化性,只需在小规模标注数据上进行微调,就能够在相应工作上有所提高。尽管之前预训练模型在语音解决畛域曾经获得了一些停顿,但其只在语音辨认工作上进行了验证。 为此,微软亚洲研究院与微软 Azure 语音组的研究员们提出了通用语音预训练模型 WavLM。通过 Denoising Masked Speech Modeling 框架,研究员们将 WavLM 适配到了17个工作上,并且都获得了十分好的成果,这使得语音预训练模型的有效性从语音辨认工作延长到了非内容辨认的语音工作。基于在94,000小时无监督的英文数据上进行训练,WavLM 还在多个语音相干的数据集上都获得了 SOTA 的问题。目前,该模型曾经开源,并集成到了 Hugging Face 的 Transformer 框架中不便使用者调用。 论文链接:https://arxiv.org/pdf/2110.13...开源链接:https://aka.ms/wavlmHugging Face集成链接:https://huggingface.co/micros...从自监督预训练方法看语音工作生成式&判别式自监督预训练方法在过来的几年中,深度神经网络模型尽管在语音的多种工作上都获得了突破性停顿,但却仍旧受制于模型训练时所需的大量标注数据。自监督预训练方法的呈现在肯定水平上缓解了这一问题。该办法先应用大规模无监督数据进行预训练,随后将训练好的模型在小规模标注数据上进行微调。已有钻研表明,应用自监督预训练能够晋升多种语音工作的性能。 依据预训练指标的不同,自监督预训练方法可分为生成式和判别式。生成式包含通过间断或离散的隐变量还原原始的语音特色,比方自编码器能够预测将来时刻或被掩码遮蔽的语音特色。而判别式则通过比照学习或者预测离散化索引(id)的形式对模型进行预训练,例如 wav2vec2.0 和 HuBERT。将 wav2vec2.0 和 HuBERT 两种办法在6万小时的数据上进行预训练后,能够发现其在语音辨认数据集 Librispeech 上获得了 SOTA 的性能。这两种办法均应用了声波作为模型输出,并通过 CNN 模块进行降采样,降采样后的特色被随机遮蔽(mask)并输出进 Transformer 编码器。wav2vec2 应用了比照学习进行模型训练,通过引入一个向量量化器(vector quantizer)对未遮蔽的 CNN 输入进行离散化,并在被遮蔽地位的 Transformer 的输入示意上计算 InfoNCE 损失,其中正样本来自该地位离散化后的向量,负样本来自于该语音序列中其余地位的离散化向量。而 HuBERT 则借鉴了 BERT 当中的 mask language model 的损失函数,并应用 Transformer 预测被遮蔽地位的离散 id 来训练模型。HuBERT 应用了迭代的形式生成训练指标,即每一帧的离散 id。微软亚洲研究院的研究员们首先对语音的 MFCC 特色进行了 k-means 聚类来生成学习第一代 HuBERT 模型的离散 id,随后对已训练好的上一代模型的输入示意进行聚类并生成新的id来进行下一轮次的学习。 ...

December 27, 2021 · 2 min · jiezi

关于nlp:NLP-开源形近字算法补完计划完结篇

前言所有的故事都有开始,也终将完结。 本文将作为 NLP 汉字类似度的完结篇,为该系列画上一个句号。 起-NLP 中文形近字类似度计算思路 承-中文形近字类似度算法实现,为汉字 NLP 尽一点绵薄之力 转-当代中国最贵的汉字是什么? 不足之处之所以有本篇,是因为上一次的算法实现存在一些有余。 巴别塔《圣经》中有对于巴别塔建造,最终人们因为语言问题而复工的故事。 创11:6 “看哪!他们成为一样的人民,都是一样的语言,现在既作起这事来,当前他们所要作的事,就没有不成就的了。创11:7 咱们上来,在那里变乱他们的口音,使他们的语言彼此不通。”创11:8 于是,耶和华使他们从那里扩散在全地上;他们就复工不造那城了。为了防止语言问题,我一开始就实现了一个 exe4j 打包的比照程序,本人跑的很顺畅。 小伙伴一跑,运行失败。各种环境配置一顿操作,最初还是报错。 于是,我写了一个 python 繁难版本,便于做 NLP 钻研的小伙伴们学习。 https://github.com/houbb/nlp-hanzi-similar/releases/tag/pythnjava 是一种语言,python 是一种语言。 编程语言,让人和机器之间能够沟通,却让人与人之间产生了隔膜。 拆字在 当代中国最贵的汉字是什么? 一文中,咱们首次阐明了汉字的拆合。 汉字的拆分实现,外围目标之一就是为了欠缺汉字的类似度比拟。 通过比照汉字的拆分局部,而后获取拆字的类似度,进步比照的准确性。 拆字类似度简略的需要为了便于小伙伴们了解,咱们用产品经理的思维和大家介绍一下实现形式。 我的需要比较简单。你看,【明】能够拆分【日】【月】,【冐】也能够拆分为【日】【月】。比照一下,后果是显然的。怎么实现我不论,今天上线吧。小伙伴们,应该曾经晓得怎么实现了吧? 应用体验诚如产品所言,这个需要曾经实现。 maven 引入<dependency> <groupId>com.github.houbb</groupId> <artifactId>nlp-hanzi-similar</artifactId> <version>1.2.0</version></dependency>应用double rate1 = HanziSimilarHelper.similar('末', '未');对应的后果为:0.9696969696969697 更多应用细节,参考开源地址: https://github.com/houbb/nlp-hanzi-similar写在完结前波及的我的项目汉字的类似度计算到这里算是告一段落。 次要波及的材料及我的项目有: 拼音 拆字 四角编码词库 汉字结构词库 汉字偏旁词库 笔画数词库 当然,还能够后果 opencc4j 进行繁简体的解决,此处不再延长。 之后的打算NLP 的畛域还有很多货色须要大家攻克,毕竟中文 NLP 才刚刚开始。 技术尚未胜利,同志仍需致力。 据说最近鹅城的某位黄老爷惹得大家口碑载道。 很多小伙伴说,如果有一款软件能够实现【月丷夫马言卂彳山兀攴人言】的沟通性能,那么我必定会用。 所谓说者无心,听者无意。 写一个通信软件,次要是为了坚固下 netty 的学习,其余的都不重要。 ...

November 25, 2021 · 2 min · jiezi

关于nlp:当代中国最贵的汉字是什么

最贵的汉字“你说,当代中国最贵的汉字是什么?”,有一天共事突然问我。 “【诺】,因为空头支票”,我脱口而出。 “不对。” “【字】,一字千金?” 共事点头。 “爱?” “这个是无价的,不算。” “人才。不是说 21 世纪最贵的是人才吗?” “一个字,你这不算。你咋不说家书抵万金呢?” “算了,不猜了。”,我脑海里为数不多的几个字转了一圈,没有一个合乎的。 我有些纳闷地看着他,示意放弃。 “答案是拆。” “拆?” “对。拆,拆迁的拆。” 说完,共事笑了笑。笑中带着三分世俗,六分狡黠,还有一分苍凉。 "拆,财。一拆,财就有了。" 不过,我却糊涂起来,“那么这个拆,是和你有关系呢?还是和我有关系呢?” “都有关系”,共事顿了顿,“也都没有。” “和我俩有啥关系,咱们把房东的房子拆了周游世界?” "No,咱们明天来拆点别的。不拆房子。" “不拆房子,那拆什么?” “拆字。” “字?” “对。字,汉字的字。” 拆字“汉字,晓得吧?”,共事持续说着。 “废话。小学生都晓得的问题。” “汉字的三要素晓得吗?” “音形义。” “你晓得如何用程序实现两个形近字的判断吗?” “你是没关注老马吧,他前两天刚写了一篇 NLP 形近字的实现算法。” “那篇算法我看了,一般般吧。有些场景不适应。” “比方?” “比方【明】与【冐】,构造不同,偏旁不同。然而他俩像不像?” 实在文化限度了我的想象力,在震惊了 0.9 秒之后,我立即反驳。 “说的笨重,说的你能解决这个问题一样?” 共事笑了笑,“难也不难。这就波及到明天的配角,拆字。” “哦。愿闻其详。” “咱们能够把汉字拆开最根本的组成部分,比方【明】能够拆成【日】【月】,【冐】也是相似的。而后去比拟每一个局部是否雷同,用来计算类似度。” “这倒是挺不错”,我不禁拍板称誉,“那么问题来了,这种拆字程序要多久能力实现呢?” 共事笑了笑,“在下不才,这两天上班期间写好了一个拆字程序。” “秀啊,你给拆一个秦时明月汉时关我瞅瞅。” 共事小手一敲,后果输入 手乀禾日寸日月冂一一水又日寸丷天。 “能够能够。除了 NLP 形近字,你这程序还有啥用?” “用途挺多的,不过最次要的是帅。比方这张我用拆字联合云图主动生成的图片。” 技术总会过期,然而帅,却是一辈子的事件。 “你晓得这个图,是由哪一句话拆分失去的吗?给你个提醒,出自一首词。” 合字想到共事给出的难题,最近日夜难寐,到底要怎么解呢? 正所谓,天下大势,合久必分,分久必合。 既然汉字能拆分,那么,能不能合并呢? 于是花了两天工夫,写了一个汉字的合并程序。 能够把 手乀禾日寸日月冂一一水又日寸丷天 合并为 秦时明月汉时关。 共事看了后,感觉挺乏味。 “你这个怎么实现的,有点意思。” “不难,和汉字的拆分逻辑反过来就行。” ...

November 24, 2021 · 1 min · jiezi

关于nlp:NLP-中文形近字相似度算法开源实现

我的项目简介nlp-hanzi-similar 为汉字提供相似性的计算。 创作目标有一个小伙伴说本人在做语言认知科学方向的课题钻研,看了我以前写的 NLP 中文形近字类似度计算思路 就想问下有没有源码或者相干材料。 国内对于文本的类似度计算,开源的工具是比拟丰盛的。 然而对于两个汉字之间的类似度计算,国内根本一片空白。国内的参考的材料少的可怜,国外相干文档也是如此。 于是将以前写的类似度算法整顿开源,心愿能帮到这位小伙伴。 本我的项目旨在抛砖引玉,实现一个根本的类似度计算工具,为汉字 NLP 奉献一点绵薄之力。 个性fluent 办法,一行代码搞定所有高度自定义,容许用户定义本人的实现词库自定义,适应各种利用场景丰盛的实现策略默认实现了基于 四角编码+拼音+汉字结构+汉字偏旁+笔画数 的类似度比拟。 变更日志变更日志疾速开始须要jdk1.7+ maven 3.x+ maven 引入<dependency> <groupId>com.github.houbb</groupId> <artifactId>nlp-hanzi-similar</artifactId> <version>1.0.0</version></dependency>疾速开始根本用法HanziSimilarHelper.similar 获取两个汉字的类似度。 double rate1 = HanziSimilarHelper.similar('末', '未');后果为: 0.9629629629629629自定义权重默认是依据 四角编码+拼音+汉字结构+汉字偏旁+笔画数 进行类似度比拟。 如果默认的零碎权重无奈满足你的需要,你能够通过自定义权重调整: double rate = HanziSimilarBs.newInstance() .jiegouRate(10) .sijiaoRate(8) .bushouRate(6) .bihuashuRate(2) .pinyinRate(1) .similar('末', '未');自定义类似度有些状况下,零碎的计算是无奈满足的。 用户能够在根目录下 hanzi_similar_define.txt 进行自定义。 入人 0.9人入 0.9这样在计算 人 和 入 的类似度时,会优先以用户自定义的为准。 double rate = HanziSimilarHelper.similar('人', '入');此时的后果为用户自定义的值。 疏导类阐明为了便于用户自定义,HanziSimilarBs 反对用户进行自定义配。 HanziSimilarBs 中容许自定义的配置列表如下: 序号属性阐明1bihuashuRate笔画数权重2bihuashuData笔画数数据3bihuashuSimilar笔画数类似度策略4jiegouRate构造权重5jiegouData构造数据6jiegouSimilar构造类似度策略7bushouRate部首权重8bushouData部首数据9bushouSimilar部首类似度策略10sijiaoRate四角编码权重12sijiaoData四角编码数据13sijiaoSimilar四角编码类似度策略14pinyinRate拼音权重15pinyinData拼音数据16pinyinSimilar拼音类似度策略17hanziSimilar汉字类似度外围策略18userDefineData用户自定义数据所有的配置都能够基于接口,用户进行自定义。 疾速体验阐明如果 java 语言不是你的次要开发语言,你能够通过上面的 exe 文件疾速体验一下。 ...

November 22, 2021 · 2 min · jiezi

关于nlp:微软亚洲研究院NLP领域最新研究一览

编者按:EMNLP(Conference on Empirical Methods in Natural Language Processing)是计算语言学和自然语言解决畛域的顶级国内学术会议。往年的 EMNLP 大会于11月7日-11日正式在线上召开。在本届大会中,微软亚洲研究院有多篇论文入选,明天咱们精选了其中的6篇来为大家进行简要介绍。欢送感兴趣的读者浏览论文原文,一起理解自然语言解决畛域的前沿停顿! CAST: 通过对形象语法树的层次化切分与重建来加强代码摘要的生成 论文链接:https://arxiv.org/abs/2108.12987 代码链接:https://github.com/DeepSoftwa... 代码摘要生成工作旨在了解实在的代码片段,并主动生成天然语句,进而实现形容这段代码的性能。因为摘要可能精简地形容代码的性能、可读性强,所以良好的摘要能够帮忙开发者更便捷地了解、重用和保护代码,大大提高生产效率。然而,事实中的摘要却存在着缺失、谬误和未及时更新等问题,而且人为标注代码的摘要须要具备肯定的专业知识背景,整个过程耗时耗力。因而,主动为代码生成摘要尤为重要。 近年来,很多钻研人员应用各种技术建模富含语法和构造信息的形象语法树(AST), 以此来更好地生成代码摘要。然而,因为程序的复杂性,形象语法树个别又大又深、难以建模。现有办法也存在着树的构造被毁坏、训练代价大、信息失落等诸多限度。为此,微软亚洲研究院的研究员们提出了一种层次化切分和重组 AST 的办法——CAST。其外围在于将 AST 层次化地切分成适合粒度的子树,使得每个子树蕴含绝对残缺的语义;独立建模子树后再依照切分前子树的绝对地位,重新聚合子树的表征。这样能够使 AST 的构造更容易被建模,代码的语义可能更加残缺地被构建,生成的摘要体现的语义也更加全面。 (图1:代码及其形象语法树(AST),切分的子树以及构造树的示意图) CAST 模型抉择了罕用的序列到序列的架构,次要蕴含三个模块:AST 的编码器、代码编码器和摘要解码器。AST 的编码器用来建模代码的语义和构造信息;代码编码器用来建模变量名层面的词汇和语义信息;解码器则联合两个编码器失去的代码表征以及复制机制来生成代码摘要。 (图2:CAST 模型的架构示意图) 研究员们在两个公开的数据集、四种掂量指标下进行了自动化测试,并且发展了人工测评试验。大量试验后果证实了该办法的有效性。 (表1:在两个数据集、四种自动化指标下的试验后果) (表2:人工评估下的试验后果,括号外为均分(满分4分),括号内为方差) 嵌入语言联盟(Representation Sprachbund)的发现及其对多语言预训练的作用 论文链接:https://arxiv.org/abs/2109.00271 作为古代自然语言解决(NLP)中一个重要技术分支,多语言 NLP 旨在使现有 NLP 技术解脱语言品种的限度,可能应用一个模型同时解决上百种语言的工作。目前多语言预训练模型的外围挑战在于:现存的许多数据集都仅有英语训练数据,而其余泛滥应用人数较少的低资源语言上仅有测试数据。如果应用英语数据对多语言模型进行微调,在其余语言上测试,所失去的后果和英语上的构造存在较大的差距。面对上述挑战,微软亚洲研究院的研究员们从语言学实践中的 Sprachbund 受到启发,设计出了如下图所示的多语言 NLP 新范式。 (图3:嵌入语言联盟发现与预训练的流程) Sprachbund 是一个德语语言学术语,示意没有亲属关系的语言,因为长期共处于一个地区而在语言构造上产生独特区域特色的景象。研究员们认为预训练时语言之间较大的差异性是导致跨语言模型体现较差的起因。因而,研究员们提出了 Representation Sprachbund 的概念,用来指一系列具备类似嵌入示意的语言。研究员们通过跨语言预训练模型提取出语言的嵌入示意,将语言示意进行聚类为多个 Representation Sprachbund,针对每一类嵌入示意类似的 Representation Sprachbund 语言进行预训练。在 XGLUE 和 XTREME 等多个跨语言基准工作上发展的试验表明,本文的办法可能在基线模型根底上获得显著晋升。 (表3:在跨语言基准工作上的后果) 本文另一个重要的奉献是摸索了预训练语言模型失去的语言嵌入示意散布与语言学实践的关系,包含 Language Family, Sprachbund 和语言语法。 (图4:语言嵌入示意的可视化剖析) 本文通过可视化剖析揭示了语言嵌入示意丰盛的语言学性质。研究员们心愿将来进一步摸索基于深度学习的多语言 NLP 与经典语言学实践的分割。 ...

November 14, 2021 · 2 min · jiezi

关于nlp:EMNLP-2021-LayoutReader基于ReadingBank的阅读序列抽取模型

编者按:浏览序列抽取是文档智能剖析中一项十分重要的工作,其旨在通过抽取扫描文档或数字商业文档中的单词并从新进行排序,将本来独立的单词组合成读者能够了解的文本。但因为日常工作生存中应用的文档,往往模板和格局各不相同,所以在呈现简单格局时,依照传统办法进行排列往往无奈获得较好的成果。因而,微软亚洲研究院自然语言计算组的研究员们构建了首个大规模浏览序列数据集 ReadingBank,并基于 ReadingBank 提出了浏览序列抽取模型 LayoutReader。本文将对 ReadingBank 和 LayoutReader 的实现原理进行简要介绍,欢送感兴趣的读者点击浏览原文理解论文中的更多详情,本文已被 EMNLP 2021 作为长文录取。 浏览序列抽取是指通过抽取扫描文档或数字商业文档中的单词并从新进行排序,将本来独立的单词组合成读者能够了解的文本。对于大部分电子文档,如网页、Word 文档等,获取正确的浏览序列并不艰难,只有剖析源代码即可。然而许多扫描文档或 PDF 文档并不具备这样的信息。因而,谬误的浏览序列不仅让读者无奈了解,还会导致文档智能剖析难以进行,因为文档智能剖析是将扫描文档或数字商业文档中的要害信息抽取,把非结构化的信息更加结构化,进而实现自动化文档了解的。 然而,现有的文档智能分析模型仍依赖文档内容的输出程序,若要害信息局部呈现错乱,很有可能导致模型判断谬误或脱漏信息。因而,浏览序列抽取是文档智能剖析中一项十分重要的工作。 日常工作、生存中的文档具备各种不同的模版和格局,为了提取浏览序列,传统办法往往间接将单词依照从左到右、从上到下的程序进行排列或通过人工来匹配模版。但当呈现多栏、表格等格局时,传统办法通常就会生效。若为了应答品种繁多的文档类型,则须要引入大规模预训练语言模型,借助文档中的文本信息、布局地位等信息进行浏览序列抽取。 图1:ReadingBank 数据集中文档图片的浏览序列示意图 因为现有数据集存在着不能满足预训练要求且人工标注构建新数据集的老本过低等问题。所以,微软亚洲研究院自然语言计算组的研究员们利用 Word 文档中的 XML 源码,构建了首个大规模浏览序列数据集 ReadingBank,并基于 ReadingBank 提出了浏览序列抽取模型 LayoutReader。 首个大规模浏览序列数据集ReadingBank以后多模态信息抽取模型(LayoutLM、LayoutLMv2)通常依赖文档中的文字内容和对应的地位。所以ReadingBank包含两局部:依照正确浏览顺序排列的文字内容(浏览序列),以及这些文字在以后页面内的地位。 文档收集Word 文档有两种格局,别离为 .doc 和 .docx,这里只应用 .docx 文档,因为须要借助其解压缩后的 XML 源码。研究员们通过文档长度和语言检测 API 过滤掉低质量的文本和非英文的文档,最终共爬取了210,000个英文 .docx 文档,并随机抽取了其中的500,000页作为数据集 获取浏览序列浏览序列是以后文档中依照正确浏览顺序排列的文字内容,如何在不借助人工标注的状况下失去正确的浏览程序是个难题。为此,研究员们借助了 Word 文档中的 XML 源码,构建出了正确的浏览序列。XML 源码中记录了 Word 文档中的所有信息,并依照文档自身的浏览程序顺次排列。于是,研究员们首先借助了开源工具 python-docx 解析网络上爬取的 .docx 文档,而后逐个段落、逐个单元格遍历整个文档,进而取得浏览序列。 获取对应地位信息尽管 Word 文档蕴含了正确的浏览程序信息,然而 XML 源码并不记录对应的地位,而是当用户打开文档时再进行实时渲染。为了固定文字取得精确的地位信息,研究员们借助了 PDF Metamorphosis .Net 工具,将 Word 文档转换为 PDF,再通过 PDF 解析器,获取文字在 PDF 页面内的地位。 ...

November 8, 2021 · 2 min · jiezi

关于nlp:性能加速最高可达28倍这个NLP工具包不容错过

导读PaddleNLP 是兼具科研学习和产业实际能力的 Python NLP 工具包,提供中文畛域丰盛的预训练模型和部署工具,被高校、企业开发者广泛应用。近日,PaddleNLP v2.1正式公布,为开发者带来三项重要更新: 开箱即用的工业级NLP预置工作能力Taskflow:八大经典场景一键预测。预训练时代的微调新范式利用:三行代码显著晋升小样本学习效果。高性能预测减速:文本生成工作高达28倍减速成果。传送门: https://github.com/PaddlePadd... PaddleNLP整体开源能力速览PaddleNLP是飞桨生态的自然语言解决开发库,旨在晋升文本畛域的开发效率,为开发者带来模型构建、训练及预测部署的全流程优质体验。 PaddleNLP性能全景图 PaddleNLP我的项目自公布以来,就受到宽广NLPer的关注。在2021年6月PaddleNLP官网直播打卡课中,有7000+ 用户加入PaddleNLP的我的项目学习和实际,减速了本身科研和业务实际过程,同时也带动PaddleNLP屡次登上GitHub Trending榜单。 那么最近的2021年10月份更新,PaddleNLP又给大家带来哪些惊喜呢?下文将为您逐个细细解读。 PaddleNLP全新降级深刻解读**开箱即用的工业级NLP预置工作能力——Taskflow** 依靠于百度在多年语言与常识畛域的业务积淀,PaddleNLP面向NLP八种工作场景,聚合了泛滥百度自研的算法以及社区开源模型,并凭借飞桨外围框架的能力降级提供开箱即用、极致优化的高性能一键预测能力——Taskflow。 本次Taskflow降级笼罩自然语言了解(NLU)和生成(NLG)两大场景共八大工作,包含中文分词、词性标注、命名实体辨认、句法分析、文本纠错、情感剖析、生成式问答和智能写诗。 这些高质量模型的背地,一方面聚合了百度在语言与常识畛域多年的业务积淀和当先的开源成绩:如词法剖析工具LAC、句法分析工具DDParser、情感剖析零碎Senta、文心ERNIE系列家族模型、凋谢域对话预训练模型PLATO、文本常识关联框架解语等;另一方面也涵盖了开源社区优良的中文预训练模型如CPM等。 将来Taskflow会随着PaddleNLP的版本迭代一直裁减技能,如凋谢域对话、文本翻译、信息抽取等能力,以满足更多NLP开发者的需要。 如下图所示,通过PaddleNLP Taskflow,只须要一行代码,传入工作名称即可主动抉择最优的预置模型,并且以极致优化的形式实现推理,开发者能够不便地集成到上游的利用中。 Taskflow应用示意图 https://github.com/PaddlePadd... **预训练时代的微调新范式利用:三行代码晋升小样本学习效果** Few-Shot Learning(以下简称FSL)是机器学习的一个子畛域。在仅有多数监督样本的状况下,训练失去强泛化能力的模型,实现对新数据的分类。 联合最新的Prompt Tuning的思维,PaddleNLP中集成了三大前沿FSL算法: EFL(Entailment as Few-Shot Learner)[1],将 NLP Fine-tune工作对立转换为二分类的文本蕴含工作;PET(Pattern-Exploiting Training)[2],通过人工构建模板,将分类工作转成完形填空工作;P-Tuning[3]:主动构建模板,将模版的构建转化为间断参数优化问题。应用小样本学习策略,仅仅32条样本即可在电商评论分类工作上获得87%的分类精度[4]。此外,PaddleNLP集成 R-Drop 策略作为 API,只须要减少三行代码即可在原工作上疾速涨点,如图所示: https://github.com/PaddlePadd... **高性能预测减速:文本生成场景高达28倍减速成果** PaddleNLP与NVDIA强强联合,以FasterTransformer[5]为根底,提供了Faster系列的推理API,重点拓展了更多支流网络结构适配与解码策略反对。同时联合飞桨外围框架2.1版本全新的自定义OP的性能,提供了与飞桨框架无缝连接的应用体验。 FasterTransformer Decoding Workflow (1) 大幅晋升生成工作的推理能力在Transformer机器翻译、GPT文本生成两个工作中,别离比照应用动态图版本的性能和内置Faster系列的推理API后,不同batch size下预测性能减速比,从比照数据能够看到无论Transformer还是GPT,均可失去高达28倍推理速度晋升! PaddleNLP Transformer翻译模型减速优化前后的 Nsight Profling比照图 (2)反对丰盛的经典解码策略PaddleNLP v2.1提供工业界支流的解码减速反对,包含经典的Beam Search,以及多个Sampling-based的解码形式:如Diverse Sibling Search[6]、T2T版本的Beam Search实现[7]、Top-k/Top-p Sampling等。丰盛的减速策略能够满足对话、翻译等工业场景的理论利用,同时PaddleNLP的减速实现也在百度外部通过了大规模互联网业务的实在考验。 表1:PaddleNLP 2.1 反对减速的模型构造与解码策略 更多PaddleNLP减速应用文档能够参考: ...

October 14, 2021 · 1 min · jiezi

关于nlp:NLP应用于司法系统综述

How Does NLP Benefit Legal System: A Summary of Legal Artificial Intelligence Abstract司法人员常常思考应用rule-based和symbol-based办法解决工作,NLP研究者次要思考data-driven和embedding办法。 在这篇文章中就次要探讨Legal AI的历史、现况、和将来的钻研方向。 进行了一些试验来对现有的工作进行更有深度的剖析,剖析他们的优缺点,并揭示一些将来的钻研方向。 可解释性强的symbolic models的效率不高,embedding-methods有更好的性能,但通常没有好的解释性,在一些道德相干的问题上有比拟大的问题:经典性别和种族偏见。 咱们总结了symbol-based methods和embedding-based办法独特面临的三个次要的挑战: 常识建模(Knowledge Modeling)。因为司法文本格式化水平好(well formalized)有很多的domain 常识和概念。用好这些knowledge很重要。司法推理(Legal Reasoning)。LegalAI必须严格遵循法律条文。因而联合事后定义的规定和AI技术对于司法推理就十分重要。可解释性(Interpretability)。本文的钻研奉献次要如下: 从NLP研究者和司法人员两个角度,来形容现存的工作。形容三个经典的利用,包含裁决预测(judgment prediction),类似案件匹配(similar case matching)和司法问题答复(legal question answering)来强调为什么这两种办法对于LeaglAI比拟重要。在多个数据集上进行了沉重的试验,来揭示怎么利用NLP技术和司法常识去克服LegalAI中的挑战。这些实现能够在github上找到。https://github.com/thunlp/CLAIM总结了LegalAI数据集,能够被看作是benchmark。数据集在github中颁布,还有一些比拟有浏览价值的司法paper。https://github.com/thunlp/LegalPapers2 Embedding-based Methods2.1 Character, Word, Concept Embeddings字和词嵌入很重要。 间接从司法案情形容中学习出业余词汇很艰难。为了克服这种艰难,能够同时捕获语法信息和司法常识。 knowledge graph methods在司法畛域很有前景,然而在理论应用之前,还是有两个次要的挑战: 结构LegalAI的常识图谱(knowledge graph)很简单。很多状况下,没有提前制作好的knowledge graph能够应用,研究者须要从零开始构建。另外,有一些不同的司法概念在不同的国家里有不同的涵义。一些研究者尝试去嵌入(embed)司法词典,这是一种可替换的办法。一个泛化水平高的司法常识图谱在模式上和其余常常在NLP中应用的常识图谱不太一样。现有的常识图谱关怀实体(entity)和概念(concept)之间的关系(relationship),但LegalAI更多地专一于解释司法概念。这两种挑战让LegalAI通过embedding进行常识建模不平庸(non-trivial)。研究者在将来会尝试去克服这些艰难。 2.2 Pretrained Language Models预训练的语言模型(Pretrained language model,PLM)比方BERT,最近集中于很多NLP的畛域。鉴于预训练模型的胜利,在LegalAI中应用预训练模型是一个很正当很间接的抉择。然而在司法文本中,这里还有一些不同,如果间接应用这些PLM会导致不好的性能。这些不同就来自于司法文本中所蕴含的术语和常识。为了解决这些问题,Zhong(2019)提出了一个中文司法文档的预训练模型,包含民事和(civil)刑事(criminal)案件的文档。针对司法畛域设计的PLM给LegalAI工作提供了一个更有品质的baseline零碎。咱们在试验中比照不同的BERT模型利用于LegalAI工作。 对于在将来摸索LegalAI中的PLM,研究者能够把指标放在整合knowledge进入PLM。整合knowledge进入预训练模型能够帮忙推理司法概念之间。很多工作曾经做了,去把general domain融入模型。 3. Symbol-based Methodssymbol-based methods也被叫做structured prediction methods。 符号化的司法常识包含:事件(events)和关系(relationship),这些能够提供可解释性。 深度学习办法能够用于进步symbol-based methods的性能。 3.1 Information Extraction信息提取(information extraction,IE)曾经被宽泛地在NLP中被钻研。IE强调从文本中提取有价值的信息,一些技术比方:实体辨认(entity recognition),关系提取(relation extraction),事件提取(event extraction)。 为了更好的应用司法文本,研究者尝试应用本体论(ontology)或者寰球一致性(global consistency)在LegalAI的命名实体辨认(named entity recognition)工作中。为了从司法文本中提取关系和事件,研究者尝试去应用不同的办法,包含:人工规定(hand-crafted rules),CRF(不晓得这是啥),联结模型比方SVM,CNN,GRU,或者(scale-free identifier network)(不晓得这是啥)。 ...

October 1, 2021 · 2 min · jiezi

关于nlp:贪心京东NLP实训营一期完结

download:贪婪京东NLP实训营一期【完结】实现一名合格的NLP工程师,从线上实习开始实现企业真是我的项目,取得京东颁发的我的项目实习证实

September 7, 2021 · 1 min · jiezi

关于nlp:美团商品知识图谱的构建及应用

商品常识图谱作为新批发行业数字化的基石,提供了围绕商品的精准结构化了解,对业务利用起到了至关重要的作用。相比于美团大脑中原有的围绕商户的图谱而言,商品图谱需应答更加扩散、简单、海量的数据和业务场景,且面临着信息起源品质低、数据维度多、依赖常识以及专业知识等挑战。本文将围绕批发商品常识图谱,介绍美团在商品层级建设、属性体系建设、图谱建设人效晋升等方向的摸索,心愿对大家有所帮忙或启发。背景美团大脑近年来,人工智能正在疾速地扭转人们的生存,背地其实有两大技术驱动力:深度学习和常识图谱。咱们将深度学习演绎为隐性的模型,它通常是面向某一个具体任务,比如说下围棋、辨认猫、人脸识别、语音辨认等等。通常而言,在很多工作上它可能获得很优良的后果,同时它也有一些局限性,比如说它须要海量的训练数据,以及弱小的计算能力,难以进行跨工作的迁徙,并且不具备较好的可解释性。在另一方面,常识图谱作为显式模型,同样也是人工智能的一大技术驱动力,它可能宽泛地实用于不同的工作。相比深度学习,常识图谱中的常识能够积淀,具备较强的可解释性,与人类的思考更加贴近,为隐式的深度模型补充了人类的常识积攒,和深度学习互为补充。因而,寰球很多大型的互联网公司都在常识图谱畛域踊跃进行布局。 美团连贯了数亿用户和数千万商户,背地也蕴含着丰盛的日常生活相干常识。2018年,美团常识图谱团队开始构建美团大脑,着力于利用常识图谱技术赋能业务,进一步改善用户体验。具体来说,美团大脑会对美团业务中波及到的千万级别商家、亿级别的菜品/商品、数十亿的用户评论,以及背地百万级别的场景进行深刻的了解和结构化的常识建模,构建人、店、商品、场景之间的常识关联,从而造成生存服务畛域大规模的常识图谱。现阶段,美团大脑已笼罩了数十亿实体,数百亿三元组,在餐饮、外卖、酒店、金融等场景中验证了常识图谱的有效性。 在新批发畛域的摸索美团逐渐冲破原有边界,在生存服务畛域摸索新的业务,不仅局限于通过外卖、餐饮帮大家“吃得更好”,近年来也逐渐拓展到批发、出行等其余畛域,帮大家“生存更好”。在批发畛域中,美团先后落地了美团闪购、美团买菜、美团优选、团好货等一系列相应的业务,逐渐实现“万物到家”的愿景。为了更好地反对美团的新批发业务,咱们须要对背地的批发商品建设常识图谱,积攒结构化数据,深刻对批发畛域内商品、用户、属性、场景等的了解,以便能更好地为用户提供批发商品畛域内的服务。 相比于围绕商户的餐饮、外卖、酒店的等畛域,批发商品畛域对于常识图谱的建设和利用提出了更大的挑战。一方面,商品数量更加宏大,笼罩的畛域范畴也更加广阔。另一方面,商品自身所具备的显示信息往往比拟稠密,很大水平上须要联合生存中的常识常识来进行推理,方可将暗藏在背地的数十维的属性进行补齐,实现对商品残缺的了解。在下图的例子中,“乐事黄瓜味”这样简略的商品形容其实就对应着丰盛的隐含信息,只有对这些常识进行了结构化提取和相应的常识推理后,才可能更好的反对上游搜寻、举荐等模块的优化。 商品图谱建设的指标咱们针对美团批发业务的特点,制订了多层级、多维度、跨业务的批发商品常识图谱体系。 多层级 在不同业务的不同利用场景下,对于“商品”的定义会有所差异,须要对各个不同颗粒度的商品进行了解。因而,在咱们的批发商品常识图谱中,建设了五层的层级体系,具体包含: L1-商品SKU/SPU:对应业务中所售卖的商品颗粒度,是用户交易的对象,往往为商户下挂的商品,例如“望京家乐福所售卖的蒙牛低脂高钙牛奶250ml盒装”。这一层级也是作为商品图谱的最底层的基石,将业务商品库和图谱常识进行买通关联。L2-规范商品:形容商品自身客观事实的颗粒度,例如“蒙牛低脂高钙牛奶250ml盒装”,无论通过什么渠道在什么商户购买,商品自身并没有任何区别。商品条形码则是在规范商品这层的主观根据。在这一层级上,咱们能够建模围绕规范商品的主观常识,例如同一个规范商品都会具备同样的品牌、口味、包装等属性。L3-形象商品:进一步咱们将规范商品向上形象的商品系列,例如“蒙牛低脂高钙牛奶”。在这一层级中,咱们不再关注商品具体的包装、规格等,将同系列的商品聚合为形象商品,承载了用户对于商品的主观认知,包含用户对商品系列的别名俗称、品牌认知、主观评估等。L4-主体品类:形容商品主体的实质品类,列如“鸡蛋”、“奶油草莓”、“台式烤肠”等。这一层作为商品图谱的后盾类目体系,以主观的形式对商品畛域的品类进行建模,承载了用户对于商品的需要,例如各品牌各产地的鸡蛋都可能满足用户对于鸡蛋这个品类的需要。L5-业务类目:相比于主体品类的后盾类目体系,业务类目作为前台类目体系会根据业务以后的倒退阶段进行人工定义和调整,各个业务会依据以后业务阶段的特点和需要建设对应的前台类目体系。多维度 商品属性视角:围绕商品自身,咱们须要有海量的属性维度来对商品进行形容。商品属性维度次要分为两类:一类是通用的属性维度,包含品牌、规格、包装、产地等;另一类是品类特有的属性维度,例如对于牛奶品类咱们会关注脂肪含量(全脂/低脂/脱脂牛奶)、存储形式(常温奶、冷藏奶)等。商品属性次要是刻画了商品的主观常识,往往会建设在规范商品这一层级上。用户认知视角:除了主观的商品属性维度以外,用户往往对于商品会有一系列的主观认知,例如商品的别名俗称(“小黑瓶”、“高兴水”)、对于商品的评估(“香甜可口”、“入口即化”、“性价比高”)、商品的清单/榜单(“进口食品榜单”、“冬季消暑常备”)等维度。这些主观认知往往会建设在形象商品这一层级上。品类/类目视角:从品类/类目标视角来看,不同品类/类目也会有各自不同的关注点。在这一层级上,咱们会建模各个品类/类目下有哪些典型的品牌、用户关注哪些典型属性、不同品类的复购周期是多长时间等。跨业务 美团大脑商品常识图谱的指标是心愿可能对主观世界中的商品常识进行建模,而非局限于单个业务之中。在商品图谱的五层体系中,规范商品、形象商品、品类体系都是与业务解耦的,围绕着主观商品所建设的,包含围绕这些层级建设的各维度数据也均是刻画了商品畛域的主观常识。 在利用于各个业务当中时,咱们将主观的图谱常识向上关联至业务前台类目,向下关联至业务商品SPU/SKU,则能够实现各个业务数据的接入,实现各个业务数据和主观常识之间的联通,提供更加全面的跨业务的全景数据视角。利用这样的数据,在用户方面咱们能够更加全面的建模、剖析用户对于业务、品类的偏好,对于价格、品质等的敏感水平,在商品方面咱们能够更精确的建模各品类的复购周期、地区/节令/节日偏好等。 商品图谱建设的挑战商品常识图谱的构建的挑战次要来源于以下三个方面: 信息起源品质低:商品自身所具备的信息比拟匮乏,往往以题目和图片为主。尤其在美团闪购这样LBS的电商场景下,商户须要上传大量的商品数据,对于商品信息的录入存在很多信息不残缺的状况。在题目和图片之外,商品详情尽管也蕴含着大量的常识信息,然而其品质往往参差不齐,并且构造各异,从中进行常识开掘难度极高。数据维度多:在商品畛域有泛滥的数据维度须要进行建设。以商品属性局部为例,咱们不仅须要建设通用属性,诸如品牌、规格、包装、口味等维度,同时还要笼罩各个品类/类目下特定关注的属性维度,诸如脂肪含量、是否含糖、电池容量等,整体会波及到上百维的属性维度。因而,数据建设的效率问题也是一大挑战。依赖常识/专业知识:人们在日常生活中因为有很丰盛的常识常识积攒,能够通过很简短的形容获取其背地暗藏的商品信息,例如在看到“乐事黄瓜”这样一个商品的时候晓得其实是乐事黄瓜味的薯片、看到“唐僧肉”的时候晓得其实这不是一种肉类而是一种零食。因而,咱们也须要摸索联合常识常识的语义了解办法。同时,在医药、个护等畛域中,图谱的建设须要依赖较强的专业知识,例如疾病和药品之间的关系,并且此类关系对于准确度的要求极高,须要做到所有常识都准确无误,因而也须要较好的专家和算法相结合的形式来进行高效的图谱构建。商品图谱建设在理解了图谱建设的指标和挑战后,接下来咱们将介绍商品图谱数据建设的具体计划。 层级体系建设品类体系建设 实质品类形容了商品实质所属的最细类别,它聚合了一类商品,承载了用户最终的生产需要,如“高钙牛奶”、“牛肉干”等。实质品类与类目也是有肯定的区别,类目是若干品类的汇合,它是形象后的品类概念,不可能明确到具体的某类商品品类上,如“乳制品”、“水果”等。 品类打标:对商品图谱的构建来说,要害的一步便是建设起商品和品类之间的关联,即对商品打上品类标签。通过商品和品类之间的关联,咱们能够建设起商品库中的商品与用户需要之间的关联,进而将具体的商品展现到用户背后。上面简略介绍下品类打标办法: 品类词表构建:品类打标首先须要构建一个初步的商品品类词表。首先,咱们通过对美团的各个电商业务的商品库、搜寻日志、商户标签等数据源进行分词、NER、新词发现等操作,取得初步的商品候选词。而后,通过标注大量的样本进行二分类模型的训练(判断一个词是否是品类)。此外,咱们通过联合被动学习的办法,从预测的后果中挑选出难以辨别的样本,进行再次标注,持续迭代模型,直到模型收敛。品类打标:首先,咱们通过对商品题目进行命名实体辨认,并联合上一步中的品类词表来获取商品中的候选品类,如辨认“蒙牛脱脂牛奶 500ml”中的“脱脂牛奶”、“牛奶”等。而后,在取得了商品以及对应的品类之后,咱们利用监督数据训练品类打标的二分类模型,输出商品的SPU_ID和候选品类TAG形成的Pair,即<SPU_ID,TAG>,对它进行是否匹配的预测。具体的,咱们一方面利用联合业务中丰盛的半结构化语料构建围绕标签词的统计特色,另一方面利用命名实体辨认、基于BERT的语义匹配等模型产出高阶相关性特色,在此基础上,咱们将上述特色输出到终判模型中进行模型训练。品类标签后处理:在这一步中,咱们对模型打上的品类进行后处理的一些策略,如基于图片相关性、联合商品题目命名实体辨认后果等的品类荡涤策略。通过上述的三个步骤,咱们便能够建设起商品与品类之间的分割。 品类体系:品类体系由品类和品类间关系形成。常见的品类关系包含同义词和上下位等。在构建品类体系的过程中,罕用的以下几种办法来进行关系的补全。咱们次要应用上面的一些办法: 基于规定的品类关系开掘。在百科等通用语料数据中,有些品类具备固定模式的形容,如“玉米又名苞谷、苞米棒子、玉蜀黍、珍珠米等”、“榴莲是驰名寒带水果之一”,因而,能够应用规定从中提取同义词和上下位。基于分类的品类关系开掘。相似于上文中提到的品类打标办法,咱们将同义词和上下位构建为<TAG, TAG>的样本,通过在商品库、搜寻日志、百科数据、UGC中开掘的统计特色以及基于Sentence-BERT失去的语义特色,应用二分类模型进行品类关系是否成立的判断。对于训练失去的分类模型,咱们同样通过被动学习的形式,选出后果中的难分样本,进行二次标注,进而一直迭代数据,进步模型性能。基于图的品类关系推理。在取得了初步的同义词、上下位关系之后,咱们应用已有的这些关系构建网络,应用GAE、VGAE等办法对网络进行链路预测,从而进行图谱边关系的补全。 规范/形象商品 规范商品是形容商品自身客观事实的颗粒度,和销售渠道和商户无关,而商品条形码是规范商品这层的主观根据。标品关联行将同属于某个商品条形码的业务SKU/SPU,都正确关联到该商品条形码上,从而在规范商品层级上建模相应的主观常识,例如规范商品对应的品牌、口味和包装等属性。 上面通过一个案例来阐明标品关联的具体任务和计划。 案例:下图是一个公牛三米插线板的规范商品。商家录入信息的时候,会把商品间接关联到商品条码上。通过商户录入数据实现了一部分的标品关联,但这部分比例比拟少,且存在大量的链接缺失,链接谬误的问题。另外,不同的商家对于同样的标品,商品的题目的形容是千奇百怪的。咱们的指标是补充缺失的链接,将商品关联到正确的标品上。 针对标品关联工作,咱们构建了商品畛域的同义词判断模型:通过远监督的形式利用商户曾经提供的大量有关联的数据,作为已有的常识图谱结构远监督的训练样本。在模型中,正例是置信度比拟高的标品码;负例是原始数据中商品名或者图像相似但不属于同一标品的SPU。结构准确率比拟高的训练样本之后,通过BERT模型进行同义词模型训练。最初,通过模型自主去噪的形式,使得最终的准确率可能达到99%以上。总体能做到品牌,规格,包装等维度敏感。 形象商品是用户认知的层面,作为用户所评论的对象,这一层对用户偏好建模更加无效。同时,在决策信息的展现上,形象商品粒度也更合乎用户认知。例如下图所示冰淇淋的排行榜中,列举了用户认知中形象商品对应的SKU,而后对应展现不同形象商品的特点、举荐理由等。形象商品层整体的构建形式,和规范商品层比拟相似,采纳标品关联的模型流程,并在数据结构局部进行规定上的调整。 属性维度建设对一个商品的全面了解,须要涵盖各个属性维度。例如“乐事黄瓜味薯片”,须要开掘它对应的品牌、品类、口味、包装规格、标签、产地以及用户评论特色等属性,能力在商品搜寻、举荐等场景中精准触达用户。商品属性开掘的源数据次要蕴含商品题目、商品图片和半结构化数据三个维度。 商品题目蕴含了对于商品最重要的信息维度,同时,商品题目解析模型能够利用在查问了解中,对用户疾速深刻了解拆分,为上游的召回排序也能提供高阶特色。因而,这里咱们着重介绍一下利用商品题目进行属性抽取的办法。 商品题目解析整体能够建模成文本序列标注的工作。例如,对于商品题目“乐事黄瓜薯片”,指标是了解题目文本序列中各个成分,如乐事对应品牌,黄瓜对应口味,薯片是品类,因而咱们应用命名实体辨认(NER)模型进行商品题目解析。然而商品题目解析存在着三大挑战:(1)上下文信息少;(2)依赖常识常识;(3)标注数据通常有较多的乐音。为了解决前两个挑战,咱们首先尝试在模型中引入了图谱信息,次要蕴含以下三个维度: 节点信息:将图谱实体作为词典,以Soft-Lexicon形式接入,以此来缓解NER的边界切分谬误问题。关联信息:商品题目解析依赖常识常识,例如在不足常识的状况下,仅从题目“乐事黄瓜薯片”中,咱们无奈确认“黄瓜”是商品品类还是口味属性。因而,咱们引入常识图谱的关联数据缓解了常识常识缺失的问题:在常识图谱中,乐事和薯片之间存在着“品牌-售卖-品类”的关联关系,然而乐事跟黄瓜之间则没有间接的关系,因而能够利用图构造来缓解NER模型常识常识短少的问题。具体来说,咱们利用Graph Embedding的技术对图谱进行的嵌入表征,利用图谱的图构造信息对图谱中的单字,词进行示意,而后将蕴含了图谱构造信息的嵌入示意和文本语义的表征进行拼接交融,再接入到NER模型之中,使得模型可能既思考到语义,也思考到常识常识的信息。节点类型信息:同一个词能够代表不同的属性,比方“黄瓜”既能够作为品类又能够作为属性。因而,对图谱进行Graph Embedding建模的时候,咱们依据不同的类型对实体节点进行拆分。在将图谱节点表征接入NER模型中时,再利用注意力机制依据上下文来抉择更合乎语义的实体类型对应的表征 ,缓解不同类型下词语含意不同的问题,实现不同类型实体的交融。 接下来咱们探讨如何缓解标注乐音的问题。在标注过程中,少标漏标或错标的问题无奈防止,尤其像在商品题目NER这种标注比较复杂的问题上,尤为显著。对于标注数据中的乐音问题,采纳以下形式对乐音标注优化:不再采取原先非0即1的Hard的训练形式,而是采纳基于置信度数据的Soft训练形式,而后再通过Bootstrapping的形式迭代穿插验证,而后依据以后的训练集的置信度进行调整。咱们通过试验验证,应用Soft训练+Bootstrapping多轮迭代的形式,在噪声比例比拟大的数据集上,模型成果失去了显著晋升。具体的办法可参见咱们在NLPCC 2020较量中的论文《Iterative Strategy for Named Entity Recognition with Imperfect Annotations》。 效率晋升常识图谱的构建往往是针对于各个领域维度的数据独自制订的开掘形式。这种开掘形式重人工,比拟低效,针对每个不同的畛域、每个不同的数据维度,咱们都须要定制化的去建设工作相干的特色及标注数据。在商品场景下,开掘的维度泛滥,因而效率方面的进步也是至关重要的。咱们首先将常识开掘工作建模为三类分类工作,包含节点建模、关系建模以及节点关联。在整个模型的训练过程中,最须要进行效率优化的其实就是上述提到的两个步骤:(1)针对工作的特征提取;(2)针对工作的数据标注。 针对特征提取局部,咱们摒弃了针对不同开掘工作做定制化特色开掘的形式,而是尝试将特色和工作解耦,构建跨工作通用的图谱开掘特色体系,利用海量的特色库来对指标的节点/关系/关联进行表征,并利用监督训练数据来进行特色的组合和抉择。具体的,咱们构建的图谱特色体系次要由四个类型的特色组形成: 规定模板型特色次要是利用人工先验常识,交融规定模型能力。统计散布型特色,能够充分利用各类语料,基于不同语料不同层级维度进行统计。句法分析型特色则是利用NLP畛域的模型能力,引入分词、词性、句法等维度特色。嵌入示意型特色,则是利用高阶模型能力,引入BERT等语义了解模型的能力。 针对数据标注局部,咱们次要从三个角度来晋升效率。 通过半监督学习,充沛的利用未标注的数据进行预训练。通过被动学习技术,抉择对于模型来说可能提供最多信息增益的样本进行标注。利用近程监督办法,通过已有的常识结构远监督样本进行模型训练,尽可能的施展出已有常识的价值。人机联合-业余图谱建设以后医药衰弱行业结构性正在发生变化,消费者更加偏向于应用在线医疗解决方案和药品配送服务,因而医药业务也逐步成为了美团的重要业务之一。相比于普通商品常识图谱的建设,药品畛域常识具备以下两个特点:(1)具备极强的专业性,须要有相干背景常识能力判断相应的属性维度,例如药品的实用症状等。(2)准确度要求极高,对于强专业性常识不容许出错,否则更容易导致严重后果。因而咱们采纳将智能模型和专家常识联合的形式来构建药品常识图谱。 药品图谱中的常识能够分为弱专业知识和强专业知识两类,弱专业知识即个别人可能较容易获取和了解的常识,例如药品的应用办法、适用人群等;而强专业知识则是须要具备业余背景的人才可能判断的常识,例如药品的主治疾病、适应症状等。因为这两类数据对专家的依赖水平不同,因而咱们别离采取不同的开掘链路: 弱专业知识:对于药品图谱的弱专业知识开掘,咱们从说明书、百科知识等数据源中提取出相应的信息,并联合通过专家常识积淀进去的规定策略,借助通用语义模型从中提取相应的常识,并通过专家的批量抽检,实现数据的建设。强专业知识:对于药品图谱的强专业知识开掘,为了确保相干常识百分百精确,咱们通过模型提取出药品相干属性维度的候选后,将这些候选常识给到专家进行全量质检。在这里,咱们次要是通过算法的能力,尽可能减少业余药师在根底数据层面上的精力破费,进步专家从半结构化语料中提取专业知识的效率。在药品这类专业性强的畛域,专业知识的表述和用户习惯往往存在差别。因而咱们除了开掘强弱专业知识外,还须要填补专业知识和用户之间的差别,能力将药品图谱更好的与上游利用联合。为此,咱们从用户行为日志以及畛域日常对话等数据源中,开掘了疾病、症状和效用的别名数据,以及药品通用名的俗称数据,来买通用户习惯和业余表述之间的通路。 商品图谱的落地利用自从谷歌将常识图谱利用于搜索引擎,并显著晋升了搜寻品质与用户体验,常识图谱在各垂直畛域场景都表演起了重要的角色。在美团商品畛域中,咱们也将商品图谱无效的利用在围绕商品业务的搜寻、举荐、商家端、用户端等多个上游场景当中,接下来咱们举几个典型的案例进行介绍。 结构化召回商品图谱的数据,对于商品的了解很有帮忙。例如,在商品搜寻中, 如用户在搜寻头疼腰疼时,通过结构化的常识图谱,能力晓得什么药品是有止疼效用的;用户在搜寻可爱多草莓、黄瓜薯片时,须要依赖图谱的常识常识来了解用户真正需要是冰淇淋和薯片,而不是草莓和黄瓜。 排序模型泛化性图谱的类目信息、品类信息、属性信息,一方面能够作为比拟强有力的相关性的判断办法和干涉伎俩,另一方面能够提供不同粗细粒度的商品聚合能力,作为泛化性特色提供到排序模型,能无效地晋升排序模型的泛化能力,对于用户行为尤为稠密的商品畛域来说则具备着更高的价值。具体的特色应用形式则包含: 通过各颗粒度进行商品聚合,以ID化特色接入排序模型。在各颗粒度聚合后进行统计特色的建设。通过图嵌入示意的形式,将商品的高维向量示意和排序模型联合。 多模态图谱嵌入现有的钻研工作曾经在多个畛域中证实了,将常识图谱的数据进行嵌入示意,以高维向量示意的形式和排序模型联合,能够无效地通过引入内部常识达到缓解排序/举荐场景中数据稠密以及冷启动问题的成果。然而,传统的图谱嵌入的工作往往漠视了常识图谱中的多模态信息,例如商品畛域中咱们有商品的图片、商品的题目、商家的介绍等非简略的图谱节点型的常识,这些信息的引入也能够进一步晋升图谱嵌入对举荐/排序的信息增益。 ...

September 3, 2021 · 1 min · jiezi

关于nlp:关键词提取TFIDF一

系列文章&check; 词向量 &cross;Adam,sgd &cross; 梯度隐没和梯度爆炸 &cross;初始化的办法 &cross; 过拟合&欠拟合 &cross; 评估&损失函数的阐明 &cross; 深度学习模型及罕用任务说明 &cross; RNN的工夫复杂度 &cross; neo4j图数据库 分词、词向量 TfidfVectorizer根本介绍TF-IDF是一种统计办法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要水平。字词的重要性随着它在文件中呈现的次数成正比减少,但同时会随着它在语料库中呈现的频率成反比降落。比方:为了取得一篇文档的关键词,咱们能够如下进行对给定文档,咱们进行"词频"(Term Frequency,缩写为TF)给每个词计算一个权重,这个权重叫做"逆文档频率"(Inverse Document Frequency,缩写为IDF),它的大小与一个词的常见水平成反比。算法明细根本步骤 1、计算词频。思考到文章有长短之分,为了便于不同文章的比拟,进行"词频"标准化。词频:TF = 文章中某词呈现的频数 词频标准化:2、计算逆文档频率。如果一个词越常见,那么分母就越大,逆文档频率就越小越靠近0。逆文档频率:其中,语料库(corpus),是用来模仿语言的应用环境。3、计算TF-IDF。能够看到,TF-IDF与一个词在文档中的呈现次数成正比,与该词在整个语言中的呈现次数成反比$TF-IDF = TF * IDF$算法优缺点长处: TF-IDF算法的长处是简略疾速,后果比拟符合实际状况。毛病 单纯以"词频"掂量一个词的重要性,不够全面,有时重要的词可能呈现次数并不多。这种算法无奈体现词的地位信息,呈现地位靠前的词与呈现地位靠后的词,都被视为重要性雷同,这是不正确的。对于文档中呈现次数较少的重要人名、地名信息提取成果不佳利用场景利用场景简介 1)搜索引擎;2)关键词提取;3)文本相似性;4)文本摘要可执行实例# python:3.8# sklearn:0.23.1# 1、CountVectorizer 的作用是将文本文档转换为计数的稠密矩阵from sklearn.feature_extraction.text import CountVectorizercorpus = [ 'This is the first document.', 'This document is the second document.', 'And this is the third one.', 'Is this the first document?',]vectorizer = CountVectorizer()X = vectorizer.fit_transform(corpus)# 查看每个单词的地位print(vectorizer.get_feature_names())#['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']# 查看后果print(X.toarray())# [[0 1 1 1 0 0 1 0 1]# [0 2 0 1 0 1 1 0 1]# [1 0 0 1 1 0 1 1 1]# [0 1 1 1 0 0 1 0 1]]# 2、TfidfTransformer:应用计算 tf-idffrom sklearn.feature_extraction.text import TfidfTransformertransform = TfidfTransformer() Y = transform.fit_transform(X) print(Y.toarray()) # 输入tfidf的值# [[0. 0.46979139 0.58028582 0.38408524 0. 0. 0.38408524 0. 0.38408524]# [0. 0.6876236 0. 0.28108867 0. 0.53864762 0.28108867 0. 0.28108867]# [0.51184851 0. 0. 0.26710379 0.51184851 0. 0.26710379 0.51184851 0.26710379]# [0. 0.46979139 0.58028582 0.38408524 0. 0. 0.38408524 0. 0.38408524]]# 3、TfidfVectorizer:TfidfVectorizer 相当于 CountVectorizer 和 TfidfTransformer 的联合应用from sklearn.feature_extraction.text import TfidfVectorizercorpus = [ 'This is the first document.', 'This document is the second document.', 'And this is the third one.', 'Is this the first document?',]vectorizer = TfidfVectorizer() #构建一个计算词频(TF)X = vectorizer.fit_transform(corpus)print(vectorizer.get_feature_names())# ['and', 'document', 'first', 'is', 'one', 'second', 'the', 'third', 'this']print(X.shape)# (4, 9)参数项阐明CountVectorizer ...

August 28, 2021 · 1 min · jiezi

关于nlp:ACL-2021-百度NLP开源语言与视觉一体的统一模态预训练方法登顶各类榜单

百度独创地提出了语言与视觉一体的预训练方法 UNIMO,提供了一种新的对立模态学习范式,突破了文本、图像和图文对等数据间的边界,让机器能够像人一样利用大规模异构模态数据,学习语言常识与视觉常识并互相加强,从而实现感知与认知一体的通用 AI 能力。 百度在2021年深度学习开发者峰会 WAVE SUMMIT 上开源了语言与视觉一体的预训练模型 ERNIE-UNIMO,其外围办法 UNIMO 曾经被 NLP 顶级会议 ACL 2021主会正式录用为 oral 长文。 在机器之心7月31日举办的 ACL 2021论文分享会上,本文第一作者李伟具体介绍了他们的这项研究成果,感兴趣的同学能够点扫描下方二维码查看回顾视频。 AI 零碎是否像人一样,应用一个对立的大脑模型,实现感知认知一体的通用能力?基于此出发点,百度提出的 UNIMO 试图构建面向各种不同模态的对立预训练模型。 论文地址:\https://arxiv.org/abs/2012.15409\代码地址:\https://github.com/PaddlePadd... 此办法独创的同时还能学习大量的文本、图像、图文对数据,通过跨模态比照学习,无效的让语言常识与视觉常识进行对立示意和互相加强。UNIMO 在语言了解与生成、跨模态了解与生成,4类场景共13个工作上超过支流的文本预训练模型和跨模态预训练模型,同时登顶视觉问答榜单 VQA、文本推理榜单 aNLI 等权威榜单,首次验证了通过非平行的文本与图像等繁多模态数据,可能让语言常识与视觉常识互相加强。目前 UNIMO 曾经逐渐在百度的产品中落地利用。 UNIMO办法介绍 大数据是深度学习取得成功的要害根底之一。依据利用数据的模态不同,深度学习应用领域大体包含:在文本数据上进行自然语言解决,在视觉数据上进行视觉利用,在图文数据上进行跨模态利用。显然,人类大脑对各种模态数据的学习并非独立的,比方,人类大脑在看到图片之后可能主动联想到相干的语言常识,反之亦然。对各种模态数据的死记硬背,使得人类可能充沛学习各类语言、视觉、语音常识并互相加强,通过对立的模型展现出弱小的智能程度。那么,基于深度学习的 AI 零碎是否也能像人一样同时学习异构模态数据呢?如果可能实现,无疑将进一步关上深度学习对大规模数据利用的边界,从而进一步晋升 AI 零碎的感知与认知一体的通用 AI 能力。 为此,百度提出面向异构模态数据的对立预训练方法 UNIMO,同时应用文本、图像和图文对数据进行训练,学习文本和图像的对立语义示意,从而具备同时解决多种繁多模态和跨模态上游工作的能力。UNIMO 的外围模块是一个Transformer 网络,在具体训练过程中,文本、图像和图文对三种模态数据随机混合在一起,其中图像被转换为指标(object)序列,文本被转换为词(token)序列,图文对被转换为指标序列和词序列的拼接。UNIMO 对三种类型数据进行对立解决,在指标序列或者词序列上基于掩码预测进行自监督学习,并且基于图文对数据进行跨模态比照学习,从而实现图像与文本的对立示意学习。进一步的,这种联结学习办法也让文本常识和视觉常识相互加强,从而无效晋升文本语义示意和视觉语义示意的能力。 异构模态的对立预训练最大的挑战是如何逾越不同模态间的语义鸿沟从而实现语义示意的对立。如下图所示,UNIMO 提出了翻新的跨模态比照学习办法,同时引入相关联的图文对数据、文本数据和图像数据进行联结比照学习。具体地,UNIMO 通过文本改写的形式,对图文对进行数据增广,取得大量的正例和强负例图文对数据。同时为了更好的利用文本和图像数据,UNIMO 通过文本与图像检索,取得相干的图像和文本作为正例。这样利用裁减后的多种类型的正例以及高质量强负例,UNIMO 在对立的语义空间上进行联想比照,从而可能学习到准确对齐的跨模态语义示意。 UNIMO试验后果 在试验方面,UNIMO 应用了大量的文本、图像和图文数据进行联结学习,同时在各种繁多模态和跨模态上游工作上进行验证。预训练数据局部,文本语料包含 Wikipedia、BookCorpus、OpenWebText 等共 54G 语料;图像数据是从互联网爬取的170万张图像;而图文对数据则包含 COCO Caption、Visual Genome、Conceptual Caption、SBU Caption。上游工作既包含图文搜寻、视觉问答、图形容生成、视觉推断等跨模态工作,也包含文本分类、浏览了解、文本摘要、问题生成等各种文本工作。模型上,Base 基于12层的 Transformer,而 Large 应用24层。 ...

August 16, 2021 · 1 min · jiezi

关于nlp:架构级理解BERT二探求机翻的内幕Seq2Seq

上文咱们曾经介绍了LSTM,它就是一个革新过的RNN模型,通过LSTM可能比拟好的将一段文本表征为向量。那么要实现机器翻译这个工作,咱们的机器不仅要读懂文本的意思,还须要被动的生成文本。 Char level and Word level这里简要介绍一下句子的宰割。句子能够宰割成字符级别和单词级别,之前咱们所讲的都是单词级别的;二者各有利弊。 字符级别:“I miss you” => /s I m i s s y o u /e。其中/s示意起始符,/e示意终止符。字符级别的益处就是,因为字符的数量是很少的,所以能够对每一个字符间接做one-hot编码而不须要做embedding(此处不了解的能够先学习word2vec模型)。那么害处就是一句话被宰割成进去造成的序列就比拟长了,在RNN中会存在忘记。单词级别:“I miss you” => /s I miss you /e。益处是序列长度比拟短,此处的长度为5。害处就是须要大量的训练集做embedding,而embedding会造成过拟合。RNN文本生成器接下来为了模型的繁难(其实就是模型图里少画一层embedding层罢了),对立采取字符级别的宰割。 如图,输出文本是“the cat sat on the ma”,此时RNN模型的输入h曾经失去,那么此时我做一个softmax就能够失去一个概率向量,选取概率最大的那个维度对应的字符,就能够预测失去基于the cat sat on the ma前面的字符。那么同理,当我失去the cat sat on the mat字符串之后,再进行一次迭代,不就又能够失去前面的字符了嘛!直到生成的字符是终止符时进行。这样咱们就实现了文本生成! 训练RNN文本预测器给定一段文本P:the cat sat on the mat,而后输出the cat sat on the ma。通过下面的形容咱们晓得此时文本预测器可能预测出下一个最可能呈现的字符,比方预测呈现字符a,而P中的t其实就是标签。通过计算CrossEntropy(a,t)即可失去误差,通过反向流传即可更新模型参数。 Seq2Seq模型是由编码器Encoder和解码器Decoder组成的,编码采纳的就是RNN,解码采纳的其实就是上文的文本生成器,采纳的模型也是RNN。 此处是须要实现将英文转化为德文,那么先将英文go away输出LSTM中最终失去的状态向量h和记忆信息c。将这两个数据作为Decoder的初始输出传入。 因为起始符是确定的,所以将起始符作为x0输出(为防止遗记RNN模型,上面再放一张RNN的图)。 将起始符输出之后必然会失去一个h0,通过h0就能够进行预测了,同样也是通过softmax将其转化为概率向量而后选取概率最大的字符作为后果。那么此时预测进去的字符持续作为x1输出进行下一步的计算,周而复始,直至输入的字符是终止符时进行。 Seq2Seq模型的训练其实和文本预测器的训练一样,不同的中央就在于文本预测器只更新了decoder的参数,而Seq2Seq会将Encoder的参数也一并更新。此处的训练形式其实有点拉胯,之后咱们会提到BERT的预训练形式。 最初再来看Seq2Seq的整体结构图就比拟好了解了。 Seq2Seq一点改良因为咱们晓得LSTM在记忆力方面是比SimpleRNN要好的,然而当序列长度增大之后,依旧会存在对晚期的输出忘记的状况。那么咱们能够应用Bi-LSTM,也就是双向的LSTM来取代LSTM,使得对文本的向量化表征更加全面,信息不会失落。显然这种双向的LSTM是用来革新Seq2Seq中Encoder局部,可能使编码进去的向量示意的信息更全面;而Decoder中不能也没有必要应用Bi-LSTM。 ...

August 6, 2021 · 1 min · jiezi

关于nlp:架构级理解BERT逃不掉的RNN

前言写这一个系列的动因就是本人想深刻理解一下BERT的原理。BERT是怎么被构想进去的?比拟适宜刚入门的小白浏览,读完之后会发现其实不过如此。那么既然是架构级的,本系列不会过多的波及代码级的或者说公式级的,更多的是设计形式以及设计的起因。本系列将分成以下几个模块, 逃不掉的RNN探究机翻的底细:Seq2SeqAttention is ALL you needTransformer是谁?This is BERT时序数据回忆咱们晓得的全连贯层,他实际上做的就是将一堆input转换为一堆output,这些input之间没有工夫上的关系,而是将所有input揉在一起输出到模型中。而对于时序数据,比方一段话,人在浏览的时候是单向的、随着工夫将input一一输出,并且很多时候input的长度是未知的。所以咱们就须要一个新的架构来解决这一类的时序数据。 Simple RNN为什么须要RNN?假如咱们须要解决一个文本分类工作。要想对文本进行分类,那么咱们必须将这个文本数字化或者说向量化,并且须要保障这个向量可能表征这句话,蕴含了这句话中所有的特色。而通过RNN就可能将一个句子中的所有信息都交融起来,表征成一个向量。 下面就是RNN的架构图,咱们一步一步来讲。首先是咱们的输出,显然是一串文本:the cat sat ... mat。那么对于某个单词而言,比方the,想要参加后续的运算,首先须要将其向量化,这里能够用到word2vec等算法,通过语义的形式将单词转化为一个向量x0。而后将x0输出矩阵A,外部过程如下, 将x0与ht-1(此处因为x0是第一个,ht-1实践上来说不存在,那么能够通过一些解决比方将其置零之类代替)连接起来,和矩阵A相乘,再进行tanh激活函数计算,失去h0。而后将h0和x1输出到矩阵A又反复上述计算,周而复始(所以RNN叫循环神经网络,上一步的输入又作为下一步的输出)。显然,h0中存储着x0的状态,h1中存储着x0和x1的状态,以此类推,最初一个输入ht中应该存储着后面所有xi(单词)的信息。这样,ht相当于征集了所有村民的意见,就能够作为代表拿去评估,实现二分类的工作。 此处思考一个问题:为什么须要tanh激活? 假如没有tanh,为不便探讨,咱们假如所有的x都是零向量,那么ht ≈ A×ht-1。易得h100 = A100h0。易得Ax = x,A100x = 100x,若A的特征值稍大于1,那么A100就间接爆炸了;若稍小于1,那么A100预计就间接变成零矩阵了。所以须要tanh进行一个相似于正则化的工作。 毛病使人提高,RNN存在什么毛病呢?=>RNN的记忆力特地短,什么是记忆力?之前咱们说“最初一个输入ht中应该存储着后面所有xi(单词)的信息”,的确,然而当序列长度变大,对于最后面的x所遗留下来的特色可能曾经被笼罩掉了。能够通过计算h~100~对于x0的导数来判断之间的相关性,计算可得,导数靠近于0。 所以咱们能够发现,simpleRNN在解决短距离的文本时成果较好,当序列长度变大之后,成果就不太好了。所以引出LSTM。 革新SimpleRNN => LSTM可见LSTM其实也是一类RNN罢了,此处我不会具体解释其原理,因为Attention is ALL you need,RNN能够被attention取代了。 首先来看LSTM的架构, 仔细观察发现,其实和简略RNN没有很大区别,其实就是把之前单纯的乘矩阵A转化为一系列更为简单的操作。所以SimpleRNN能够被LSTM齐全替换掉,就像替换某个整机一样。外部的大抵过程如下。 为了补救SimpleRNN 记忆力失落的问题,LSTM将记忆放在一个传输带上,也就是下图中的Conveyor Belt,也就是左下方的C~t-1~,记忆的更新形式如图右下方所示,其中能够发现f向量,这是LSTM中的忘记门,他能够管制哪些信息疏忽,哪些信息保留。忘记门也保障了长距离记忆始终存在。 最初是LSTM的输入,在记忆信息C的根底上进行肯定的加工之后失去ht。同样和SimpleRNN相似,将上一步的输入作为输出传入下一层。

August 6, 2021 · 1 min · jiezi

关于nlp:java-实现中英文拼写检查和错误纠正可我只会写-CRUD-啊

简略的需要邻近上班,小明忙完了明天的工作,正筹备上班回家。 一条音讯闪动了起来。 “最近发现公众号的拼写查看性能不错,帮忙用户发现错别字,体验不错。给咱们零碎也做一个。” 看着这条音讯,小明在心田默默问候了一句。 “我 TND 的会做这个,就间接去人家总部下班了,在这受你的气。” “好的”,小明回复到,“我先看看” 明天,天王老子来了我也得上班,耶稣也留不住。 小明想着,就回家了。 沉着剖析说到这个拼写查看,小明其实是晓得的。 本人没吃过猪肉,还是见过猪跑的。 平时看过一些公众号大佬分享,说是公众号推出了拼写查看性能,当前再也不会有错别字了。 起初,小明还是在他们的文章中看到了不少错别字。起初,就没有起初了。 为什么不去问一问万能的 github 呢? 小明关上了 github 发现如同没有成熟的 java 相干的开源我的项目,有的几颗星,用起来不太释怀。 预计 NLP 是搞 python 的比拟多吧,java 实现中英文拼写检查和谬误纠正?可我只会写 CRUD 啊! 小明默默地点起了一根华子…… 窗外的夜色如水,不禁陷入了深思,我来自何方?去往何处?人生的意义又是什么? 尚有余热的烟灰落在了小明某东买的拖鞋上,把他脑海中脱缰的野马烫的一伶俐。 没有任何思路,没有任何脉络,还是先洗洗睡吧。 那一夜,小明做了一个长长的美梦。梦里没有任何的错别字,所有的字句都坐落在正确的地位上…… 转折第二天,小明关上了搜寻框,输出 spelling correct。 可喜的是,找到了一篇英文拼写纠正算法解说。 吾尝终日而思矣,不如顷刻之所学也。小明叹了一句,就看了起来。 算法思路英文单词次要有 26 个英文字母组成,所以拼写的时候可能呈现谬误。 首先能够获取正确的英文单词,节选如下: apple,16192applecart,41applecarts,1appledrain,1appledrains,1applejack,571applejacks,4appleringie,1appleringies,1apples,5914applesauce,378applesauces,1applet,2每一行用逗号分隔,前面是这个单词呈现的频率。 以用户输出 appl 的为例,如果这个单词不存在,则能够对其进行 insert/delete/replace 等操作,找到最靠近的单词。(实质上就是找到编辑间隔最小的单词) 如果输出的单词存在,则阐明正确,不必解决。 词库的获取那么英文词库去哪里取得呢? 小明想了想,于是去各个中央查了一圈,最初找到了一个比较完善的英文单词频率词库,共计 27W+ 的单词。 节选如下: aa,1831aah,45774aahed,1aahing,30aahs,23...zythums,1zyzzyva,2zyzzyvas,1zzz,76zzzs,2 外围代码获取用户以后输出的所有可能状况,外围代码如下: /** * 构建出以后单词的所有可能谬误状况 * * @param word 输出单词 * @return 返回后果 * @since 0.0.1 * @author 老马啸东风 */private List<String> edits(String word) { List<String> result = new LinkedList<>(); for (int i = 0; i < word.length(); ++i) { result.add(word.substring(0, i) + word.substring(i + 1)); } for (int i = 0; i < word.length() - 1; ++i) { result.add(word.substring(0, i) + word.substring(i + 1, i + 2) + word.substring(i, i + 1) + word.substring(i + 2)); } for (int i = 0; i < word.length(); ++i) { for (char c = 'a'; c <= 'z'; ++c) { result.add(word.substring(0, i) + c + word.substring(i + 1)); } } for (int i = 0; i <= word.length(); ++i) { for (char c = 'a'; c <= 'z'; ++c) { result.add(word.substring(0, i) + c + word.substring(i)); } } return result;}而后和词库中正确的单词进行比照: ...

July 21, 2021 · 4 min · jiezi

关于nlp:越学越有趣『手把手带你学NLP』系列项目07-机器翻译的那些事儿

课程简介 “手把手带你学NLP”是基于飞桨PaddleNLP的系列实战我的项目。本系列由百度多位资深工程师精心打造,提供了从词向量、预训练语言模型,到信息抽取、情感剖析、文本问答、结构化数据问答、文本翻译、机器同传、对话零碎等实际我的项目的全流程解说,旨在帮忙开发者更全面清晰地把握百度飞桨框架在NLP畛域的用法,并可能触类旁通、灵便应用飞桨框架和PaddleNLP进行NLP深度学习实际。 6月,百度飞桨 & 自然语言解决部携手推出了12节NLP视频课,课程中具体解说了本实际我的项目。 观看课程回放请戳:https://aistudio.baidu.com/ai... 欢送来课程QQ群(群号:758287592)交换吧~~ 背景介绍 机器翻译是利用计算机将一种自然语言(源语言)转换为另一种自然语言(目标语言)的过程。 本我的项目是机器翻译畛域支流模型 Transformer 的 PaddlePaddle 实现,快来基于此我的项目搭建本人的翻译模型吧。 Transformer 是论文《 Attention Is All You Need 》中提出的用以实现机器翻译(Machine Translation)等序列到序列(Seq2Seq)学习工作的一种全新网络结构,其齐全应用注意力(Attention)机制来实现序列到序列的建模。 图1:Transformer 网络结构图相较于此前 Seq2Seq 模型中宽泛应用的循环神经网络(Recurrent Neural Network, RNN),应用Self Attention进行输出序列到输入序列的变换次要具备以下劣势: 计算复杂度小特色维度为 d 、长度为 n 的序列,在 RNN 中计算复杂度为 O(n d d) (n 个工夫步,每个工夫步计算 d 维的矩阵向量乘法),在Transformer中计算复杂度为 O(n n d) (n 个工夫步两两计算 d 维的向量点积或其余相关度函数),n 通常要小于 d 。计算并行度高RNN 中以后工夫步的计算要依赖前一个工夫步的计算结果;Self-Attention 中各工夫步的计算只依赖输出,不依赖之前工夫步输入,各工夫步能够齐全并行。容易学习长距离依赖(long-range dependencies)RNN 中相距为 n 的两个地位间的关联须要 n 步能力建设;Self-Attention 中任何两个地位都间接相连;门路越短信号流传越容易。Transformer 构造已被广泛应用在 Bert 等语义示意模型中,获得了显著效果。 ...

July 8, 2021 · 3 min · jiezi

关于nlp:机器都能写SQL了CURD-boysgirls慌不慌

背景结构化查询语言(Structured Query Language)简称SQL,是一种非凡目标的编程语言,是一种数据库查问和程序设计语言,用于存取数据以及查问、更新和治理关系数据库系统。CURD代表创立(Create)、更新(Update)、读取(Retrieve)和删除(Delete)操作。 大量利用业务代码,总是一些curd的货色。随着人工智能倒退,机器生成代码曾经变成可能,前段时间GitHub官网和openAI联结为程序员们送上编程神器——GitHub Copilot。程序员只有写下一段正文,Github Copilot就能够补全剩下的代码、提出改良的倡议。 明天咱们来看另一种可能性:咱们输出一串汉字,计算机帮咱们从数据库中间接获取咱们要的统计数据。这样连代码都不必机器生成了,计算机间接能够帮终端用户解决一些罕用的数据分析需要了。先来看下最终成果 零碎搭建咱们先来形容下零碎搭建过程,最初再介绍一下原理,搭建过程很简略,大家有工夫能够本人上手试验下,这里用到了百度的Sugar可视化服务以及云数据库MemFireDB 咱们先登录MemFireDB,将曾经筹备好的数据上传上去,这里咱们筹备三张表,stockbars股票原始信息、stockrsvs咱们计算的rsv指标、stockkdj咱们计算的kdj指标,具体如何上传数据以及计算指标能够参看另外一篇文章 https://juejin.cn/post/697920... 咱们进入百度Sugar配置数据源以及数据模型,配置数据源时用到的数据库IP在MemFireDB控制台中获取,这里咱们须要把表stockrsvs和stockkdjs两个表进行内连贯,连贯字段用stock_id和date关联好的数据能够点击“查看数据”进行预览 关上数据模型的“智能问答”选项,数据模型会先变为“待训练”,后变为“训练实现”,默认应用数据字段的「物理字段名称」以及「数据模型中的显示名称」来匹配数据字段,如果须要通过更多的说法来对数据字段进行匹配,能够对数据字段配置同义词这里还能够配置每个字段的同义词。 最初、创立“AI摸索页面”,勾选曾经开启了“智能问答”选项的数据模型即可实现下面视频中的成果,是不是很简略 好了,零碎搭建完了,是不是急不可待的想晓得零碎实现的原理呢,这里用到了数据技术以及人工智能的NL2SQL技术,数据库系统提供了数据的存取和SQL语句的解析,sugar则提供了自然语言到SQL的转换 技术原理NL2SQL是自然语言解决技术的一个钻研方向,能够将人类的自然语言主动转化为相应的SQL 语句(Structured Query Language结构化查询语言),进而能够与数据库间接交互、并返回交互的后果。比方咱们问:公众 10 万到 20 万之间的车型有几种?NL2SQL能够让机器了解这样的自然语言,并从表格中检索出答案。 NL2SQL,让非专业人士,不须要学习和把握数据库程序语言,就能够自在地查问各种丰盛的数据库:说句话就行。没有条条框框的限度,内容和信息更加丰盛。以前是程序员写一个“模板”,在这个模板里查问内容。NL2SQL的实现,使用了大量前沿的人工智能算法模型,比方使用了多个预训练语言模型,相当于AI大脑,让AI读懂用户语言;使用了图神经网络,让AI“看到”数据库, 一目十行过目不忘,而且更加清晰地分清每个表格内容。 总结最初,前一两年NL2SQL还在一些学术研究阶段,准确率还只有60%左右,明天咱们曾经看到了百度曾经推出了能够商用的零碎,人工智能的倒退太迅速了,他不光代替的是简略的重复劳动,当初连写代码的事件也能够代劳了,小伙伴们,你们颤动么?

July 3, 2021 · 1 min · jiezi

关于nlp:千言数据集文本相似度权威评测网易易智荣登榜首

日前,网易数帆旗下人工智能技术与服务品牌——网易易智在CCF和百度联结举办的“千言数据集:文本类似度”行业测评中击败多支劲旅,荣登榜首。 文本类似度,即辨认两段文本在语义上是否类似,在自然语言解决(NLP)畛域是一个重要钻研方向,目前已大规模商用于智能客服、信息检索、新闻举荐等畛域,如已服务超40万企业客户的网易七鱼智能客服,背地就有这项技术的撑持。 榜单中“网易杭州研究院”为网易易智团队 常识积淀与技术积攒犯罪,网易易智文本类似度雄踞榜首“千言数据集”系列评测是中文自然语言解决畛域的大规模赛事,其中文本类似度开源我的项目收集了来自哈尔滨工业大学的LCQMC、BQ Corpus,以及谷歌的PAWS-X(中文)等公开数据集,冀望对文本类似度模型成果进行综合的评估,推动文本类似度在自然语言解决畛域的利用和倒退。 据理解,这些公开数据集在相干论文的撑持下,对现有的公开文本类似度模型进行了较全面的评估,具备较高的权威性,代表了文本类似度技术钻研的最高水准。 哈尔滨工业大学(深圳)LCQMC数据集工作示例 在本次文本类似度测评中,网易易智联合了多年技术教训积攒,和大规模预训练语言模型的使用,再加上对较量工作进行的针对性优化,获得了目前的优异成绩。 网易易智的参赛队伍示意,这次较量工作次要有2个难点。一个难点是BQ Corpus数据集是金融畛域的数据,该数据集波及到金融行业的大量常识,而通用预训练语言模型难以捕捉到特定行业的潜在常识。为此,团队采纳半监督学习等形式,从网易外部多个业务场景中挖掘出泛金融畛域常识,进而取得金融畛域预训练语言模型,最终在该工作上较大幅度当先于其余参赛团队。 而另一个难点是PAWS-X数据集的品质问题,该数据来自于英文的翻译,翻译内容与实在中文有出入,尤其会对算法造成烦扰的是实体词(如人名、地名)的翻译不对立,即雷同的人名,前一个句子保留英文原文,后一个句子却音译为中文。针对这个数据特点,网易易智利用自研的NER(命名实体辨认)服务进行实体词的辨认与归一化,并利用自研的中文文本纠错服务纠正其中的错别字、语病之后,再进行模型训练,最终在该工作上也获得了第一。 网易易智助力七鱼机器人精准了解客户诉求网易易智基于文本类似度等系列NLP技术构建了一套智能对话零碎,服务团体外部多个业务,如严选客服、IT征询等,并与七鱼业务联结打造智能客服机器人产品,服务团体内部客户。 以九阳股份有限公司为例,其外围诉求之一,是通过高效、精准、人性化的咨询服务保障用户的购物体验,如用户对于小家电产品性能、操作、价格、优惠活动、养护、培修等问题的征询。 为此,九阳接入了网易七鱼在线机器人,在问题匹配率可高达90%以上的根底上,提供更懂用户的智能服务体验。基于网易易智文本类似度算法,七鱼在线机器人实现了外围语义匹配,从而达成BOT、FAQ等性能。此外,通过语义匹配技术,七鱼在线机器人还实现了对知识库的智能开掘与生成。借助这些能力,七鱼在线机器人能够高效、精准地解答不同场景下的客户问题。而在快递畛域,申通快递也接入了七鱼智能客服应答快递征询问题,这是一个与上述金融、小家电齐全不同的畛域,然而使用网易易智同样的技术原理,智能客服疾速实现了类似的成果。 网易易智NLP促成数字业务翻新文本类似度技术的商业价值并不局限于智能客服畛域。据网易易智负责人介绍,文本类似度技术大类归于文本匹配,除了对话引擎里,该技术在网易外部还有更多的利用落地,如网易云音乐中的评论智能开掘、直播/短视频中的歌词匹配以及常识公路业务中的视频选题类似度检测等翻新解决方案利用。 而从整个技术畛域来看,作为一门让机器了解人类语言的技术,NLP素有“人工智能皇冠上的明珠”之称,既是难以攻克的前沿课题,也对数字业务翻新具备重要的意义。除了文本类似度,网易易智也始终在摸索NLP技术与业务翻新的最大公约数,并获得了一些阶段性的成绩。 例如,语义解析技术在软件测试中的应用,显著晋升自动化程度、实现降本增效,这对于数字化软件品质的保障十分无利;文本纠错技术在网易新闻等文稿审校场景中大规模应用,将拼写及语法等谬误及时发现并予以纠正,大幅晋升用户浏览体验,同时升高内容生产的工作量。 将来,网易易智还将联结网易数帆旗下无数团队,摸索NLP在大数据系统中的利用,如反对业务人员与剖析零碎的自然语言交互,使得企业可能更好地施展大数据的价值。

June 21, 2021 · 1 min · jiezi

关于nlp:四大模型革新NLP技术应用揭秘百度文心ERNIE最新开源预训练模型

在5月20日完结的2021深度学习开发者峰会 WAVE SUMMIT 上,百度文心 ERNIE 开源了四大预训练模型。本文对这四大开源预训练模型进行了具体的技术解读。2019年以来,NLP 预训练模型在技术创新和工业利用上一直获得冲破,但以后预训练模型仍有一些痛点困扰着开发者: 仅思考繁多粒度语义建模,不足多粒度常识引入,语义理解能力受限;受限于 Transformer 构造的建模长度瓶颈,无奈解决超长文本;聚焦语言等繁多模态,不足工业实在利用场景针对多个模态如语言、视觉、听觉信息的联结建模能力。5月20日举办的2021深度学习开发者峰会 WAVE SUMMIT 上,依靠飞桨外围框架,百度文心 ERNIE 最新开源四大预训练模型:多粒度语言常识加强模型 ERNIE-Gram、长文本了解模型 ERNIE-Doc、交融场景图常识的跨模态了解模型 ERNIE-ViL、语言与视觉一体的模型 ERNIE-UNIMO。 针对以后预训练模型现存的难点痛点,此次文心 ERNIE 开源的四大预训练模型不仅在文本语义了解、长文本建模和跨模态了解三大畛域获得冲破,还领有宽泛的利用场景和前景,进一步助力产业智能化降级。 文心 ERNIE 开源版地址:https://github.com/PaddlePaddle/ERNIE 文心 ERNIE 官网地址:https://wenxin.baidu.com/ 一、多粒度语言常识加强模型 ERNIE-Gram 从 ERNIE 模型诞生起,百度研究者们就在预训练模型中引入常识,通过常识加强的办法晋升语义模型的能力。本次公布的 ERNIE-Gram 模型正是通过显式引入语言粒度常识,从而晋升模型的成果。具体来说,ERNIE-Gram 提出显式 n-gram 掩码语言模型,学习 n-gram 粒度语言信息,绝对间断的 n-gram 掩码语言模型大幅放大了语义学习空间,(V^n→V_(n-gram),其中 V 为词表大小,n 为建模的 gram 长度),显著晋升预训练模型收敛速度。 ▲ 图1-1 间断 n-gram 掩码语言模型 vs 显式 n-gram 掩码语言模型 此外,在显式 n-gram 语义粒度建模根底上,ERNIE-Gram 提出多层次 n-gram 语言粒度学习,利用 two-stream 双流机制,实现同时学习 n-gram 语言单元内细粒度(fine-grained)语义常识和n-gram语言单元间粗粒度(coarse-grained)语义常识,实现多层次的语言粒度常识学习。 ...

May 31, 2021 · 1 min · jiezi

关于nlp:词向量Word-Embedding原理及生成方法

前言Word Embedding是整个自然语言解决(NLP)中最罕用的技术点之一,广泛应用于企业的建模实际中。咱们应用Word Embedding可能将天然文本语言映射为计算机语言,而后输出到神经网络模型中学习和计算。如何更深刻地了解以及疾速上手生成Word Embedding呢?本文对Word Embedding原理和生成办法进行了解说。 一、Word Embedding初探什么是Word Embedding一句话概述,Word Embedding即词向量,是一种函数映射关系。咱们晓得,在机器学习中,特色都是以数值的模式进行传递的。同样的,在NLP中,文本特色也须要被映射成数值向量。例如,咱们将单词“你好”进行Word Embedding后,能够把其映射成一个5维向量:你好 ——> (0.1, 0.5, 0.3, 0.2, 0.2)。 词向量的映射过程一般来说,咱们采纳“词 ——> 向量空间1 ——> 向量空间2”的映射过程实现文本单词向量化。整个映射过程能够分为两步: 1、词 ——> 向量空间1该步骤解决把一个词转换成vector(数值向量)的问题。例如,将文本单词转换成One-Hot向量。 2、向量空间1 ——> 向量空间2该步骤解决vector的优化问题,即在曾经有了一个vector的状况下,寻求更好的方法优化它。 二、应用One-Hot和SVD求Word Embedding办法One-Hot(词——>向量空间1)One-Hot是目前最常见的用于提取文本特色的办法之一。本文应用One-Hot实现映射过程的第一步,即词——>向量空间1。 咱们将语料库中的每一个词都作为一个特色列,如果语料库中有V个词,则有V个特色列,例如: 在这一映射过程中,One-Hot存在以下毛病:1)容易产生稠密特色;2)容易引发维度爆炸;3)使得词间失去语义关系。 例如,依照常识,旅店(hotel)和汽车旅店(motel)间应该是具备某种相似性的,然而咱们的映射后果却表明他们的向量积为0。旅店(hotel)和汽车旅店(motel)之间的相似性等于其和猫(cat)之间的相似性,这显然是不合理的。 改良方向: 1)尝试将词向量映射到一个更低维的空间; 2)同时放弃词向量在该低维空间中具备语义相似性,如此,越相干的词,它们的向量在这个低维空间里就能靠得越近。 SVD(向量空间1——>向量空间2)1、如何示意出词和词间的关系SVD,即奇怪值合成(Singular Value Decomposition),是在机器学习畛域广泛应用的算法,它不仅能够用于降维算法中的特色合成,也广泛应用于举荐零碎,以及自然语言解决等畛域,是很多机器学习算法的基石。本文应用SVD来解决vector的优化问题。 咱们首先结构了一个亲和矩阵(affinity matrix),先保障在不降维的状况下,可能反映出词和词间的关系。结构亲和矩阵的形式有很多种,这里列举较常见的两种形式。 ✦形式一 假如你有N篇文章,一共有M个去重词,则能够结构亲和矩阵如下: 其中每一个值示意单词在某篇文章中的呈现次数。这个矩阵能够反映词的一些性质。比方一个词是“收获”,那么它可能在“农学”类的文章里呈现得多一些;一个词是“电影”,那么它可能在“艺术”类的文章中呈现得多一些。 ✦形式二 假如咱们有M个去重单词,则可结构M*M的矩阵,其中每个值示意相应的两个单词在一篇文章里独特呈现的次数,例如: 2、对亲和矩阵进行合成有了亲和矩阵,就能够对其进行SVD合成,这个目标就是进行降维了,后果如下: 咱们把原亲和矩阵X(右边)分解成了左边的三局部,左边的三个局部从左到右能够这么了解: ✦ U矩阵:从旧的高维向量空间到低维向量空间的一种转换关系; ✦ 矩阵:方差矩阵。每一列示意低维空间中每一个坐标轴的信息蕴含量。方差越大,阐明在该坐标轴上数据稳定显著,则信息蕴含量越丰盛。在降维时,咱们首先思考保留方差最大的若干个坐标轴; ✦ V矩阵:每个词向量的新示意形式。在和前两个矩阵相乘后,失去最终的词向量示意形式。 此时,左边的矩阵仍然是V维的,还没有实现降维。因而,正如前文所说,咱们取top k大的方差列,将U,和V三个矩阵依照方差从大到小的顺序排列好,这样就能失去最终的降维后的后果了: 3、SVD毛病1)亲和矩阵的维度可能常常变,因为总有新的单词加进来,每加进来一次就要从新做SVD合成,因而这个办法不太通用;2)亲和矩阵可能很稠密,因为很多单词并不会成对呈现。 改良思路: 1)在升高稠密性方面,能够不仅仅关注和一个单词有上下文关系的那些词;2)对于一个模型从没有见过一个单词,则思考从上下文关系中猜到它的信息,以减少通用性。 沿着这两个思路,咱们能够思考引入CBOW和Skip-Gram,来求word embedding。 三、CBOW和Skip-Gram求Word EmbeddingCBOW的全称是continuous bag of words(间断词袋模型),其本质也是通过context word(背景词)来预测一个单词是否是中心词(center word)。Skip-Gram算法则是在给定中心词(center word)的状况下,预测一个单词是否是它的上下文(context)。 ...

May 26, 2021 · 1 min · jiezi

关于nlp:哈工大LTP模型Mac上的安装与使用

一、装置1、一上午半下午的工夫都花在了装置上,最初弄明确了ltp和pyltp不一样,而且成熟的版本是3.4.0。2、(就是这么菜)弄明确了github的一些我的项目下面还能查看历史的release,正儿八经的3.4.0就是从release里边找着的复杂性: python3.6(3.7不行)对编译器也有要求还要批改一些配置资源:在mac上装置pyltp把ltp这个目录替换到pyltp里xcrun:error解决办法ltp网站:里边提供有模型的下载pyltp应用办法LTP命名实体辨认标注集:对照实体辨认之后的后果

January 12, 2021 · 1 min · jiezi

关于nlp:BookCorpus196640本纯文本书籍的数据集可用于训练GPT等大型语言模型

假如咱们想训练一个世界通用的GPT模型,就像OpenAI一样。因为没有数据,所以通常很难办到。 当初有数据集了——————BookCorpus的"books3",也叫做"all of bibliotik in plain .txt form"数据集。间接下载链接:https://the-eye.eu/public/AI/... Book3数据集数据集的品质十分高,作者为了构建数据集,花了一周工夫修理了epub2txt脚本,在https://github.com/shawwn/scrap中能够查看这个名为“epub2txt-all”的工具。 新脚本的特点:正确保留构造,与目录十分匹配;正确出现数据表(默认状况下 html2txt 次要为表生成垃圾查找后果),正确保留代码构造,使源代码和相似内容在视觉上保持一致,将编号列表从"1\"转换为"1"。通过"ftfy.fix_text()使用在全文上 (这是 OpenAI 对 GPT 的用处)运行全文,将Unicode的撇号替换为ascii编码的撇号;将 Unicode 椭圆扩大到"..."(三个独自的 ascii 字符)。本数据集特点:蕴含196,640本书籍全副txt格局链接更牢靠,可间接下载。链接:books3 tar.gz文件,37Gb以下是对于BookCorpus的介绍,您能够通过本我的项目源码用其余的书目链接自制数据集,也能够在其中下载其余优良的数据集。 BookCorpushttps://github.com/soskek/boo... BookCorpus是一个风行的大型文本语料库,特地适宜在无人监督下学习句子的编码/解码器。然而,BookCorpus 目前不再散发... 此存储库的数据起源包含smashwords.com的数据,是 BookCorpus 的原始起源。收集的句子可能有局部不同,但数量会更大或简直雷同。如果您在工作中应用这个新语料库,请指定它是个正本。 如何应用筹备可用的书籍的 URL。在此存储库曾经有一个列表,因为该列表是在 2019 年 1 月 19 日至 20 日收集的快照 I (@soskek) 。你能够依据须要决定是否应用url_list.jsonl python -u download_list.py > url_list.jsonl & 下载文件。如果不是txt文件,则会从epub提取文本信息。txt`epub--trash-bad-countepub` python download_files.py --list url_list.jsonl --out out_txts --trash-bad-count 后果将保留到--out`out_txts` 后处理应用每行句子格局制作串联文本。 python make_sentlines.py out_txts > all.txt 如果要将它们标记成微软的布林火分段词请运行以下。您能够抉择其余选项。 python make_sentlines.py out_txts | python tokenize_sentlines.py > all.tokenized.txt 环境python3 is recommendedbeautifulsoup4progressbar2blingfirehtml2textlxmlpip install -r requirements.txt后记在下载37GB的压缩包之前,请先看阐明链接。 ...

November 2, 2020 · 1 min · jiezi

关于nlp:Autoregressive-LM与Autoencoder-LM

摘录自知乎XLNet:运行机制及和Bert的异同比拟 1.自回归语言模型(Autoregressive LM)在ELMO/BERT进去之前,通常讲的语言模型其实是依据上文内容预测下一个可能追随的单词,就是常说的自左向右的语言模型工作,或者反过来也行,就是依据下文预测后面的单词,这种类型的LM被称为自回归语言模型。GPT就是典型的自回归语言模型。ELMO只管看上去利用了上文,也利用了下文,然而实质上依然是自回归LM,这个跟模型具体怎么实现有关系。ELMO是做了两个方向(从左到右以及从右到左两个方向的语言模型),然而是别离有两个方向的自回归LM,而后把LSTM的两个方向的隐节点状态拼接到一起,来体现双向语言模型这个事件的。所以其实是两个自回归语言模型的拼接,实质上依然是自回归语言模型。 自回归语言模型有长处有毛病,毛病是只能利用上文或者下文的信息,不能同时利用上文和下文的信息,当然,貌似ELMO这种双向都做,而后拼接看上去可能解决这个问题,因为交融模式过于简略,所以成果其实并不是太好。它的长处,其实跟上游NLP工作无关,比方生成类NLP工作,比方文本摘要,机器翻译等,在理论生成内容的时候,就是从左向右的,自回归语言模型人造匹配这个过程。而Bert这种DAE模式,在生成类NLP工作中,就面临训练过程和利用过程不统一的问题,导致生成类的NLP工作到目前为止都做不太好。 2. 自编码语言模型(Autoencoder LM)自回归语言模型只能依据上文预测下一个单词,或者反过来,只能依据下文预测后面一个单词。相比而言,Bert通过在输出X中随机Mask掉一部分单词,而后预训练过程的次要工作之一是依据上下文单词来预测这些被Mask掉的单词,如果你对Denoising Autoencoder比拟相熟的话,会看出,这的确是典型的DAE的思路。那些被Mask掉的单词就是在输出侧退出的所谓乐音。相似Bert这种预训练模式,被称为DAE LM。 这种DAE LM的优缺点正好和自回归LM反过来,它能比拟天然地融入双向语言模型,同时看到被预测单词的上文和下文,这是益处。毛病次要在输出侧引入[Mask]标记,导致预训练阶段和Fine-tuning阶段不统一的问题,因为Fine-tuning阶段是看不到[Mask]标记的。DAE吗,就要引入乐音,[Mask] 标记就是引入乐音的伎俩,这个失常。 3. XLNET运行机制XLNet的出发点就是:是否交融自回归LM和DAE LM两者的长处。就是说如果站在自回归LM的角度,如何引入和双向语言模型等价的成果;如果站在DAE LM的角度看,它自身是融入双向语言模型的,如何抛掉外表的那个[Mask]标记,让预训练和Fine-tuning保持一致。当然,XLNet还讲到了一个Bert被Mask单词之间互相独立的问题,我置信这个不太重要,起因前面会说。当然,我认为这点不重要的事件,纯正是个人观点。

September 10, 2020 · 1 min · jiezi

关于nlp:A-Survey-on-Deep-Learning-for-Named-Entity-Recognition2020阅读笔记

1. Summary文章次要介绍了NER的资源(NER语料及工具),并从distributed representation for input,context encoder和tag decoder三个维度介绍了目前现有的工作,并调研了目前最具代表性的深度学习办法。最初提出了目前NER零碎面临的挑战以及将来的钻研方向。 2. Introduction(1) NEs通常分为两种:generic NEs (e.g., person and location) and domain-specific NEs (e.g., proteins, enzymes, and genes)。(2) 支流NER办法有以下四种: Rule-based approaches: which do not need annotated data as they rely on hand-crafted rules.Unsupervised learning approaches: which rely on unsupervised algorithms without hand-labeled training examples.Feature-based supervised learning approaches: which rely on supervised learning algorithms with careful feature engineering.Deep-learning based approaches: which automatically discover representations needed for the classification and/or detection from raw input in an end-to-end manner.3. Motivation近年来深度学习办法在多个畛域获得微小的胜利,在NER零碎上利用深度学习办法也胜利在多个NER工作上达成SOTA。作者冀望通过比拟不同的深度学习架构,以获知哪些因素影响了NER的性能。 ...

August 31, 2020 · 1 min · jiezi

关于nlp:零基础入门NLP-基于深度学习的文本分类2

介绍在上一节中, 介绍了FastText中的两种词向量办法, CBoW和Skip-gram. 这里咱们介绍一种相似的办法word2vec, 并应用Gensim来训练咱们的word2vec. word2vec来自Google的Tomas Mikolov等人于2013年在论文Distributed Representations of Words and Phrases and their Compositionality中提出了word2vec词示意办法, word2vec能够分为两种CBoW和Skip-gram模型, 但和上一节中提到的CBoW和Skip-gram有所不同. 能够构想, 依照上一节的思路, 咱们训练CBoW或Skip-gram模型, 最终网络输入的是每个词概率分布(softmax的输入), 而通常而言, 咱们的字典都蕴含了大量的词, 这会导致大量的softmax计算, 显然, 这是很难承受的. 那么如何提高效率呢.上面就介绍两种提高效率的两种办法 Hierarchical Softmaxword2vec也应用了CBoW和Skip-gram来训练模型, 但并没有采纳传统的DNN构造. 最先优化应用的数据结构是用霍夫曼树来代替暗藏层和输入层的神经元,霍夫曼树的叶子节点起到输入层神经元的作用,叶子节点的个数即为词汇表的小大。 而外部节点则起到暗藏层神经元的作用。 具体如何用霍夫曼树来进行CBOW和Skip-Gram的训练咱们在下一节讲,这里咱们先温习下霍夫曼树。 霍夫曼树的建设其实并不难,过程如下: 输出:权值为(w1,w2,...wn)的n个节点 输入:对应的霍夫曼树 将(w1,w2,...wn)看做是有n棵树的森林,每个树仅有一个节点。在森林中抉择根节点权值最小的两棵树进行合并,失去一个新的树,这两颗树散布作为新树的左右子树。新树的根节点权重为左右子树的根节点权重之和。将之前的根节点权值最小的两棵树从森林删除,并把新树退出森林。反复步骤2和3直到森林里只有一棵树为止。上面咱们用一个具体的例子来阐明霍夫曼树建设的过程,咱们有(a,b,c,d,e,f)共6个节点,节点的权值散布是(20,4,8,6,16,3)。 首先是最小的b和f合并,失去的新树根节点权重是7.此时森林里5棵树,根节点权重别离是20,8,6,16,7。此时根节点权重最小的6,7合并,失去新子树,顺次类推,最终失去上面的霍夫曼树。 个别失去霍夫曼树后咱们会对叶子节点进行霍夫曼编码,因为权重高的叶子节点越凑近根节点,而权重低的叶子节点会远离根节点,这样咱们的高权重节点编码值较短,而低权重值编码值较长。这保障的树的带权门路最短,也合乎咱们的信息论,即咱们心愿越罕用的词领有更短的编码。如何编码呢?个别对于一个霍夫曼树的节点(根节点除外),能够约定左子树编码为0,右子树编码为1.如上图,则能够失去c的编码是00。 假如字典蕴含$N$个词, 则应用哈夫曼二叉树之前的softmax层的复杂度为$O(N)$, 而应用哈夫曼二叉树后, 复杂度降为$O(log(N))$. Negative SampleHierarchical Softmax的确能够在很大水平上进步模型的效率, 应用霍夫曼树来代替传统的神经网络,能够进步模型训练的效率。然而如果咱们的训练样本里的中心词w是一个很生僻的词,那么就得在霍夫曼树中辛苦的向下走很久了。能不能不用搞这么简单的一颗霍夫曼树,将模型变的更加简略呢? nagative sampling(负采样)就是一种代替Hierarchical softmax的办法. 比方咱们有一个训练样本,中心词是$w$,它四周上下文共有2c个词,记为context(w)。因为这个中心词w,确实和context(w)相干存在,因而它是一个实在的正例。通过Negative Sampling采样,咱们失去neg个和w不同的中心词$w_i,i=1,2,..neg$,这样context(w)和$w_i$就组成了neg个并不实在存在的负例。利用这一个正例和neg个负例,咱们进行二元逻辑回归,失去负采样对应每个词$w_i$对应的模型参数$\theta_i$,和每个词的词向量。 从下面的形容能够看出,Negative Sampling因为没有采纳霍夫曼树,每次只是通过采样neg个不同的中心词做负例,就能够训练模型,因而整个过程要比Hierarchical Softmax简略。 具体细节能够查阅paper 应用gensim训练word2vec导入库 import loggingimport randomimport numpy as npimport torchlogging.basicConfig(level=logging.INFO, format='%(asctime)-15s %(levelname)s: %(message)s')# set seed def seed_all(seed): random.seed(seed) np.random.seed(seed) torch.cuda.manual_seed(seed) torch.manual_seed(seed) seed_all(0)划分数据 ...

July 31, 2020 · 2 min · jiezi

关于nlp:零基础入门NLP-基于深度学习的文本分类1

学习指标学习FastText的应用和根底调参应用穿插验证进步精度文本示意办法Part2传统文本示意办法的缺点在上一节种, 介绍了几种文本示意办法 One-hotBag of words(BoW)N-gramTF-IDF以上的办法在肯定水平上能够很好的示意文本, 但它们只能挖掘出文本种很无限的信息, 它们更关注文档种单词的统计特色, 而漠视了单词间互相的关系, 并且或多或少存在维度过高的问题. 另外, 通过以上的形式训练的模型, 简直无奈迁徙到其余工作, 因为不同的工作具备不同的字典, 而咱们简直无奈批改训练好的模型中的字典. 这节中, 我会介绍基于深度学习中的其中一种形式FastText, 它更高效, 表达能力也更强. FastText介绍FastText是一个用于高效的词示意和句子分类的库, fasttext提供了2种模型来计算词示意, 别离是cbow和skip-gram. 上面对这两种模型进行简要介绍 在介绍之前, 还须要理解一个概念, Word Embedding. 因为cbow和skip-gram都是word embedding的具体实现形式. word embedding其实更上一节当中的词示意办法很像, 它其实就是词的向量化表现形式, 就好比咱们用RGB3个值来示意一个像素一样. 那么为什么须要embedding呢, 比方在人类语言中, 词cat和dog都是动物, 两者比拟靠近, 那么如何示意两个词比拟类似呢. 再比方intelligent和clever都能够示意聪慧的, 具备雷同的含意; 还有很多这种单词之间的语义关系. 而word embedding能够将这种语义关系进行量化, 从而解决这个问题, 在word embedding中, 咱们期待同一个类别的词向量在嵌入空间中应该靠的比拟近, 即相互之间的间隔比拟小; 没有关系的词应该相距很远等等. 那么如何在思考单词之间的语义信息下对单词进行量化呢, 这就是接下来介绍的内容了 CBOW(continuous bag of words)CBOW也叫间断词袋模型, 它是由一个3层的全连贯神经网络形成, 如下图所示它将每个单词的上下文作为输出, 来预测与上下文绝对应的单词. 比方上面的这个例子: Have a great day 咱们将great作为网络输出, 尝试应用单个上下文输出great来预测指标单词day. 具体来说, 应用输出单词的one-hot向量输出, 而后评估指标单词(day)的one-hot向量与网络输入的损失. 在预测指标单词的one-hot向量的过程中, 网络学习指标单词的向量示意(隐层的输入). ...

July 27, 2020 · 2 min · jiezi

关于nlp:零基础入门NLP-基于深度学习的文本分类1

学习指标学习FastText的应用和根底调参应用穿插验证进步精度文本示意办法Part2传统文本示意办法的缺点在上一节种, 介绍了几种文本示意办法 One-hotBag of words(BoW)N-gramTF-IDF以上的办法在肯定水平上能够很好的示意文本, 但它们只能挖掘出文本种很无限的信息, 它们更关注文档种单词的统计特色, 而漠视了单词间互相的关系, 并且或多或少存在维度过高的问题. 另外, 通过以上的形式训练的模型, 简直无奈迁徙到其余工作, 因为不同的工作具备不同的字典, 而咱们简直无奈批改训练好的模型中的字典. 这节中, 我会介绍基于深度学习中的其中一种形式FastText, 它更高效, 表达能力也更强. FastText介绍FastText是一个用于高效的词示意和句子分类的库, fasttext提供了2种模型来计算词示意, 别离是cbow和skip-gram. 上面对这两种模型进行简要介绍 在介绍之前, 还须要理解一个概念, Word Embedding. 因为cbow和skip-gram都是word embedding的具体实现形式. word embedding其实更上一节当中的词示意办法很像, 它其实就是词的向量化表现形式, 就好比咱们用RGB3个值来示意一个像素一样. 那么为什么须要embedding呢, 比方在人类语言中, 词cat和dog都是动物, 两者比拟靠近, 那么如何示意两个词比拟类似呢. 再比方intelligent和clever都能够示意聪慧的, 具备雷同的含意; 还有很多这种单词之间的语义关系. 而word embedding能够将这种语义关系进行量化, 从而解决这个问题, 在word embedding中, 咱们期待同一个类别的词向量在嵌入空间中应该靠的比拟近, 即相互之间的间隔比拟小; 没有关系的词应该相距很远等等. 那么如何在思考单词之间的语义信息下对单词进行量化呢, 这就是接下来介绍的内容了 CBOW(continuous bag of words)CBOW也叫间断词袋模型, 它是由一个3层的全连贯神经网络形成, 如下图所示它将每个单词的上下文作为输出, 来预测与上下文绝对应的单词. 比方上面的这个例子: Have a great day 咱们将great作为网络输出, 尝试应用单个上下文输出great来预测指标单词day. 具体来说, 应用输出单词的one-hot向量输出, 而后评估指标单词(day)的one-hot向量与网络输入的损失. 在预测指标单词的one-hot向量的过程中, 网络学习指标单词的向量示意(隐层的输入). ...

July 27, 2020 · 2 min · jiezi

关于nlp:零基础入门NLP-基于机器学习的文本分类

任何分类问题, 都须要从数据中开掘有用的特色, 文本分类也不例外. 这里会介绍几种从文本中提取特色的形式. 也是解决文本最根底的办法. 文本示意办法在机器学习算法的训练过程中,假如给定$N$个样本,每个样本有$M$个特色,这样组成了$N×M$的样本矩阵,而后实现算法的训练和预测。同样的在计算机视觉中能够将图片的像素看作特色,每张图片看作hight×width×3的特色图,一个三维的矩阵来进入计算机进行计算。 然而在自然语言畛域,上述办法却不可行:文本是不定长度的。文本示意成计算机可能运算的数字或向量的办法个别称为词嵌入(Word Embedding)办法。词嵌入将不定长的文本转换到定长的空间内,是文本分类的第一步。 One-hot独热标签one-hot通常被用来编码不同类别, 一个编码的每一位对应一个类别, 且只有其中一位是1, 其余均为0. 依照雷同的思维, 咱们也能够用one-hot编码来示意每一个单词. 比方上面两句话 句子1:我 爱 北 京 天 安 门句子2:我 喜 欢 上 海首先会统计两句话中的所有字的类别, 并将每个类别编号 { '我': 1, '爱': 2, '北': 3, '京': 4, '天': 5, '安': 6, '门': 7, '喜': 8, '欢': 9, '上': 10, '海': 11}在这里共包含11个字,因而每个字能够转换为一个11维度稠密向量: 我:[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]爱:[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]...海:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]这种思路看似是正当的, 但存在显著的2个问题 ...

July 25, 2020 · 2 min · jiezi

关于nlp:美团搜索中NER技术的探索与实践

1. 背景命名实体辨认(Named Entity Recognition,简称NER),又称作“专名辨认”,是指辨认文本中具备特定意义的实体,次要包含人名、地名、机构名、专有名词等。NER是信息提取、问答零碎、句法分析、机器翻译、面向Semantic Web的元数据标注等应用领域的重要根底工具,在自然语言解决技术走向实用化的过程中占有重要的位置。在美团搜寻场景下,NER是深度查问了解(Deep Query Understanding,简称 DQU)的底层根底信号,次要利用于搜寻召回、用户用意辨认、实体链接等环节,NER信号的品质,间接影响到用户的搜寻体验。 上面将简述一下实体辨认在搜寻召回中的利用。在O2O搜寻中,对商家POI的形容是商家名称、地址、品类等多个相互之间相关性并不高的文本域。如果对O2O搜索引擎也采纳全副文本域命中求交的形式,就可能会产生大量的误召回。咱们的解决办法如下图1所示,让特定的查问只在特定的文本域做倒排检索,咱们称之为“结构化召回”,可保障召回商家的强相关性。举例来说,对于“海底捞”这样的申请,有些商家地址会形容为“海底捞左近几百米”,若采纳全文本域检索这些商家就会被召回,显然这并不是用户想要的。而结构化召回基于NER将“海底捞”辨认为商家,而后只在商家名相干文本域检索,从而只召回海底捞品牌商家,精准地满足了用户需要。 有别于其余利用场景,美团搜寻的NER工作具备以下特点: 新增实体数量宏大且增速较快:本地生存服务畛域倒退迅速,新店、新商品、新服务品类层出不穷;用户Query往往夹杂很多非标准化表白、简称和热词(如“无忧无虑”、“吸猫”等),这对实现高准确率、高覆盖率的NER造成了很大挑战。畛域相关性强:搜寻中的实体辨认与业务供应高度相干,除通用语义外需退出业务相干常识辅助判断,比方“剪了个头发”,通用了解是泛化形容实体,在搜寻中却是个商家实体。性能要求高:从用户发动搜寻到最终后果出现给用户工夫很短,NER作为DQU的根底模块,须要在毫秒级的工夫内实现。近期,很多基于深度网络的钻研与实际显著进步了NER的成果,但这些模型往往计算量较大、预测耗时长,如何优化模型性能,使之能满足NER对计算工夫的要求,也是NER实际中的一大挑战。2. 技术选型针对O2O畛域NER 工作的特点,咱们整体的技术选型是“实体词典匹配+模型预测”的框架,如图下2所示。实体词典匹配和模型预测两者解决的问题各有偏重,在以后阶段缺一不可。上面通过对三个问题的解答来阐明咱们为什么这么选。 为什么须要实体词典匹配? 答:次要有以下四个起因: 一是搜寻中用户查问的头部流量通常较短、表达形式简略,且集中在商户、品类、地址等三类实体搜寻,实体词典匹配虽简略但解决这类查问准确率也可达到 90%以上。 二是NER畛域相干,通过开掘业务数据资源获取业务实体词典,通过在线词典匹配后可保障辨认后果是畛域适配的。 三是新业务接入更加灵便,只需提供业务相干的实体词表就可实现新业务场景下的实体辨认。 四是NER上游应用方中有些对响应工夫要求极高,词典匹配速度快,根本不存在性能问题。 有了实体词典匹配为什么还要模型预测? 答:有以下两方面的起因: 一是随着搜寻体量的一直增大,中长尾搜寻流量表述简单,越来越多OOV(Out Of Vocabulary)问题开始呈现,实体词典曾经无奈满足日益多样化的用户需要,模型预测具备泛化能力,可作为词典匹配的无效补充。 二是实体词典匹配无奈解决歧义问题,比方“黄鹤楼美食”,“黄鹤楼”在实体词典中同时是武汉的景点、北京的商家、香烟产品,词典匹配不具备消歧能力,这三种类型都会输入,而模型预测则可联合上下文,不会输入“黄鹤楼”是香烟产品。 实体词典匹配、模型预测两路后果是怎么合并输入的? 答:目前咱们采纳训练好的CRF权重网络作为打分器,来对实体词典匹配、模型预测两路输入的NER门路进行打分。在词典匹配无后果或是其门路打分值显著低于模型预测时,采纳模型辨认的后果,其余状况依然采纳词典匹配后果。 在介绍完咱们的技术选型后,接下来会开展介绍下咱们在实体词典匹配、模型在线预测等两方面的工作,心愿能为大家在O2O NER畛域的摸索提供一些帮忙。 3. 实体词典匹配传统的NER技术仅能解决通用畛域既定、既有的实体,但无奈应答垂直畛域所特有的实体类型。在美团搜寻场景下,通过对POI结构化信息、商户评论数据、搜寻日志等独有数据进行离线开掘,能够很好地解决畛域实体辨认问题。通过离线实体库一直的丰盛欠缺累积后,在线应用轻量级的词库匹配实体辨认形式简略、高效、可控,且能够很好地笼罩头部和腰部流量。目前,基于实体库的在线NER识别率能够达到92%。 3.1 离线开掘美团具备丰盛多样的结构化数据,通过对畛域内结构化数据的加工解决能够取得高精度的初始实体库。例如:从商户根底信息中,能够获取商户名、类目、地址、售卖商品或服务等类型实体。从猫眼娱乐数据中,能够获取电影、电视剧、艺人等类型实体。然而,用户搜寻的实体名往往夹杂很多非标准化表白,与业务定义的规范实体名之间存在差别,如何从非标准表白中开掘畛域实体变得尤为重要。 现有的新词开掘技术次要分为无监督学习、有监督学习和近程监督学习。无监督学习通过频繁序列产生候选集,并通过计算紧密度和自由度指标进行筛选,这种办法尽管能够产生充沛的候选汇合,但仅通过特色阈值过滤无奈无效地均衡准确率与召回率,事实利用中通常筛选较高的阈值保障精度而就义召回。先进的新词开掘算法大多为有监督学习,这类算法通常波及简单的语法分析模型或深度网络模型,且依赖领域专家设计繁多规定或大量的人工标记数据。近程监督学习通过开源知识库生成大量的标记数据,尽管肯定水平上缓解了人力标注老本高的问题。然而小样本量的标记数据仅能学习简略的统计模型,无奈训练具备高泛化能力的简单模型。 咱们的离线实体开掘是多源多办法的,波及到的数据源包含结构化的商家信息库、百科词条,半结构化的搜寻日志,以及非结构化的用户评论(UGC)等。应用的开掘办法也蕴含多种,包含规定、传统机器学习模型、深度学习模型等。UGC作为一种非结构化文本,蕴含了大量非标准表白实体名。上面咱们将具体介绍一种针对UGC的垂直畛域新词主动开掘办法,该办法次要蕴含三个步骤,如下图3所示: Step1:候选序列开掘。频繁间断呈现的词序列,是潜在新型词汇的无效候选,咱们采纳频繁序列产生短缺候选汇合。 Step2:基于近程监督的大规模有标记语料生成。频繁序列随着给定语料的变动而扭转,因而人工标记老本极高。咱们利用畛域已有累积的实体词典作为近程监督词库,将Step1中候选序列与实体词典的交加作为训练正例样本。同时,通过对候选序列剖析发现,在上百万的频繁Ngram中仅约10%左右的候选是真正的高质新型词汇。因而,对于负例样本,采纳负采样形式生产训练负例集[1]。针对海量UGC语料,咱们设计并定义了四个维度的统计特色来掂量候选短语可用性: 频率:有意义的新词在语料中该当满足肯定的频率,该指标由Step1计算失去。紧密度:次要用于评估新短语中间断元素的共现强度,包含T散布测验、皮尔森卡方测验、逐点互信息、似然比等指标。信息度:新发现词汇应具备实在意义,指代某个新的实体或概念,该特色次要思考了词组在语料中的逆文档频率、词性散布以及停用词散布。完整性:新发现词汇该当在给定的上下文环境中作为整体解释存在,因而应同时思考词组的子集短语以及超集短语的紧密度,从而掂量词组的完整性。在通过小样本标记数据构建和多维度统计特征提取后,训练二元分类器来计算候选短语预估品质。因为训练数据负例样本采纳了负采样的形式,这部分数据中混合了大量高质量的短语,为了缩小负例噪声对短语预估品质分的影响,能够通过集成多个弱分类器的形式缩小误差。对候选序列汇合进行模型预测后,将得分超过肯定阈值的汇合作为正例池,较低分数的汇合作为负例池。 Step3: 基于深度语义网络的短语品质评估。在有大量标记数据的状况下,深度网络模型能够主动无效地学习语料特色,并产出具备泛化能力的高效模型。BERT通过海量自然语言文本和深度模型学习文本语义表征,并通过简略微调在多个自然语言了解工作上刷新了记录,因而咱们基于BERT训练短语品质打分器。为了更好地晋升训练数据的品质,咱们利用搜寻日志数据对Step2中生成的大规模正负例池数据进行近程领导,将有大量搜寻记录的词条作为有意义的关键词。咱们将正例池与搜寻日志重合的局部作为模型正样本,而将负例池减去搜寻日志汇合的局部作为模型负样本,进而晋升训练数据的可靠性和多样性。此外,咱们采纳Bootstrapping形式,在首次失去短语品质分后,从新依据已有短语品质分以及近程语料搜寻日志更新训练样本,迭代训练晋升短语品质打分器成果,无效缩小了伪正例和伪负例。 在UGC语料中抽取出大量新词或短语后,参考AutoNER[2]对新开掘词语进行类型预测,从而裁减离线的实体库。 3.2 在线匹配原始的在线NER词典匹配办法间接针对Query做双向最大匹配,从而取得成分辨认候选汇合,再基于词频(这里指实体搜寻量)筛选输入最终后果。这种策略比拟简陋,对词库准确度和覆盖度要求极高,所以存在以下几个问题: 当Query蕴含词库未笼罩实体时,基于字符的最大匹配算法易引起切分谬误。例如,搜索词“海坨山谷”,词库仅能匹配到“海坨山”,因而呈现“海坨山/谷”的谬误切分。粒度不可控。例如,搜索词“星巴克咖啡”的切分后果,取决于词库对“星巴克”、“咖啡”以及“星巴克咖啡”的笼罩。节点权重定义不合理。例如,间接基于实体搜寻量作为实体节点权重,当用户搜寻“信阳菜馆”时,“信阳菜/馆”的得分大于“信阳/菜馆”。为了解决以上问题,在进行实体字典匹配前引入了CRF分词模型,针对垂直畛域美团搜寻制订分词准则,人工标注训练语料并训练CRF分词模型。同时,针对模型分词谬误问题,设计两阶段修复形式: 联合模型分词Term和基于畛域字典匹配Term,依据动静布局求解Term序列权重和的最优解。基于Pattern正则表达式的强修复规定。最初,输入基于实体库匹配的成分辨认后果。 4. 模型在线预测对于长尾、未登录查问,咱们应用模型进行在线辨认。 NER模型的演进经验了如下图5所示的几个阶段,目前线上应用的主模型是BERT[3]以及BERT+LR级联模型,另外还有一些在摸索中模型的离线成果也证实无效,后续咱们会综合思考性能和收益逐渐进行上线。搜寻中NER线上模型的构建次要面临三个问题: 性能要求高:NER作为根底模块,模型预测须要在毫秒级工夫内实现,而目前基于深度学习的模型都有计算量大、预测工夫较长的问题。畛域强相干:搜寻中的实体类型与业务供应高度相干,只思考通用语义很难保障模型辨认的准确性。标注数据不足: NER标注工作绝对较难,需给出实体边界切分、实体类型信息,标注过程费时费力,大规模标注数据难以获取。针对性能要求高的问题,咱们的线上模型在降级为BERT时进行了一系列的性能调优;针对NER畛域相干问题,咱们提出了交融搜寻日志特色、实体词典信息的常识加强NER办法;针对训练数据难以获取的问题,咱们提出一种弱监督的NER办法。上面咱们具体介绍下这些技术点。 4.1 BERT模型BERT是谷歌于2018年10月公开的一种自然语言解决办法。该办法一经公布,就引起了学术界以及工业界的宽泛关注。在成果方面,BERT刷新了11个NLP工作的以后最优成果,该办法也被评为2018年NLP的重大进展以及NAACL 2019的best paper[4,5]。BERT和早前OpenAI公布的GPT办法技术路线基本一致,只是在技术细节上存在稍微差别。两个工作的次要奉献在于应用预训练+微调的思路来解决自然语言解决问题。以BERT为例,模型利用包含2个环节: 预训练(Pre-training),该环节在大量通用语料上学习网络参数,通用语料包含Wikipedia、Book Corpus,这些语料蕴含了大量的文本,可能提供丰盛的语言相干景象。微调(Fine-tuning),该环节应用“工作相干”的标注数据对网络参数进行微调,不须要再为指标工作设计Task-specific网络从头训练。将BERT利用于实体辨认线上预测时面临一个挑战,即预测速度慢。咱们从模型蒸馏、预测减速两个方面进行了摸索,分阶段上线了BERT蒸馏模型、BERT+Softmax、BERT+CRF模型。 4.1.1 模型蒸馏 咱们尝试了对BERT模型进行剪裁和蒸馏两种形式,后果证实,剪裁对于NER这种简单NLP工作精度损失重大,而模型蒸馏是可行的。模型蒸馏是用简略模型来迫近简单模型的输入,目标是升高预测所需的计算量,同时保障预测成果。Hinton在2015年的论文中论述了核心思想[6],简单模型个别称作Teacher Model,蒸馏后的简略模型个别称作Student Model。Hinton的蒸馏办法应用伪标注数据的概率分布来训练Student Model,而没有应用伪标注数据的标签来训练。作者的观点是概率分布相比标签可能提供更多信息以及更强束缚,可能更好地保障Student Model与Teacher Model的预测成果达到统一。在2018年NeurIPS的Workshop上,[7]提出一种新的网络结构BlendCNN来迫近GPT的预测成果,实质上也是模型蒸馏。BlendCNN预测速度绝对原始GPT晋升了300倍,另外在特定工作上,预测准确率还略有晋升。对于模型蒸馏,根本能够失去以下论断: ...

July 24, 2020 · 2 min · jiezi

关于nlp:零基础入门NLP-新闻文本分类数据读取与数据分析

数据下载下载数据 !wget https://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531810/train_set.csv.zip!wget https://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531810/test_a.csv.zip!wget https://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531810/test_a_sample_submit.csv解压数据, 共蕴含3个文件, 训练数据(train_set.csv), 测试数据(test_a.csv), 后果提交样例文件(test_a_sample_submit.csv) !mkdir /content/drive/My\ Drive/competitions/NLPNews!unzip /content/test_a.csv.zip -d /content/drive/My\ Drive/competitions/NLPNews/test!unzip /content/train_set.csv.zip -d /content/drive/My\ Drive/competitions/NLPNews/train!mv /content/test_a_sample_submit.csv /content/drive/My\ Drive/competitions/NLPNews/submit.csv!mv /content/drive/My\ Drive/competitions/NLPNews/test/test_a.csv /content/drive/My\ Drive/competitions/NLPNews/test.csv!mv /content/drive/My\ Drive/competitions/NLPNews/test/train_set.csv /content/drive/My\ Drive/competitions/NLPNews/train.csv读取数据import pandas as pdimport osfrom collections import Counterimport matplotlib.pyplot as plt%matplotlib inlineroot_dir = '/content/drive/My Drive/competitions/NLPNews' train_df = pd.read_csv(root_dir+'/train.csv', sep='\t')train_df['word_cnt'] = train_df['text'].apply(lambda x: len(x.split(' ')))train_df.head(10) label text word_cnt 0 2 2967 6758 339 2021 1854 3731 4109 3792 4149 15... 1057 1 11 4464 486 6352 5619 2465 4802 1452 3137 5778 54... 486 2 3 7346 4068 5074 3747 5681 6093 1777 2226 7354 6... 764 3 2 7159 948 4866 2109 5520 2490 211 3956 5520 549... 1570 4 3 3646 3055 3055 2490 4659 6065 3370 5814 2465 5... 307 5 9 3819 4525 1129 6725 6485 2109 3800 5264 1006 4... 1050 6 3 307 4780 6811 1580 7539 5886 5486 3433 6644 58... 267 7 10 26 4270 1866 5977 3523 3764 4464 3659 4853 517... 876 8 12 2708 2218 5915 4559 886 1241 4819 314 4261 166... 314 9 3 3654 531 1348 29 4553 6722 1474 5099 7541 307 ... 1086 查看数据train_df['word_cnt'] = train_df['word_cnt'].apply(int)train_df['word_cnt'].describe()count 200000.000000mean 907.207110std 996.029036min 2.00000025% 374.00000050% 676.00000075% 1131.000000max 57921.000000Name: word_cnt, dtype: float64plt.hist(train_df['word_cnt'], bins=255)plt.title('word counts statistics')plt.xlabel('word counts')plt.show() ...

July 22, 2020 · 2 min · jiezi

关于nlp:零基础入门NLP-新闻文本分类赛题理解

赛题背景本次新人赛是Datawhale与天池联结发动的0根底入门系列赛事第三场 —— 零根底入门NLP之新闻文本分类挑战赛。 赛题以自然语言解决为背景,要求选手依据新闻文本字符对新闻的类别进行分类,这是一个经典文本分类问题。通过这道赛题能够疏导大家走入自然语言解决的世界,带大家接触NLP的预处理、模型构建和模型训练等知识点。 为更好的疏导大家入门,咱们同时为本赛题定制了系列学习计划,其中包含数据迷信库、通用流程和baseline计划学习三局部。通过对本计划的残缺学习,能够帮忙把握数据比赛基本技能。同时咱们也将提供专属的视频直播学习通道。 赛题数据赛题以新闻数据为赛题数据,数据集报名后可见并可下载。赛题数据为新闻文本,并依照字符级别进行匿名解决。整合划分出14个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐的文本数据。 赛题数据由以下几个局部形成:训练集20w条样本,测试集A包含5w条样本,测试集B包含5w条样本。为了预防选手人工标注测试集的状况,咱们将较量数据的文本依照字符级别进行了匿名解决。解决后的赛题训练数据如下: labeltext657 44 66 56 2 3 3 37 5 41 9 57 44 47 45 33 13 63 58 31 17 47 0 1 1 69 26 60 62 15 21 12 49 18 38 20 50 23 57 44 45 33 25 28 47 22 52 35 30 14 24 69 54 7 48 19 11 51 16 43 26 34 53 27 64 8 4 42 36 46 65 69 29 39 15 37 57 44 45 33 69 54 7 25 40 35 30 66 56 47 55 69 61 10 60 42 36 46 65 37 5 41 32 67 6 59 47 0 1 1 68在数据集中标签的对应的关系如下: ...

July 21, 2020 · 1 min · jiezi

图计算黑科技打开中文词嵌入训练实践新模式

在自然语言解决畛域,文本示意学习技术能够帮忙咱们将事实世界转化为计算机能够解决的数据,以求更精准地建设学习模型。而在中文搜索场景下,同音词、易混词、错别字等文本的召回和类似度匹配始终存在着辣手的问题,本文将尝试从图计算的角度来进行中文词向量的训练,并获得了踊跃的成果,心愿与大家一起分享交换。文章作者:翟彬旭,腾讯云大数据高级研发工程师。一、技术背景在中文搜索场景下,同音词、易混词、错别字等文本的召回和类似匹配是一个常见且辣手的问题。NLP(自然语言解决)社区对文本的匹配和召回曾经经验从晚期的基于分词和倒排索引的全文检索过渡到现在风行的文本向量检索。 向量检索通过训练和学习文本的分布式表征失去文本向量,能够解决倒排索引无奈解决的语义类似度匹配问题,而且针对高维向量的大规模疾速检索在业界曾经有相当成熟的解决方案,如Faiss、Nmslib等。 但目前业内罕用的示意学习办法很少思考中文场景下因为输入法输出谬误、发音问题等导致的文本类似匹配问题。 例如,在笔者所在的腾讯云企业画像产品研发过程中,就常常遇到相似的需要。当用户在咱们的产品中搜寻“腾迅科技集团股份有限责任公司”时,此时用户心愿搜寻的企业工商注册名称应该是“腾讯科技(深圳)有限公司”,但因为输入法谬误(将“腾讯”错输为“腾迅”)、认知谬误(将“有限责任公司”误认为“集团股份有限责任公司”)等起因,导致用户输出无奈匹配到想要的搜寻后果,甚至呈现OOV的状况(“腾迅”可能不在词表中)。 如何在无需过多思考语义类似度的前提下解决中文词形学示意学习的问题是本文探讨的重点话题。 二、词嵌入训练的演进在统计学习模型中,应用词嵌入(Word Embedding)实现自然语言解决工作,是NLP畛域里的一项关键技术。常见的词嵌入(又称为文本表征)训练方法及次要特点如下图所示。 图1. 文本分布式表征办法概览 晚期的词嵌入钻研次要包含One-hot编码、TF-IDF等词袋模型。词袋模型(Bag of Words, BOW)是指疏忽文档的语法和语序等因素,将文档仅仅看成是若干无序单词的汇合,并且每个词都是独立的。 这些办法都属于离散表示法,当词汇表宏大时,会占用很大的存储空间,词汇表的大小决定了向量的维度大小,存在维数劫难问题。此外,这类办法无奈通过任何计算失去词语之间的类似度,因而词向量之间不存在关联关系。 鉴于词袋表示法存在维度劫难、语义鸿沟的问题,Yoshua Bengio等人在[1]中证实应用神经网络训练的语言模型能够生成更好的词向量,并且提出了很多优化训练的办法。 如下图所示,整个网络分为两局部,第一局部是利用词特色矩阵C取得词的分布式示意(即词嵌入)。第二局部是将示意context的n个词的词嵌入拼接起来,通过一个暗藏层和一个输入层,最初通过softmax输入以后的p(wt|context)(以后上下文语义的概率分布,最大化要预测的那个词的概率,就能够训练此模型)。 这一模型框架岂但训练了一个用神经网络示意的语言模型,而且作为语言模型的副产物还取得了词语的词嵌入(存在矩阵C中)。 图2. 经典的自然语言模型(Bengio et al., 2003) 经典语言模型的训练存在计算量大的问题(次要集中在隐含层到输入层的全连贯层以及输入层的softmax计算上),具体实现较为艰难,针对这些问题,Mikolov等人[2,3]在语言模型的根底上进行了简化并给出了Cbow和skip-gram两种架构的word2vec模型,同时在具体学习过程中能够采纳两种升高复杂度的近似办法——Hierarchical Softmax和Negative Sampling。 如下图所示,这种架构大大简化了计算量。不过,word2vec训练进去的词向量与单词是一对一的动态映射关系,一词多义问题没有解决。 图3. word2vector模型构造 为了解决一词多义问题,ELMO模型[4]被提出来,它通过语言模型进行学习,失去一个词嵌入示意,在理论应用词嵌入时,依据上下文单词的语义再去调整单词的词嵌入示意,从而使得单词在不同的上下文语境失去不同的词嵌入示意。 网络结构采纳双向LSTM网络。其中前向双层LSTM和逆向LSTM别离代表正方向和反方向编码器,输出别离是单词的上文和下文。一个句子输出到训练好的网络中,最终将失去每个单词三个不同的嵌入示意:双向LSTM中的两层词嵌入示意以及单词的词嵌入示意。其中双向LSTM中的两层词嵌入示意别离编码了单词的句法信息和语义信息。在做理论工作时,网络中单词对应的词嵌入示意将被提取进去作为新特色补充到理论工作中去。 ELMO依据上下文动静调整后的embedding不仅可能找出对应的雷同语义的句子,而且还能够保障找出的句子中的同义词对应的词性也是雷同的。不过,ELMO应用LSTM提取特色的能力不如起初的Transformer,其双向语言模型采取的是用简略的拼接来交融特色,一体化特色交融体现欠佳。 图4. ELMO模型示意图 BERT[5]作为动静词嵌入示意学习的集大成者,是一种双向交融特色的模型。 BERT提出两个工作:MLM(Masked Language Model)和NSP(Next Sentence Predict)。前者是词级别的,其采取的办法是,随机挡住15%的单词,让模型去预测这个单词,可能训练出深度的双向词嵌入向量示意;后者是句子级别的,也是一个二分类工作,其采取的办法是,将两个句子的序列串连作为模型的输出,预测后一句是否是前一句文本的下文,这一办法可能学习句子之间的关系,捕获句子级别的示意。因而BERT失去的词嵌入示意融入了更多的语法、词法以及语义信息,而且动静地扭转词嵌入也可能让单词在不同的语境下具备不同的词嵌入。 不过,BERT 对数据规模要求较高,如果没有足够大的语料,则很难达到预期的成果;其计算量很大,所需老本较高。 图5. BERT模型构造示意图 目前曾经存在的次要词向量模型都是基于东方语言,这些东方语言的外部组成都是拉丁字母,然而,因为中文书写和东方语言齐全不同,中文词语存在同音字、错别字等场景,而且中文字符外部的偏旁部首以及发音也蕴含了很强的语义信息,因而,如何无效利用中文字符外部的语义信息来训练词向量,成为近些年钻研的热点[6,7,8]。 这里的典型代表是2018年蚂蚁金服提出的基于中文笔画的cw2vec模型[6]。文中将中文笔画划分为5类,相似于fasttext[9]的思维,每个词语应用n-gram 窗口滑动的办法将其示意为多个笔画序列。每个 gram 和词语都被示意成向量,用来训练和计算他们之间的类似度。为了简化计算文中也采纳了负采样的办法,试验也获得了良好的成果。 图6. cw2vec模型示意图 三、存在的问题及解决方案从以上相干工作能够看出,以后次要的词嵌入表征学习办法次要集中在从文本语料的上下文语义角度学习词嵌入,对于其余角度如中文词形学角度的钻研较少。采纳这些办法训练学习失去的词向量,即便在中文编辑间隔较近、发音雷同的词语,在词嵌入空间的间隔也相差甚远。 例如,以腾讯AILab公布的百万词向量为例,该版词向量模型能够较好地捕获中文词语间的语义类似度,但对于子词和同音字的类似度量场景,成果欠佳,如下图所示。 图7. 词向量类似度计算示例 在无需过多思考语义类似度的前提下,本文提出从图计算的角度训练学习文本的向量表征,解决中文词形学类似匹配的问题。算法基本原理如下。 将罕用汉字及业务场景下的词库构建无向带权图:每个词语和汉字作为图中一个节点,同时退出子词和拼音节点,顺次在图中的“词语-子词-单字-拼音”节点间建设连边(如图8所示),依据字词之间在拼音和形成上的编辑间隔(此处可依据业务需要灵便设置,亦可间接独自训练权重模型)为节点之间的连边赋予权重。 特地地,本文重点在同音字、平舌音、翘舌音以及子词序列等类型的节点间建设了连边,以保障同音字、易混字在图中可达,同时子词(subword)的引入在肯定水平上保留了文本的语序特色。而后采纳node2vec或metapath2vec等skip-gram类模型学习失去各节点的向量示意,以此作为字符的分布式表征。 图8. 构图示例 ...

July 13, 2020 · 3 min · jiezi