一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种翻译语料库的匹配方法与流程

2022-02-20 05:17:44 来源:中国专利 TAG:

1.本发明公开一种翻译语料库的匹配方法,属于智能翻译的技术领域。


背景技术:

2.随着信息技术、云计算等相关技术的发展,翻译技术、语音识别以及翻译平台等相关技术都得到了较快的发展。在大数据背景下,语料库中的翻译资源日益丰富,这也推动了计算机辅助翻译软件的兴起,逐渐地从单机版走向了网络及云端,例如,中业科技依靠互联网的大数据,结合不同的国家和地区因素以及语言环境,研发了trycan翻译平台,改变了传统的机器翻译、人工翻译的旧模式,使得翻译的准确性、快速性均得到了较大的提高。但是由于语言自身具有复杂的特点,因此导致计算机辅助翻译仍然需要不断升级创新。该技术主要是利用网络、计算机软件对需要翻译的文本进行相关的翻译处理,在翻译的过程中可以采用前期建立好的语料库,提高翻译的质量和效率。
3.计算机辅助翻译主要是基于语料库来进行翻译工作,因此,前期翻译软件翻译语料库对于是否可以共享、导入和导出等功能较为关注,然而,随着计算机翻译的不断应用,应用场景开始关注翻译的效率及准确率,但是现有匹配方法比较低级,而且速度很慢,也无法达到模糊匹配的结果。
4.现有的匹配方法:1.海明距离匹配方法存在内容长度不相等的情况下匹配度不佳的技术缺陷,技术原因是只是单纯的匹配了内容长度相等的情况。2.jaccard相似度匹配方法存在当a,b内容相匹配时,如果a本身重复内容过多,那么a,b匹配度不佳,技术原因是匹配方法中利用了a本身去重。
5.同时,计算机辅助翻译的模糊匹配召回率不高,具体体现在进行计算机辅助翻译时,译者一般需要检索记忆库,以便找到最合适的译文。在进行检索的时候一般包括两种工作:模糊匹配和完全匹配。前者一般是指召回一些与资料相近的译文片段;后者则是召回和文本中100%相同的译文片段。但由于翻译的源语文件有时候是一些特殊的资料,计算机辅助翻译技术在进行翻译时存在较大困难,模糊匹配召回率普遍不高,比如trados的模糊匹配如果低于70%,则是不能自动召回的。而且如果语言的句型变化太过复杂,就会导致模糊匹配召回率较低,因此对于一些重复率不是很高的文章来说,仍然需要人工进行大量的翻译工作。


技术实现要素:

6.针对现有技术的不足,本技术公开一种翻译语料库的匹配方法。
7.本发明详细的技术方案如下:
8.一种翻译语料库的匹配方法,其特征在于,包括:
9.1)获取待匹配语料库数据,将待匹配的原文和对应的id进行以下步骤;
10.步骤1:将待匹配的原文所有非字母字符替换为空格操作,并且大写转换成小写,得到字符串str,str是保留有空格等空白符的字符串;
11.步骤2:对步骤1得到的带有空白符的字符串str的所有的空格,回车,换行等空白符进行分割得到数组int[]a;
[0012]
步骤3:定义一个用来存放“int[]a的值对应的索引”的变量temp,定义一个用来存放“int[]a的值和对应的索引”key:value形式wordmap,value值为索引,key值为int[]a的值,定义一个用来存放“int[]a所有的值对应的索引”的数组int[]b;进入int[]a的for循环:
[0013]
(1)定义初始变量:i等于0;
[0014]
(2)循环条件:i小于int[]a的长度;
[0015]
(3)变量变化:i每次循环完成语句块后i 1赋值给i;
[0016]
(4)循环语句块:首先通过循环得到int[]a的i对应的值word,if条件语句条件为通过步骤3得到的wordmap里面包含word,输出语句temp等于wordmap取出word值对应的value值;否则,输出语句temp等于wordmap的数量,然后将所述temp为value,word为key存入wordmap中;之后,将所述temp放进一个新的数组int[]b;
[0017]
步骤4:定义一个用来存放“int[]b的长度和对应的值”key:value形式linemap,value值为数组int[]b和对应的id,key值为int[]b的长度;linemap用来进行步骤2)的大致匹配操作使用;
[0018]
2)翻译语料库数据与待匹配数据大致匹配得到集合p,方法如下:
[0019]
定义一个用来存放“待匹配数据的原文”的list集合originlist,
[0020]
定义一个用来存放“每个原文大致匹配对应的id的集合”的list集合templist,
[0021]
定义一个用来存放“每个原文大致匹配的id的所有的集合”的list集合tasklist,
[0022]
定义一个用来存放“循环originlist的初始变量和大致匹配的id所有的的list集合”的key:value形式idmap,value值为list集合tasklist,key值为循环originlist的初始变量的值,idmap用来进行步骤3)详细匹配操作使用;
[0023]
定义一个用来存放“原文大致匹配对应的id所有的集合”的list集合idlist;
[0024]
进入originlist的for循环:
[0025]
(1)定义初始变量:i等于0;
[0026]
(2)循环条件:i小于originlist的长度;
[0027]
(3)变量变化:i每次循环完成语句块后i 1赋值给i;
[0028]
(4)循环语句块:首先通过循环得到originlist的i对应的值originy,进行步骤1)中的步骤1,步骤2,步骤3得到int[]b;
[0029]
定义一个用来存放“大致匹配范围”的变量maxdistance,maxdistance定义为等于b的长度乘以0.2;
[0030]
进入maxdistance的for循环:
[0031]
(1)定义初始变量:deta等于0;
[0032]
(2)循环条件:deta小于等于maxdistance;
[0033]
(3)变量变化:deta每次循环完成语句块后deta 1赋值给deta;
[0034]
(4)循环语句块:执行maxdistance for循环中的增强型内循环:
[0035]
(1)循环变量类型:int;
[0036]
(2)循环变量名称:定义为flag;
[0037]
(3)要被遍历的对象:新建一个数组,数组元素为-1和1;
[0038]
(4)循环语句块:定义一个用来存放“原文大致匹配的长度”的变量length,length=b的长度加上deta乘以flag,从特征1得到的linemap取出length值对应的value值,从而得到大致匹配的id的集合templist,templist存入到tasklist;
[0039]
maxdistance循环结束后tasklist存入idlist,tasklist为value,循环originlist的初始变量为key存入idmap中;
[0040]
originlist循环结束后从翻译语料库取出idlist的数据集合p;
[0041]
3)待匹配数据与集合p进行详细匹配,得到最佳匹配的数据,方法如下:
[0042]
定义一个用来存放“集合p里面所有的id和对应的数据”的key:value形式sentencemap,value值为id对应的数据,key值为id。
[0043]
步骤一;进入p的for循环:
[0044]
(1)循环变量类型:p数据对应的实体类;
[0045]
(2)循环变量名称:定义为sentence;
[0046]
(3)要被遍历的对象:集合p;
[0047]
(4)循环语句块:将所述sentence为value,sentence的id为key存入sentencemap中。
[0048]
步骤二;进入originlist的for循环:
[0049]
(1)定义初始变量:i等于0;
[0050]
(2)循环条件:i小于originlist的长度;
[0051]
(3)变量变化:i每次循环完成语句块后i 1赋值给i;
[0052]
(4)循环语句块:首先通过步骤2)得到的idmap从中取的对应的i的list集合templist,定义一个用来存放“大致匹配数据”的list集合tempsentencelist,执行originlist for循环中的增强型内循环templist:
[0053]
(1)循环变量类型:int;
[0054]
(2)循环变量名称:定义为id;
[0055]
(3)要被遍历的对象:templist;
[0056]
(4)循环语句块:从步骤3)的步骤一得到的sentencemap中取出对应的id的数据添加到tempsentencelist;
[0057]
templist内循环结束后,通过循环得到originlist的i对应的值origin和tempsentencelist,进行以下操作;
[0058]
定义一个用来存放“原文和tempsentencelist匹配度集合”的list集合scores;进入tempsentencelist的for循环:
[0059]
(1)循环变量类型:tempsentencelist数据对应的实体类;
[0060]
(2)循环变量名称:定义为sentence;
[0061]
(3)要被遍历的对象:tempsentencelist;
[0062]
(4)循环语句块:origin和sentence的原文进行详细匹配,具体匹配如下:
[0063]
步骤三;定义x变量,x等于origin,定义y变量,y等于sentence的原文;
[0064]
定义一个用来存放“二维数组有多少个数组和每一个一维数组的元素个数”的二维数组f[][],f定义二维数组有x.length 1个数组,每一个一维数组有y.length 1个元
素,定于f[0][0]等于0;
[0065]
进入x的for循环;
[0066]
(1)定义初始变量:i等于0;
[0067]
(2)循环条件:i小于等于x的长度;
[0068]
(3)变量变化:i每次循环完成语句块后i 1赋值给i;
[0069]
(4)循环语句块:把i赋值给f[i][0];
[0070]
进入y的for循环;
[0071]
(1)定义初始变量:j等于0;
[0072]
(2)循环条件:j小于等于y的长度;
[0073]
(3)变量变化:j每次循环完成语句块后j 1赋值给j;
[0074]
(4)循环语句块:把j赋值给f[0][j];
[0075]
进入x,y的双重for循环,内循环为y循环;
[0076]
(1)定义初始变量:i,j等于0;
[0077]
(2)循环条件:i小于等于x的长度,j小于等于y的长度;
[0078]
(3)变量变化:i每次循环完成语句块后i 1赋值给i,j每次循环完成语句块后j 1赋值给j;
[0079]
(4)循环语句块:定义一个用来存放“相同字符在某个矩阵位置的增量不是0就是1”的cost,cost默认是0;如果x的i-1的索引值不等于y的j-1的索引值cost等于1,其余情况cost等于0;定义a等于f[i][j-1] 1,定义b等于f[i-1][j] 1,定义c等于f[i-1][j-1] cost,取a,b和c最低值d,f[i][j]等于d。最后得到f[x的长度][y的长度]s,放入scores中;
[0080]
p循环结束后scores倒序得到最佳的匹配结果。
[0081]
本发明的技术优势
[0082]
本发明的技术优势在于:利用二维数组获取两个字符串的相似度,取左边值 1,上边值 1,若左边值 1,上边值 1不相等取左上角 1的值,若左边值 1,上边值 1相等取左上角的值,最终取左边值 1和上边值 1和左上角最终值的最小值,从而得到两个字符串的匹配度。本发明相比于海明距离匹配方法和jaccard相似度匹配方法匹配召回率增高明显。
具体实施方式
[0083]
下面结合实施例对本发明做详细的说明,但不限于此。
[0084]
实施例、
[0085]
一种翻译语料库的匹配方法,其特征在于,包括:
[0086]
1)获取待匹配语料库数据,将待匹配的原文和对应的id进行以下步骤;
[0087]
步骤1:将待匹配的原文所有非字母字符替换为空格操作,并且大写转换成小写,得到字符串str,str是保留有空格等空白符的字符串;
[0088]
步骤2:对步骤1得到的带有空白符的字符串str的所有的空格,回车,换行等空白符进行分割得到数组int[]a;
[0089]
步骤3:定义一个用来存放“int[]a的值对应的索引”的变量temp,定义一个用来存放“int[]a的值和对应的索引”key:value形式wordmap,value值为索引,key值为int[]a的值,定义一个用来存放“int[]a所有的值对应的索引”的数组int[]b;进入int[]a的for循
环:
[0090]
(2)定义初始变量:i等于0;
[0091]
(2)循环条件:i小于int[]a的长度;
[0092]
(3)变量变化:i每次循环完成语句块后i 1赋值给i;
[0093]
(4)循环语句块:首先通过循环得到int[]a的i对应的值word,if条件语句条件为通过步骤3得到的wordmap里面包含word,输出语句temp等于wordmap取出word值对应的value值;否则,输出语句temp等于wordmap的数量,然后将所述temp为value,word为key存入wordmap中;之后,将所述temp放进一个新的数组int[]b;
[0094]
步骤4:定义一个用来存放“int[]b的长度和对应的值”key:value形式linemap,value值为数组int[]b和对应的id,key值为int[]b的长度;linemap用来进行步骤2)的大致匹配操作使用;
[0095]
2)翻译语料库数据与待匹配数据大致匹配得到集合p,方法如下:
[0096]
定义一个用来存放“待匹配数据的原文”的list集合originlist,
[0097]
定义一个用来存放“每个原文大致匹配对应的id的集合”的list集合templist,
[0098]
定义一个用来存放“每个原文大致匹配的id的所有的集合”的list集合tasklist,
[0099]
定义一个用来存放“循环originlist的初始变量和大致匹配的id所有的的list集合”的key:value形式idmap,value值为list集合tasklist,key值为循环originlist的初始变量的值,idmap用来进行步骤3)详细匹配操作使用;
[0100]
定义一个用来存放“原文大致匹配对应的id所有的集合”的list集合idlist;
[0101]
进入originlist的for循环:
[0102]
(1)定义初始变量:i等于0;
[0103]
(2)循环条件:i小于originlist的长度;
[0104]
(3)变量变化:i每次循环完成语句块后i 1赋值给i;
[0105]
(4)循环语句块:首先通过循环得到originlist的i对应的值originy,进行步骤1)中的步骤1,步骤2,步骤3得到int[]b;
[0106]
定义一个用来存放“大致匹配范围”的变量maxdistance,maxdistance定义为等于b的长度乘以0.2;
[0107]
进入maxdistance的for循环:
[0108]
(1)定义初始变量:deta等于0;
[0109]
(2)循环条件:deta小于等于maxdistance;
[0110]
(3)变量变化:deta每次循环完成语句块后deta 1赋值给deta;
[0111]
(4)循环语句块:执行maxdistance for循环中的增强型内循环:
[0112]
(1)循环变量类型:int;
[0113]
(2)循环变量名称:定义为flag;
[0114]
(3)要被遍历的对象:新建一个数组,数组元素为-1和1;
[0115]
(4)循环语句块:定义一个用来存放“原文大致匹配的长度”的变量length,length=b的长度加上deta乘以flag,从特征1得到的linemap取出length值对应的value值,从而得到大致匹配的id的集合templist,templist存入到tasklist;
[0116]
maxdistance循环结束后tasklist存入idlist,tasklist为value,循环
originlist的初始变量为key存入idmap中;
[0117]
originlist循环结束后从翻译语料库取出idlist的数据集合p;
[0118]
3)待匹配数据与集合p进行详细匹配,得到最佳匹配的数据,方法如下:
[0119]
定义一个用来存放“集合p里面所有的id和对应的数据”的key:value形式sentencemap,value值为id对应的数据,key值为id。
[0120]
步骤一;进入p的for循环:
[0121]
(1)循环变量类型:p数据对应的实体类;
[0122]
(2)循环变量名称:定义为sentence;
[0123]
(3)要被遍历的对象:集合p;
[0124]
(4)循环语句块:将所述sentence为value,sentence的id为key存入sentencemap中。
[0125]
步骤二;进入originlist的for循环:
[0126]
(1)定义初始变量:i等于0;
[0127]
(2)循环条件:i小于originlist的长度;
[0128]
(3)变量变化:i每次循环完成语句块后i 1赋值给i;
[0129]
(4)循环语句块:首先通过步骤2)得到的idmap从中取的对应的i的list集合templist,定义一个用来存放“大致匹配数据”的list集合tempsentencelist,执行originlist for循环中的增强型内循环templist:
[0130]
(1)循环变量类型:int;
[0131]
(2)循环变量名称:定义为id;
[0132]
(3)要被遍历的对象:templist;
[0133]
(4)循环语句块:从步骤3)的步骤一得到的sentencemap中取出对应的id的数据添加到tempsentencelist;
[0134]
templist内循环结束后,通过循环得到originlist的i对应的值origin和tempsentencelist,进行以下操作;
[0135]
定义一个用来存放“原文和tempsentencelist匹配度集合”的list集合scores;进入tempsentencelist的for循环:
[0136]
(1)循环变量类型:tempsentencelist数据对应的实体类;
[0137]
(2)循环变量名称:定义为sentence;
[0138]
(3)要被遍历的对象:tempsentencelist;
[0139]
(4)循环语句块:origin和sentence的原文进行详细匹配,具体匹配如下:
[0140]
步骤三;定义x变量,x等于origin,定义y变量,y等于sentence的原文;
[0141]
定义一个用来存放“二维数组有多少个数组和每一个一维数组的元素个数”的二维数组f[][],f定义二维数组有x.length 1个数组,每一个一维数组有y.length 1个元素,定于f[0][0]等于0;
[0142]
进入x的for循环;
[0143]
(1)定义初始变量:i等于0;
[0144]
(2)循环条件:i小于等于x的长度;
[0145]
(3)变量变化:i每次循环完成语句块后i 1赋值给i;
[0146]
(4)循环语句块:把i赋值给f[i][0];
[0147]
进入y的for循环;
[0148]
(1)定义初始变量:j等于0;
[0149]
(2)循环条件:j小于等于y的长度;
[0150]
(3)变量变化:j每次循环完成语句块后j 1赋值给j;
[0151]
(4)循环语句块:把j赋值给f[0][j];
[0152]
进入x,y的双重for循环,内循环为y循环;
[0153]
(1)定义初始变量:i,j等于0;
[0154]
(2)循环条件:i小于等于x的长度,j小于等于y的长度;
[0155]
(3)变量变化:i每次循环完成语句块后i 1赋值给i,j每次循环完成语句块后j 1赋值给j;
[0156]
(4)循环语句块:定义一个用来存放“相同字符在某个矩阵位置的增量不是0就是1”的cost,cost默认是0;如果x的i-1的索引值不等于y的j-1的索引值cost等于1,其余情况cost等于0;定义a等于f[i][j-1] 1,定义b等于f[i-1][j] 1,定义c等于f[i-1][j-1] cost,取a,b和c最低值d,f[i][j]等于d。最后得到f[x的长度][y的长度]s,放入scores中;
[0157]
p循环结束后scores倒序得到最佳的匹配结果。
[0158]
应用例、
[0159]
利用本发明所述实施例对以下两个字符串进行匹配:
[0160]
字符串str1=“the interventions lasted for 12weeks,5times a week”;
[0161]
字符串str2=“the intervention lasted for 12weeks,5times a week”;
[0162]
利用现有技术海明距离匹配结果为1.0;jaccard相似度匹配结果为0.0;本方法的匹配结果为99。
[0163]
除此之外,将本发明所述的方法加载于相关翻译平台中,例如,实施在快译点智慧云平台时,目前语料库5000多万条,100条语料句对和语料库匹配,匹配时间大约在5秒左右,匹配召回率相比其他的相似度方法明显提升,弥补了其他相似度方法存在的长度不同相似度召回率低以及本身字符串相似内容居多时相似召回率低的问题。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献