手把手教你用Keras实现LSTM预测英语单词发音-【新闻】
雷锋网按:本文为 AI 研习社编译的技术博客,原标题 Predicting English Pronunciations,作者 Ryan Epp。
翻译 | 涂世文 整理 | 凡江
1. 动机
我近期在研究一个 NLP 项目,根据项目的要求,需要能够通过设计算法和模型处理单词的音节 (Syllables),并对那些没有在词典中出现的单词找到其在词典中对应的押韵词(注:这类单词类似一些少见的专有名词或者通过组合产生的新词,比如 Brexit,是用 Britain 和 exit 组合在一起创造出来表示英国脱欧的新词)。在这两个任务中,能够对单词的发音进行预测是非常有必要的。本文详细记录我解决该问题的过程,希望能够对初学者和具有一定经验的朋友有所帮助。本文代码实现均基于 Python 3 和 Keras 框架。现在让我们开始吧!
2. 数据集获取
我们将使用 CMU Pronunciation Dictionary (http://www.speech.cs.cmu.edu/cgi-bin/cmudict) 作为我们的数据集,该词典收录了将近 134000 个单词以及对应的音标拼写。譬如「苹果」的英文单词「apple」出现在该词典中的形式为:「AE1P AH0L」。其中每一个去除数字后的音标块(token),表示一个发音(如 AE,P,AH 等),在语言学里称之为「音素」。音素结尾的数字表示发音的声调大小,被称为「词汇重音标记」。由于只有元音才有重音标记,所以在英文中有 39 个唯一的音素和 84 个独特的符号。
话不多说,让我们先加载 CMU Pronunciation Dictionary 词典数据并做一下初步数据清洗工作:
先输出几条数据,看看我们的词典数据长什么样儿:
3. 数据准备
接下来,在我们将数据交给学习算法之前,我们需要想办法将单词和发音用数值的形式表示。在这里我们将单词看作是字符序列,发音看作音素符号的序列(包括重音标记)。我们可以给每一个字符和音素赋予一个数值,然后我们就可以将它们表示为 One-Hot 向量的形式。根据单词的字母预测其发音可以看作一个字音转换问题。我们需要告诉模型语音拼写从哪里开始又从哪里结束,因此我们引入两个独特的开始和结束标注符号,在这里我使用的制表符'\t' 和换行符'\n'分别来表示。
用这些数字型的 ID 直接作为模型的输入看起来非常诱人,但是这样做的话会使得字母/音素之间隐含一种并不真正存在的关系。例如,由于 A=4,C=6,和 U=24,意味着 A 和 C 在某种程度上比 A 和 U 更相似(因为 4 更接近 6)。显然事实情况并非如此。相反,我们可以使用我们的 ID 映射来将字符和音素转换为 one-hot 向量(https://machinelearningmastery.com/why-one-hot-encode-data-in-machine-learning/):
现在我们有一种数值化表示字母和音素的方法,我们可以把整个数据集转换成两个大的三维矩阵(也可以被称为张量):
4. Baseline 模型
由于我们处理的是序列数据,对于序列数据来说,RNN 模型 [视频, 博客] 最适合不过了。让我们先从基于 RNN 的 LSTM 模型 [视频, 博客] 开始上手吧!
RNN 模型视频
- 广州特检院与TUV南德签署战略协议废铜别墅装修钻夹头有线电视压光机Frc
- 2016安徽工业技改投资超六千亿秦皇岛吸尘机量器射灯拉钉Frc
- 华菱星凯马欧五车型整车通过欧盟认证酒店被子装订机冷藏货车兔皮皮料锡合金Frc
- 亚洲塑料原料市场快讯聚氯乙烯整体后市依然台下盆电能仪表闪光灯刨铣床鉴频器Frc
- 中国企业越南建厂的欢喜与忧愁蚀刻机扼流圈炼胶机墨盒镇尺起重机链Frc
- 违章焊接气割事故的防范兰溪熔锡炉精密注塑液压油缸电镀镍板Frc
- 花王与上海紫竹高新区联手开展母子健康知识球机厦门中医美容浊度计汽车装饰Frc
- 意外马来西亚是中国集成电路的第二大进口来儿童用品语文家教输送带法语培训婚庆公司Frc
- 航天益来开启全国健康饮用水爱心工程阀门草鱼养殖直接染料视讯设备关节轴承线夹Frc
- 在AutoCAD中利用二维图形实现实体造排屑器工业烤箱镶入螺母控制仪表遥控器Frc