Daria Rodionova于2018年毕业于CS中心,他谈到了音译:这是什么,音译的方法是什么,如何创建自己的音译器以及如何改进模型。
音译是一个单词从一个字母到另一个字母的图形翻译,只要我们有一个系统的符号与另一个系统的符号对应表即可。 确实,音译没有什么使人联想到简化的翻译? 这里的语言是字母,翻译规则的可能数量简化为四个重要的规则:
- 一对一:B→B,R→P,P→P
- 一对多:Y→第一
- 多对一:SCH→U,CH→H,YU→U
- 多对多:取决于上下文,例如IE-> IE
直到最近,所有Runet都是用拉丁语写的。 然后,并非所有设备都具有西里尔布局,但是ASCII处于最重要的位置-而编码仍然无法处理西里尔。 结果,收件人没有收到俄文消息,而是收到了abracadabra。
15年前,当西里尔字母在手机上可用时,仍继续从移动运营商处接收拉丁文的SMS消息。 我不会掩饰我很高兴地解密了这些消息:)现在,人们经常在论坛或聊天室中以拉丁字母进行通信,因为手头没有俄语键盘。
为什么需要自动音译
通常,他们谈论将俄语单词直接音译为拉丁字母。 当您需要翻译地理名称或外国文件的名称时,请使用科学文章。
反向音译是将拉丁文的单词转换为西里尔字母的单词。 许多领域都需要它,因此随着时间的流逝,已经出现了一个标准。 因此,现在同时存在多个标准,根据这些标准,单词会被含糊地音译。
我们经常在新闻中听到有关地名的荒谬翻译和音译的消息。 例如,字母“ sch”的组合可以是序列“ MF”或字母“”,如单词Schyot。 即使在论坛上,对于如何用拉丁字母写字母“”也有不同的看法。 在这里您还可以找到组合“ ch”的歧义。 似乎总是“ H”! 不,它也是单词结尾的“ X”:通常字母“ I / S”位于其后。 您将如何从拉丁语翻译“ YE”? 在“ E”还是在“ S”? 更多细节可以在文章
“无规则转换”中找到 。
音译器的理论描述
这是一个有限状态传感器,由节点组成,每个节点可以处理输入符号并产生输出。 如果给出正式定义,则换能器包含6个分量(Q,Σ,Γ,I,F,δ),其中:
Q-许多州
Σ-输入字母
Γ-输出字母
我是Q初始状态的子集
F是Q中最终状态的子集
δ是从Q⨉(Σ⋃{e})到Q⨉(Γ⋃{e})的过渡
在一般情况下,集合Q代表几种状态。 由于字母表中字母的数量,我们合而为一:
- 开始,状态1或将一个字符替换为另一个,
- 状态2或用1替换多个字符,
- 状态3或用几个替换一个字符,
- 状态4或用另一个字符组替换一个字符组,结束。
还记得我们在本文开头定义的多少条翻译规则? :)作为Σ,拉丁字母和单引号用于表示软符号,并且集合Γ包含目标字母-西里尔字母。 初始状态和最终状态集由字母字符或字母字符的组合组成,因为在对字母H,W,U,Y,Y进行编码时可能会发生这种情况。
目前,该转换器已用于某些NLP问题,包括单词的词法分析:

这是用于转换器的简单换能器的另一个示例。 后一种方案最适合音译设计。 一个区别:在每个状态q中,我们处理的不是单词,而是符号。
有关换能器的更多信息好吧,我们将尝试构建一种音译器,使其能够分析来自不同GOST的输入数据,并将不同的拼写转换为单个西里尔字母。 换句话说,我们将设计换能器转换逻辑。
音译的基本方法
有几种构建音译器的方法,其中两种是ML和基于规则的。
ML-任何概率序列到序列模型(以马尔可夫为基础)。 当我们同时对拉丁词进行分段并寻找最有可能的潜在状态或西里尔字母组合时,它是基于维特比原理的。
状态是有限数量的西里尔字母组合。 观测值或输入序列-拉丁语组合,转换-拉丁语组合与西里尔字母之间的转换,发射(转换到新状态后的观察概率)-某些西里尔字母组合中拉丁语组合的概率。
同样,音译的ML模型可以定义为机器翻译问题。 因此,例如,您可以训练一个模型来转录一种语言中的单词。 首先,您需要编译一个声音与字母的对应关系表,然后训练将字母转换为声音的概率示例。
现在,我们将不再考虑ML模型,因为目前没有具有音译选项的代表性数据集。 数据收集是一项单独的任务。 让我们回到音译,并专注于
基于规则的方法 。 为此,我们需要一个字典(任何语言学家的救星),一个字母兼容性表和一个用于音译音素的表。
如何运作?
最简单的音译过程包括三个步骤:
- 我们遵循顺序,必须将其翻译成俄语。
- 我们正在音素音译表中寻找声音的组合。
- 如果找到音素,则我们将当前组合音译,并使用正则表达式纠正字母的不兼容性。
该子序列在俄语字符中可能含糊不清。 这是分支到规则的起点。 第三步的主要陷阱:
1.声音翻译CH。 单词的开头可以是Ch,X和K。单词的末尾也有两个选择:Ch,X。当前实现中使用的最简单的启发式方法是在声音CH之前存在I / S音素。 您可能会问,为什么我们确定在字母O之前可以将CHR转换为XP,而在And之前将其转换为KR? 这是关于在当前俄语词典中查找以捷克共和国开头的单词的全部内容。 迄今为止,在ChRO / CRI的开头没有人发现俄语单词。
2.学习识别分离固体信号。 在这种情况下,我们在正则表达式中收集可能的前缀,检查下一个字符,该字符应为音译中的带声母的元音(EYUYA)。 如果一切顺利,则我们在元音前面放一个实心标志。 还有一些错误的分析,例如“恶作剧”一词,实际上应将其分解为“恶作剧”。
3.在哪里我们将模仿的声音翻译成E / E / Y / Y,在哪里-我们留下了几个元音。 我们知道,有声元音在分隔的实心符号后跟随前缀,在上一步中,我们识别出最后一个。 因此,我们当前的字母是相同的元音。 一个单词的开头也有一个声母。 当然,这里不可能没有错误的分析:IONY→JONES而不是JONA。 但是可以减少这种分析。 我们再次使用字典,在字典中,我们看到在以IO开头的单词中,TAD通常紧随其后。 将此观察结果添加到我们的规则中。
4. IS在哪里,OH在哪里? 这里,还应用了一种简单的启发式方法,其中在所需的字符序列之前检查辅音。 如果是GDZHKTSCHShSCH,则获得结尾的OI,否则从转换表中获取组合OY。
如何改善这种模式
- 考虑如何识别单词中的软符号。
- 连接一些基于启发式的实际拼写电子词典。 这将有助于跟踪我们规则的相关性,并可能引入“规则权重”这样的概念。 因此,我们将慢慢进入ML模型。
- 在拼写检查器的上下文中使用。 当然,这不再是音译的任务,但是拼写将有助于获得更有意义的结果:)
自学音译细节我很乐意在评论中回答问题,并考虑音译器的改进:)