共计 8001 个字符,预计需要花费 21 分钟才能阅读完成。
在自然语言解决畛域,文本示意学习技术能够帮忙咱们将事实世界转化为计算机能够解决的数据,以求更精准地建设学习模型。而在中文搜索场景下,同音词、易混词、错别字等文本的召回和类似度匹配始终存在着辣手的问题,本文将尝试从图计算的角度来进行中文词向量的训练,并获得了踊跃的成果,心愿与大家一起分享交换。文章作者:翟彬旭,腾讯云大数据高级研发工程师。
一、技术背景
在中文搜索场景下,同音词、易混词、错别字等文本的召回和类似匹配是一个常见且辣手的问题。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. 构图示例
在游走形式的抉择上,对于以后业内次要的学习办法,如 deepwalk[10]、node2vec[11]、Line[12]、metapath2vec[13]等算法,思考到这里结构的图是带权图,故而不宜采纳 deepwalk,而图中的节点关联须要思考二度以上分割,故不宜采纳 Line,所以本文重点比照 node2vec 和 metapath2vec 算法在嵌入成果上的差别。
对于未登录词,能够采纳相似 FastText 的办法将未登录词的单字向量求均匀失去,如果单字也是未登录词则采纳拼音节点的词向量代替。这种形式能够取得较高质量的词嵌入,使得词形上靠近的单词在词嵌入空间也领有较高的相似性,同时因为拼音和子词节点的退出,大大缓解了 OOV(Out Of Vocabulary)的问题。
简而言之,算法次要步骤包含以下局部:构建图 —> 随机游走采样 —> 训练词嵌入。
以上就是对于腾讯自研的中文词形示意学习算法 AlphaEmbedding 的残缺介绍。AlphaEmbedding 从图计算的角度重点解决针对中文场景下的分布式词表征学习问题,使得学习到的词向量在中文词形学角度相近的词语在向量空间中也领有较近的间隔。
四、试验后果
试验数据采纳全量国内工商注册企业名称(约 2.2 亿家),对企业名称进行名称宰割(这里因为业务须要,曾经开发了一个可用的 BERT-CRF 序列标注模型),针对 name 字段荡涤、过滤、去重后构建图。输出数据示例如下图所示:
图 9. 名称宰割示意图
构建图局部采纳 Pyspark 实现,造成的图的规模蕴含千万节点、亿级边,随机游走和词嵌入训练采纳 WXG 开源的 plato 计算框架在腾讯云 EMR 集群进行,在 20 个节点进行随机游走约用时 1 分钟左右,进行节点嵌入学习约耗时 2 小时左右。构建的带权图成果如下图所示:
图 10. 构建的无向带权图示例
在具体构图的实现方面,本文比照了两种实现办法:最后基于全称的排列组合,仅思考同音词和子词在节点间建设连边,每个汉字节点最短两个字,拼音节点为对应汉字词语节点的拼音,咱们称这种办法为 combination style,其构图形式示意图如下图所示。
图 11. combination style 构图示例
采纳 node2vec 进行训练学习,以业务中罕用的词语类似度排序为例,试验后果如下(检索词为“腾讯”,已在图中标红显示):
图 12. combination style 成果
combination style 在业务利用中存在较多 OOV 的状况,之后采纳更为简洁的“词语 - 子词 - 单字 - 拼音”构图形式(如图 8 所示),咱们称之为 fasttext style,并在节点嵌入学习中别离尝试了 node2vec 和 metapath 进行训练。这里仍以业务中罕用的词语类似度排序为例,试验后果如下:
图 13. fasttext style + node2vec 深度优先搜寻成果
图 14. fasttext style + node2vec 宽度优先搜寻成果
图 15. fasttext style + metapath2vec 成果
其中,三种游走形式的参数设置如下,除游走采样设置不同外,其余输出数据、嵌入学习参数均雷同:
- node2vec 深度优先:p=100, q=0.2, step=5, epoch=30
- node2vec 宽度优先:p=100, q=5, step=5, epoch=30
- metapath2vec:meta=”3-2-1-0″(词语 - 子词 - 单字 - 拼音), step=5, epoch=30
- word2vec: learning_rate=[(linear, 0.02, 0.0001)], window_size=5, epoch=20
从试验比照成果能够发现,combination style 的构图形式因为仅思考库内词表的排列组合,图的规模最小(一千万节点),与检索词之间间隔最近的都是同音词,但同音词间的排序未思考单字形成上的类似度,拼音节点作为类似度排序的分界点,之后的子词节点类似度急剧下滑,总体成果绝对欠佳。
metapath2vec 取得的词表规模相比 combination style 大但比 node2vec 小(两千多万节点),类似词语更偏好子词节点,且各近邻词语间的区分度较差。
这一后果可能与游走形式无关,一方面,metapath 定义的游走形式较为固定,若仅采纳“词语 - 子词 - 单字 - 拼音”的形式进行游走,理论业务图上存在较多词语(二字词语)没有子词而只能连贯单字的场景(此时对应的 metapath 应该为“词语 - 单字 - 拼音”),这些 metapath 在采样时就会失落,造成节点采样失衡,另一方面因为子词节点在游走过程中始终同词语节点共现,所以子词节点的类似度整体绝对较高。因为 metapath2vec 训练后果区分度差的个性,使得取得的词嵌入在上游工作中的体现并不现实。
node2vec 深度优先搜寻和宽度优先搜寻成果靠近,二者取得的词表规模雷同(近三千万节点),针对特定检索词返回的排序后果也很靠近。
相对而言,深度优先搜寻取得的后果能够匹配到编辑间隔更大的子词,模型的容错边界被外推到更大的范畴;宽度优先搜寻取得的近邻词语间的区分度更加平滑,对上游工作的利用更加敌对。而对于编辑间隔雷同的子词对,因为都思考了 n -gram 词序信息,两种搜寻形式返回的子词对的绝对排序也基本相同。
整体而言,绝对于下面提到的两种构图和游走形式,node2vec 模型取得的词向量成果绝对更好,且宽度优先搜寻的后果更合乎业务需要。
五、总结
本文回顾了 NLP 畛域以后次要的文本分布式示意学习办法,针对中文搜索场景下同音词、易混词等文本的类似匹配问题,尝试从图计算的角度提出一种词向量训练方法,使得模型学习到的词向量在中文词形学角度相近的词语在向量空间中也领有较近的间隔。
通过比照 combination style 和 fasttext style 两种不同的构图形式以及 node2vec 深度优先、node2vec 宽度优先和 metapath2vec 三种不同的边采样办法失去的词嵌入在业务利用中的成果,摸索了图计算在文本示意学习中的利用,为晋升业务成果提供了踊跃的帮忙。
目前这一工作曾经利用于腾讯云企业画像产品搜寻业务中。将来咱们会在相干方面进行更多尝试和摸索,例如思考退出笔画对单字结构建模,以期借此晋升错别字的类似匹配成果;思考采纳 GCN/GraphSAGE/GAT 等图神经网络建模,以期晋升词嵌入品质等,也欢送业内同学提供更多思路,批评指正。
参考文献:
[1] Bengio, Y., Ducharme, R., Vincent, P., & Janvin, C. (2003). A Neural Probabilistic Language Model. The Journal of Machine Learning Research, 3, 1137–1155.
[2] Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality[C]//Advances in neural information processing systems. 2013: 3111-3119.
[3] Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[J]. arXiv preprint arXiv:1301.3781, 2013.
[4] Peters M E, Neumann M, Iyyer M, et al. Deep contextualized word representations[J]. arXiv preprint arXiv:1802.05365, 2018.
[5] Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.
[6] Cao S, Lu W, Zhou J, et al. cw2vec: Learning chinese word embeddings with stroke n-gram information[C]//Thirty-second AAAI conference on artificial intelligence. 2018.
[7] Yin R, Wang Q, Li P, et al. Multi-granularity chinese word embedding[C]//Proceedings of the 2016 conference on empirical methods in natural language processing. 2016: 981-986.
[8] Xu J, Liu J, Zhang L, et al. Improve chinese word embeddings by exploiting internal structure[C]//Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. 2016: 1041-1050.
[9] Joulin A, Grave E, Bojanowski P, et al. Bag of tricks for efficient text classification[J]. arXiv preprint arXiv:1607.01759, 2016.
[10] Perozzi B, Al-Rfou R, Skiena S. Deepwalk: Online learning of social representations[C]//Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining. 2014: 701-710.
[11] Grover A, Leskovec J. node2vec: Scalable feature learning for networks[C]//Proceedings of the 22nd ACM SIGKDD international conference on Knowledge discovery and data mining. 2016: 855-864.
[12] Tang J, Qu M, Wang M, et al. Line: Large-scale information network embedding[C]//Proceedings of the 24th international conference on world wide web. 2015: 1067-1077.
[13] Dong Y, Chawla N V, Swami A. metapath2vec: Scalable representation learning for heterogeneous networks[C]//Proceedings of the 23rd ACM SIGKDD international conference on knowledge discovery and data mining. 2017: 135-144.
看腾讯技术,学云计算常识,就来云 + 社区:https://cloud.tencent.com/developer