首页> 中国专利> 一种基于篇章文档的自适应输入法

一种基于篇章文档的自适应输入法

摘要

本发明提出了一种基于用户本地篇章文档的自适应输入法,与传统的输入法不同,本发明基于用户本地文档,自动感知用户当前的知识领域。首先,系统自动建立一个基础数据集,不同的知识领域建立相应的领域数据集,系统会根据用户已输入文字信息感知到相应的领域并自动切换到当前的领域数据集,通过调整领域数据集和基础数据集之间的权值关系,提高领域数据集的比重,实现不同知识领域之间的自动感知和参数调整;随着输入信息的增加,相应的领域数据集也会不断的更新,同时提取领域数据集中的高频字串动态填充基础数据集信息。本输入法更加智能的理解用户要输入的信息,减少选择次数,提高首次选择的准确率,同时也显著降低了重码率。

著录项

  • 公开/公告号CN103970910A

    专利类型发明专利

  • 公开/公告日2014-08-06

    原文格式PDF

  • 申请/专利权人 南京大学;

    申请/专利号CN201410229623.6

  • 申请日2014-05-27

  • 分类号G06F17/30(20060101);

  • 代理机构32237 江苏圣典律师事务所;

  • 代理人胡建华

  • 地址 210023 江苏省南京市栖霞区仙林大道163号南京大学

  • 入库时间 2023-12-17 01:00:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-02-15

    授权

    授权

  • 2014-09-03

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20140527

    实质审查的生效

  • 2014-08-06

    公开

    公开

说明书

技术领域

本发明是一种输入法,特别是一种基于篇章文档的自适应输入法。

背景技术

随着计算机使用的广泛普及,中文输入问题已经变得日益重要,经过近几十年的 研究,中文的输入已经包括了诸如最常见的键盘输入、语音输入、手写输入以及最近 的移动平台触摸输入,多种多样的输入方式从一方面说明了中文输入技术的不断成熟, 从另外一个方面来说,也说明了中文输入在当前这个信息时代的重要性。由于输入法 其在当前信息社会独特的重要性,目前个人计算机平台的输入法拥有丰富的功能,其 目标是最大化的改善用户输入的体验。

但是,目前的输入法的准确率仍然没有达到人们所期望的程度,很多时候还是要 选择很多次才能找到用户想要的,归其原因,主要是现行的输入法主要是建立在大数 据基础之上,贴近的是大多数用户,但是针对每个用户实效性还是有待提高,每个用 户在每个时间段会处于不同的用语环境,这样大数据就无法很有效的实时切换相应的 知识领域以贴近用户的习惯,特别是在某些特定领域的工作者,比如古汉语,现行输 入法的性能就更差了。基于此本发明提出一种输入法新的思路,直接从用户的篇章文 档出发,系统自学习数据,建立每个用户自己的数据集信息。

传统输入法都是在大数据上训练,不分领域,同时无法感知用户当前所在知识领 域,这样会出现重码率很高,用户选择的次数会升高等问题,虽然传统输入法都有记 忆功能(即用户刚选择的字串下次重新输入时会排在首要位置),但是这种方法是固定 的和机械的,不是动态的,在不同领域、不同用语环境之间切换时容易出现混乱。

发明内容

发明目的:本发明所要解决的技术问题是针对当下使用各种输入法时,选择的次数 太多,尤其是对于一些特定领域的知识,以及在不同文档、不同领域等不同用语环境 之间切换,现存主流输入法无法做到自动感知、动态调整到当前知识领域中,用户要 经过多次选择才能命中想要输入的字串的问题,提供一种基于篇章文档的自适应输入 法。

为了解决上述的技术问题,本发明公开了一种构建输入法的方法,该方法是基于每 个用户本地文档、篇章信息,通过利用这些信息建立一个基础数据集;同时,系统建 立不同领域的领域数据集,通过用户当前的输入自动感知输入信息的领域类别,同时 将数据集切换到相应的领域数据集上,调整基础数据集和领域数据集之间的参数,调 高领域数据集的权值比重,使得输入法智能的理解用户的输入需求,并随着输入信息 的增多实时的更新领域数据集,随着领域数据集的更新不断添加基础数据集的信息, 随着用户的使用时间不断增加,用户自己的数据集的不断增大,系统会越来越贴近每 个用户特定的输入习惯。

所述输入法包括的步骤如下:

步骤一中,建立基础数据集的两种方法,根据本地文档建立基础数据集,系统自动 获取用户本地n篇文档信息D={d1,d2,...,dn}作为数据源,通过输入法的统计模型(如 语言模型N-gram)自学习;

具体过程为:对于每一篇文档di(1≤i≤n)(di为n篇文档中的一篇),分别计算 一元、二元、三元文法,将一篇文档表示成di={w1,w2...,wm},其中m表示一篇文档 中不重复字总的个数;

一元文法计算过程:计算每篇文档中的每个字出现的次数,给上述n篇文档都建立 一个集合ci={(w1,count1),(w2,count2),...,(wm,countm)}(1≤i≤n),其中每个二 元组(wk,countk)表示在任意一篇文档di中字wk出现了countk次,其中k的值对于某个 集合ci范围(1≤k≤m);然后将每篇文档统计的集合{ci,c2...,cn}合并为一个总的集合 C:

C={(w1,ACount1),(w2,ACount2),...,(wl,ACountl)}

其中l为n篇文档所有不重复字的总个数,通过概率公式计算得到每个字出现的概 率:

P(wk)=ACountk|Count|(1k1)

其中ACountk对应字wk在n篇文档中出现的次数,|Count|表示n篇文档中所有字 出现的总个数(包括重复出现的次数),P(wk)表示n篇文档中任意一个字wk在一元文 法集合base1上出现的概率,这个概率值是步骤四中字音发射概率和初始概率的基础, 这样每个字对应一个概率构建基础数据集中的一元文法集合

base1={(w1,P(w1)),(w2,P(w2)),...,(wl,P(wl))}

二元文法计算过程:在已知字wk的情况下出现字wk+1的概率,概率公式为:

P(wk+1|wk)=P(wk,wk+1)P(wk)(1kl)

其中P(wk)在统计一元文法时已经计算得到,对于P(wk,wk+1),先统计n篇文档 D={d1,d2,...,dm}中每个文档di中每句话相邻两个字(wk,wk+1)同时出现的次数 count(k,k+1),建立集合:

c‘i={(w1,w2,count(1,2)),(w2,w3,count(2,3)),...,(we,we+1,count(e,e+1))}(1≤e≤m)

其中e表示文档di中每句话所有相邻的两个字同时出现的次数,count(e,e+1)表示同时 出现(we,we+1)的次数;然后将每篇文档统计的集合{c‘1,c‘2,...,c‘n}合并为一个总的集合:

C′={(w1,w2,ACount(1,2)),(w2,w3,ACount(2,3)),...,(wf,wf+1,ACount(f,f+1))}

(1≤f≤l)

其中f表示n篇文档中两个相邻字出现的次数(不包括重复的情况),则通过概率公 式:

P(wk,wk+1)=ACount(k,k+1)|Count|1k<l

其中count(k,k+1)在集合C′中已经计算得到,|Count′|=ACount(1,2)+ACount(2,3)+ ...+ACount(f,f+1),得到了P(wk,wk+1),通过公式可 以得到P(wk+1|wk)在已知字wk的情况下出现字wk+1的概率,即二元文法的概率,这样 每两个相邻的字对应出现的概率构建基础数据中的二元文法集合

base2={(w1,w2,P(w1,w2)),(w2,w3,P(w2,w3)),...,(wf,wf+1,P(wf,wf+1))}

三元文法计算过程:已知出现前面出现两个字的情况下,第三个字的出现的概率, 概率公式:

P(wk+1|wk-1,wk)=P(wk-1,wk,wk+1)P(wk-1,wk)(1k<l)

其中P(wk-1,wk)在统计二元文法时已经计算得到,对于P(wk-1,wk,wk+1),先统计 n篇文档D={d1,d2,...,dn}中每个文档di中每句话相邻三个字(wk-1,wk,wk+1)同时出 现的次数count(k-1,k,k+1),建立集合:

c"i={(w1,w2,w3,count(1,2,3)),(w2,w3,w4,count(2,3,4)),...,(wp-1,wp,wp+1,count(p-1,p,p+1))}

(1≤p≤m)

其中的p表示文档di中每句话同时出现三个字的个数,count(p-1,p,p+1)表示在示同 时出现(wk-1,wk,wk+1)的次数;然后将每篇文档统计的集合{c”1,c“2,...c“n}合并为一个总 的集合:

C”={(w1,w2,w3,ACount(1,2,3)),(w2,w3,w4,ACount(2,3,4)),...,(wq-1,wq,wq+1,ACount(q-1,q,q+1))}

(1≤q<l)

其中q表示n篇文档中三个相邻字出现的次数(不包括重复的情况),则通过概率 公式:

P(wk-1,wk,wk+1)=ACount(k-1,k,k+1)|Count|(1k<l)

其中count(k-1,k,k+1)在集合C”中已经计算得到,

|Count”|=ACount(1,2,3)+ACount(2,3,4)+...+ACount(q-1,q,q+1)(1≤q<l)

得到了P(wk-1,wk,wk+1)通过公式

P(wk+1|wk-1,wk)=P(wk-1,wk,wk+1)P(wk-1,wk)(1k<l)

可以得到P(wk+1|wk-1,wk)在已知字(wk-1,wk)的情况下出现字wk+1的概率,即三 元文法的概率,此概率值是步骤四中计算状态转移概率的基础,每三个相邻的字和对 应出现的概率值构成了三元文法集合,作为基础数据集的组成部分

base3={(w1,w2,w3,P(w1,w2,w3)),...,(wq-1,wq,wq+1,P(wq-1,wq,wq+1))}

将一元文法集合base1、二元文法集合base2、三元文法集合base3计算得到的相应 概率值存入数据库,完成构建基础数据集Base,同时存入数据库;

二是外部输入数据集,建立的方法也是采用上述第一种情况中的N-gram模型,按 上述步骤计算一元、二元、三元文法,训练的数据源主要采用一定规模的开源语料, 如近十年内的人民日报,将其所有内容作为一个总的文档E,计算相应的N-garm概率 值存入数据库,具体过程如下:

一元文法计算过程:计算文档E中的每个字出现的次数,建立一个集合set ={(w1,Scount1),(w2,Scount2),...,(wo,Scounto)},其中o值表示文档E中所有不重复 的字的个数,每个二元组(wk,Scountk)(1≤k≤m)表示在文档E中任何一个字wk出现 了Scountk次,通过概率公式:

P(wk)=Scountk|sCount|(1ko)

其中Scountk对应字wk在文档E中出现的次数,|sCount|表示文档E中所有字出现 的总个数(包括重复出现的次数),P(wk)表示文档E中每个字wk的在这个数据集上出 现的概率,这里我们规定通过输入法自带形式构建的基础数据集中的一元文法集合也 用base1表示;

二元文法计算过程:在已知一个字wk的情况下出现字wk+1的概率,概率公式为:

P(wk+1|wk)=P(wk,wk+1)P(wk)(1k<o)

其中P(wk)在统计一元文法时已经计算得到,对于P(wk,wk+1),先统计文档E中每 句话相邻两个字(wk,wk+1)同时出现的次数Scount(k,k+1),建立集合:

set′={(w1,w2,Scount(1,2)),(w2,w3,Scount(2,3)),...,(wg,wg+1,Scount(g,g+1))}

(1≤g<o)

其中g表示文档E每句话所有相邻的两个字同时出现的次数,Scount(g,g+1)表示同时 出现(wg,wg+1)的次数

P(wk,wk+1)=Scount(k,k+1)|sCount|1k<o

其中Scount(k,k+1)在集合C′中已经计算得到,|sCount′|=Scount(1,2)+Scount(2,3)+ ...+Scount(g,g+1),得到了P(wk,wk+1),通过公式可以得到P(wk+1|wk)在已知字wk的情况下出现字wk+1的概率,即二元文法的概率,这 里我们规定通过输入法自带形式构建的基础数据集中的二元文法集合用base2表示;

三元文法计算过程:已知出现前面出现两个字的情况下,第三个字的出现的概率, 概率公式:

P(wk+1|wk-1,wk)=P(wk-1,wk,wk+1)P(wk-1,wk)(1k<l)

其中P(wk-1,wk)在统计二元文法时已经计算得到,对于P(wk-1,wk,wk+1),先统计 E中每句话相邻三个字(wk-1,wk,wk+1)同时出现的次数Scount(k-1,k,k+1),建立集合:

set"={(w1,w2,w3,Scount(1,2,3)),(w2,w3,w4,Scount(2,3,4)),...,(wh-1,wh,wh+1,Scount(h-1,h,h+1))}

(1≤h<o)

其中的h表示文档E中每句话同时出现三个字的个数,Scount(h-1,h,h+1)表示在示同 时出现(wk-1,wk,wk+1)的次数;

P(wk-1,wk,wk+1)=Scount(k-1,k,k+1)|sCount|(1k<o)

其中Scount(k-1,k,k+1)在集合C”中已经计算得到,

|sCount”|=count(1,2,3)+count(2,3,4)+...+count(h-1,h,h+1)(1≤h<o)

得到了P(wk-1,wk,wk+1)通过公式

P(wk+1|wk-1,wk)=P(wk-1,wk,wk+1)P(wk-1,wk)(1k<l)

可以得到P(wk+1|wk-1,wk)在已知字(wk-1,wk)的情况下出现字wk+1的概率,即三 元文法的概率,这里我们规定通过输入法自带形式构建的基础数据集中的三元文法集 合也用base3表示;

通过上述步骤将一元base1、二元base2、三元base3文法计算得到的相应概率值存 入数据库,就构建了基于输入法自带的基础数据集Base。

注:本发明不限定某种特定的输入法统计模型,任何输入法统计模型都可以使用(本 发明实现的版本是采用了语言模型N-gram和隐马尔科夫模型HMM),主要创新点是 统计计算的数据源、自动感知知识领域以及不同领域之间的参数调整。

由于数据源的规模是有限的,通过上述方法得到的某些概率值上会出现为0的情况, 这时要采用平滑算法将为概率值为0的情况给予补偿,使用Good-Turing平滑方法:

N=Σr=1urr

其中N是作为数据源的语料库的大小,ur是语料中正好出现r次的N-gram(w1, w2,…,wn)的数量,出现一次的n1个,出现二次的n2个,……;由于,

N=Σr=1urr*=Σr=0(r+1)ur+1(0r<N)

有,r*=(r+1)ur+1ur

那么,Good-Turing估计在语料中出现r次的概率为:

Pr=r*N

本发明中直接用ur+1代替E(ur+1),ur代替E(ur+1),这样,所有概率之和为:

Σr>0ur×Pr=1-u1N<1

得到的剩余概率量平均分给概率为0的情况,这样在概率值中就不会出现值为0 的;

步骤二包括以下步骤:

领域数据集的建立也有两种方式:

一是输入法自带,系统利用不同领域(例如物理、化学、计算机、古汉语、诗词歌 赋等)的文档信息作为该领域数据集的数据源,构建相应的领域数据集

Dset={doM1,doM2,...,doMθ}(1≤θ)

其中doMθ表示某个领域的数据集,例如有物理、化学、计算机、古汉语、诗词歌 赋五种领域,每个领域获取100篇文档合并成该领域一个总的文档,计算每一个doMθ中 的N-gram概率值,重复步骤一中输入法自带基础数据集的统计过程,生成doMθ的三 个集合(sun1,sun2,sun3},其中sunj和basej(1≤j≤3)内部结构完全相同,每一个领 域doMθ都有一个总的领域数据集Sunθ={sun1,sun2,sun3},存入数据库作为领域数据 集信息,如构建古汉语领域数据集doM过程如下:

在古汉语100篇合并的总文档中,计算每一个字wk的次数,每两个同时出现字 wkwk+1的次数,以及每三个字同时出现的次数wk-1wkwk+1的次数,再计算 P(wk+1|wk-1,wk)的值,建立sun3,存入相应领域的数据集,作为古汉语三元文法的数 据集;

同时,对于每个类别的数据源构建一个向量空间(去掉停用字、标点符号对于分类 帮助不大的字),如

Avertorj=[w1,w2,...,wω](1≤j≤5)

其中wω表示由100篇文档构成的总文档中不重复的字,ω的值是总文档中不重复字 的个数,对于不同领域的文档ω的值是不同的,这样一个由字构成的向量就唯一的代表 了这个领域的标志,作为后面通过用户已输入信息构建输入向量,计算两者之间的余 弦距离的基础;

二是系统自学习,根据用户本地文档信息作为领域数据源,这是从用户的已有习惯 出发,将用户文档采用聚类方法分出不同领域;例如用户本地有T个领域的文档,每 个领域各有S篇,共H=S×T篇文档,每篇文档中的不重复字构建向量空间 VQ={v1,v2,...,vz}(1≤Q≤H),其中的z表示H篇文档中所有不重复字的个数,每个 向量中的值vk(1≤k≤z)为TF-IDF的值(TF是指某个字在一个文档中出现的次数,I DF由总文档数目除以包含该字的文档数目,再将得到的商取对数得到,TF-IDF的值 为TF与IDF的乘积),随机选取T个向量作为中心点,计算每个向量和这T个中心点 的余弦值,

δU=cosVIVJ(1IT,1JH,1UT×H)

每个向量都要计算T次,取其中δU值最小的作为,那么就把这个文档归为该领域, 这样出现了一次划分;重新计算中心点,按上述公式继续计算选取δU值最小的,不断 迭代,直到中心点稳定,这样系统就将H篇文档自动的划分为了T个领域;对于每个 领域重复步骤一中输入法自带基础数据集的统计过程,生成doMT(1≤T)的三个集合 {sun1,sun2,sun3},构建Dset=(doM1,doM2,...,doMθ}(1≤θ)。

同样,对于不同的领域,获取每个领域中所有不重复的字构建该领域的空间向量作 为唯一标志:

VectorM=[w1,w2,...,wY](1≤M≤T)

其中Y的值是固定的,取所有领域中不重复的字构建向量长度最大者;

步骤三包括如下步骤:

用户已输入信息(w1,w2,...,wL},其中每个wL是已输入字,这些已输入信息构建出 用户输入的输入向量W=[w1,w2,...,wL],这里的L取值要根据步骤三中的构建领域数 据集的种类,如果是输入法自带的,则L=y即系统分好领域的标志向量的维数,如果 是系统自学习的,则L=M即所有领域中不重复的字构建向量长度最大者;计算输入向 量W和每个领域标志向量VectorM或者Avertorj之间的相似度(即向量余弦值),值最小 的就将其归入到相应的领域中去;如“道千乘之国,敬事而信,节用而爱人,使民以时”, 构建向量空间W,系统计算每个领域的标志向量与W的余弦值,得到古汉语的标志向量 最相似(余弦值最小),将其归为古汉语,同时将领域数据集切换到古汉语,调整调基 础整数据集α和领域数据集β之间的权重关系,bsj=α*basej+β*sunj(1≤j≤3),提 高领域数据集α的比重,其中α+β=1,β取值0.8,α取值0.2;

步骤四用户输入拼音时包括如下步骤:

由输入的拼音串得到最后的输出字串,所述过程包括:切分拼音串、隐马尔科夫模 型HMM(音-字的发射概率、三元文法的转移概率、初始化概率序列、动态规划的Vi terbi路径)。

用户输入拼音串其中为用户输入的拼音字母的个数,o表示 输入的一个拼音字母;智能切分输入拼音的特征在于,所述过程包括:正向最大匹配 法(由左到右的方向)和逆向最大匹配法(由右到左的方向),输入法自带一个拼音表, 正向匹配从o1开始在表中依次寻找,找到匹配的则暂时保留为 一个划分,从开始向后继续匹配,如果后面无法匹配,再回溯到前一次划分,取 其他可能的划分,知道整个拼音串都得到了划分;按照相同的过程再从逆向划分,取 两者相同的划分部分;

隐马尔科夫模型HMM具体过程包括如下:

隐含状态表示输出字序列;

可观察状态表示用户输入的一串拼音字符序列;

初始状态概率序列表示第一个拼音对应的候选字概率序 列,πτ的值是步骤三中通过调整权值的bs1中的概率值;

隐含状态转移概率矩阵A=qγε,aγε=bs3,其中 γ表示某个状态时刻,ε表示下一个状态时刻,表示根据前面的字出现下一个字的概率;

观测状态发射概率序列表示从步骤三中bsj得到的对应这个拼 音串的字在数据源中出现的概率用极大似然估计来估算并归一化, C(O)表示拼音串对应的字O在数据源中出现的次数,|C|表示整个数据源中字的个数, 比如,输入拼音串“dao,”按在文档中出现的概率排序即是“1.道2.到3.倒4.悼5.刀”;

在隐马尔科夫模型HMM中每个隐含状态S生成的观察值O的生成概率P(O|S)是 独立的,其中为模型的输出字序列,即状态值序列,其中对于每个 状态O,若|O|=m则有种的候选字序列,要从中选择最符合汉语语言规律的排序即:

S=argmaxP(O|S)

Viterbi算法用于解码,在候选字矩阵中根据发射概率、转移概率前一个状态值计算 每条路径的概率值,按照概率大小排序,如果用全排列,则输入个拼音,如果每个拼 音有m个候选,则要计算次,时间复杂度较高。隐马尔科夫模型状态空间S,初始 状态的概率为π0,从状态γ到状态ε的转移概率为aγε,观测到的输出为产生观测结果最有可能的状态序列由递归关系得:

V1,σ=P(y1|σ)·πσ(0σ)

Vd,σP(yd*|σ)·maxxS(ax,σ·Vd*-1,x)

其中是前d*个最终状态为o的观测结果最有可能对应的输出状态序列概率,通 过保存向后指针记住在第二个等式中用到的状态x可以得到维特比路径,

x=argmaxxS(V,x)

这样就得到了由拼音串对应的输出字串的概率序列;

步骤五领域数据集实时更新包括两个方面:

一是随着输入字串的不断添加,系统根据用户的输入得到输出的字串,再根据用户 选定的字串重复步骤一,并将计算结果添加到相应的领域数据集doMθ(1≤θ)中,在原 来领域数据集的基础上不断完善扩充;

二是随着领域数据集的不断更新,该领域的标志向量VectorM=[w1,w2,...,wY](1≤ M≤T)也在相应的调整,对VectorM中不存在的字加入到向量中去,如原来已经构成一 个一万维的空间向量,不断更新成一万五千维度;

步骤六提取领域数据集中出现频率高于某个阈值(这个阈值用户可以根据自己的需 要动态设置,例如设置为领域数据集中频率在前十位)字串,重复步骤一的统计计算 过程,不断迭代更新,并将计算结果加入到基础数据集,扩大基础数据集规模,越来 越贴近用户的输入习惯。

本发明从根本上解决了上述问题,与传统的输入法不同,本发明基于用户本地文 档,系统建立一个基础数据集,自动感知用户当前的知识领域,不同的知识领域建立 相应的领域数据集,系统会根据用户已输入文字信息感知到相应的领域并自动切换到 当前的领域数据集,通过调整领域数据集和基础数据集之间的权值关系,提高领域数 据集的比重,实现不同知识领域之间的自动感知和参数调整;随着输入信息的增加, 相应的领域数据集也会不断的更新,同时提取领域数据集中的高频字串动态填充基础 数据集信息。本输入法更加智能的理解用户要输入的信息,减少选择次数,提高首次 选择的准确率,同时也显著降低了重码率。

本发明优点包括如下几点:

1.基于用户篇章文档做训练,系统自学习每个用户特定的输入习惯,比传统的输 入法更加贴近每个用户,不同的用户有自己量身定制的输入法;

2.自动感知用户要输入的知识领域,系统会根据已输入信息,通过分类学习,感 知用户当前的知识领域,同时自动将相应的数据集信息切换到该领域数据集;

3.参数调整,基础数据集和领域数据集之间的权值关系,提高当前领域数据集比 重。

附图说明

下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和 或其他方面的优点将会变得更加清楚。

图1是本发明的流程图。

图2是实施例效果示意图。

具体实施方式

如图1所示,本发明公开了一种基于篇章文档的自适应输入法,包括以下步骤:

步骤一,建立基础数据集Base;

步骤二,建立领域数据集Dset:

步骤三,根据用户已经输入信息以及领域数据集和基础数据集之间的权重关系调 整得到当前输入字的概率;

步骤四,音字转换输出:切分用户输入的拼音串、结合步骤三当前输入字的概率, 利用隐马尔科夫模型HMM,计算得出字串的概率,并按照字串概率值的大小排序输出;

步骤五,领域数据集实时更新:输入法根据用户的输入得出可能的字串,再根据用 户选定的字串添加到相应的领域数据集中实时更新信息;

步骤六,基础数据集更新:提取领域数据集中出现频率大于设定阈值的字串添加到 基础数据集中,不断更新基础数据集。

步骤一中根据本地的或者输入法自带的n篇文档D作为数据源建立基础数据集, D={d1,d2,...,dn},通过输入法自学习,对于每一篇文档di分别计算一元、二元、三 元文法,分别得到:

每个字对应出现概率的一元文法集合base1

base1={(w1,P(w1)),(w2,P(w2)),...,(wl,P(wl))},

其中l为n篇文档所有不重复字的总个数,wl表示第l个字,P(wl)表示n篇文档 中第l个字wl在一元文法集合base1上出现的概率;

每两个相邻的字对应出现的概率的二元文法集合base2

base2={(w1,w2,,(w1,w2)),(w2,w3,,(w2,w3)),...,(wf,wf+1,,(wf,wf+1))},

其中f为n篇文档所有不重复的相邻两个字的总个数,wf表示第f个字, wf+1表示第f+1个字,P(wf,wf+1)表示n篇文档中不重复的相邻第wf个字和第wf+1个字在二元文法集合base2上出现的概率;

每三个相邻的字对应出现的概率的三元文法集合base3

base3={(w1,w2,w3,P(w1,w2,w3)),...,(wq-1,wq,wq+1,P(wq-1,wq,wq+1))},

其中q为n篇文档所有不重复的相邻三个字的总个数,wq-1表示第q-1个字,wq表 示第q个字,wq+1表示第q+1个字,P(wq-1,wq,wq+1)表示n篇文档中不重复的相邻第 q-1个字、第q个字和第q+1个字在三元文法集合base3上出现的概率;

将一元文法集合base1、二元文法集合base2、三元文法集合base3计算得到的相应 概率值存入数据库,完成构建基础数据集Base。

步骤二包括以下步骤:

领域数据集的建立包括两种方式:

一是输入法自带,输入法利用不同领域的文档信息作为该领域数据集的数据源,构 建相应的领域数据集Dset:

Dset={doM1,......doMθ},1≤θ,

其中doMθ表示第θ个领域的数据集,每个领域获取100篇文档合并成该领域一个总 的文档,计算每一个数据集doMθ中的N-gram概率值,生成doMθ的三个集合 {sun1,sun2,sun3},其中sunj和basej内部结构相同,1≤j≤3,每一个领域doMθ都有 一个总的领域数据集Sunθ={sun1,sun2,sun3},存入数据库作为领域数据集信息;

二是输入法自学习,根据用户本地文档信息作为领域数据源,将用户文档采用聚类 方法分出不同领域,对于用户本地的T个领域的文档,每个领域各有S篇,共H=S×T 篇文档,每篇文档中的不重复字构建向量空间VQ={v1,v2,...,vz},1≤Q≤H,其中的 z表示H篇文档中所有不重复字的个数,每个向量的值vk为TF-IDF的值,1≤k≤z, 随机选取T个向量作为中心点,计算每个向量和所述T个中心点的余弦值δU

δU=cosVIVJ,

每个向量计算T次,取其中δU值最小指,把文档归为该领域;重新计算中心点, 继续计算选取δU值最小的,不断迭代,直到中心点稳定,将H篇文档划分为T个领域; 对于每个领域生成doMT的三个集合{sun1,sun2,sun3},1≤T, Dset={doM1,doM2,...,doMT}。

步骤三包括如下步骤:

对于用户已输入信息(w1,w2,...,wL},其中每个wL是已输入字,根据已输入信息构 建出用户输入的输入向量W=[w1,w2,...,wL],L取值根据步骤二中的构建领域数据集 的种类确定,如果是输入法自带的,则L=y即输入法分好领域的标志向量,如果是输 入法自学习的,则L=M即所有领域中不重复的字构建向量长度最大者;

计算输入向量W和每个领域标志向量之间的相似度即向量余弦值,将余弦值最小的 归入到相应的领域中,同时将领域数据集切换到相应的领域;

根据调整调基础整数据集权重α和领域数据集权重β之间的关系调整得到当前输入 字的概率bsj,bsj=α*basej?β*sumj,1≤j≤3,其中α+β=1,初始β取值0.8,α 取值0.2。

步骤四用户输入拼音时包括如下步骤:

用户输入拼音串其中为用户输入的拼音字母的个数,o表示 输入的一个拼音字母;切分输入拼音包括:采用由左到右的方向正向最大匹配法和由 右到左的方向逆向最大匹配法:正向匹配从o1开始依次寻找拼音,找到匹配的个拼 音,暂时保留为一个划分,从开始向后继续匹配,如果后面无 法匹配,再回溯到前一次划分,取所有可能的划分,直到整个拼音串都得到了划分; 再进行逆向匹配,取正向匹配和逆向匹配两者相同的划分部分,最后得到划分好的拼 音序列为作为隐马尔科夫模型HMM中的观测状态;

对于每个划分的拼音O,每一个拼音O可能对应有N*个字,个拼音组 成了一个的矩阵,

表示第个拼音对应可能的第N*个字,每个拼音到对应字的发射概率PS是步骤三中bs1中对应该字的概率值,1≤b≤N*;

对于需要输出的字序列概率值,其中是到任何一个字, 即矩阵A中每一列中的任意一个字和其他所有列中的任意一个字组合在一起的概率:

P(S|O)=PS*PZ*P-1,

其中,PZ是字在已知前面字出现的情况下出现的转移概率,对于b=1时,即初 始化概率,第一个拼音O1对应可能字的发射概率,等于步骤三中bs1中对应可能字的值; b=2时,转移概率pZ是已知第一个字的情况下出现第二个字的概率,等于步骤三中bs2中 对应字的概率值;b≥3时,转移概率PZ是已知前两个字出现第三个字的概率,等于步 骤三中bs3中对应字的概率值;对于用Viterbi算法记录第个 观测状态的矩阵A,并将结果保存下来,作为计算第个观测状态的基础;对每个状态 计算概率按概率值大小排序输出相应的字串。

步骤五领域数据集实时更新包括两个方面:

一是随着输入字串的不断添加,输入法根据用户的输入得到输出的字串,再根据用 户选定的字串重复建立基础数据集,并将计算结果添加到相应的领域数据集doMθ中;

二是随着领域数据集的不断更新,将用户选定的字串加入领域数据集的标志向量也 在相应的调整。

步骤六提取领域数据集中出现频率高于设定阈值的字串,重复建立基础数据集, 不断迭代更新,并将计算结果加入到基础数据集。

实施例

本发明所用的算法全部由C#语言编写实现,数据库使用MySQL5.5。实验作为对 比的本地程序采用的机型为:Intel Pentium E5500处理器,主频为2.8GHZ,内存为4 G。

实验数据准备如下:人民日报开源数据库作为基础数据集的数据源,两万多个字 音表,本地文档古汉语左转(总共2万6千多字)作为训练集数据,老子作为测试集 数据,分作几组试验:

一组是在不同的训练数据上

一组是针对不同的输入法

对比试验是现在主流输入法搜狗(sougou)和微软必应输入法(Bing)。试验结果 表明准确率和重码率都取得了很好的效果。

实施例

本实施例运行如下:

1.建立基础数据集,本发明实验版本采用人民日报近十年来开源数据作为数据源, 构建基础数据集,分别计算语言模型N-gram的一元文法、二元文法、三元文 法,其中三元文法用作隐马尔科夫模型HMM中的状态转移概率矩阵,一元文 法作为字到音的发射概率,由于数据量是有限的,对于出现概率为0的情况, 采用了Good-Turning平滑方法,将上述统计得到的信息存入数据库,作为基础 数据集;

2.建立领域数据集,本发明实验版本采用采用获取本地文档构建领域数据集,古 汉语左转,每句作为一个单元,利用上步中的语言模型N-gram构建相应的古 汉语数据集信息存入到数据库中,同时构建古汉语领域的向量空间;

3.调整数据集间的参数,通过用户已输入信息,构建一个向量空间,和数据库中 的领域向量空间计算之间的余弦值,将其归入到相应的领域,同时调用相应领 域数据集,调整基础数据集和领域数据集之间的参数关系,PPαx+βy, α+β=1,x表示基础数据集,y表示当前的领域数据集,提高β的值,α取值 0.2,β取值0.8,得到一个综合了基础数据和领域数据集的N-gram模型;

4.音字装换输出,输入拼音串其中为输入拼音字符个数,对 应的字串对于每个拼音所对应的字的发射概 率通过上述步骤1和步骤3调参后的一元文法信息,即用极大似然估计来估算并归一化,C(O)表示拼音串对应的字C(O)在数据 源中出现的次数,|C|表示整个数据源中字的个数,初始化概率序列是第一个拼 音的发射概率,转移概率矩阵是步骤1和步骤3调参后三元文法的概率,通过 Viterbi算法得到已经排序好的字串信息;

5.领域数据集更新,用户选定字串,系统自动捕获填充到相应的领域数据,更新 对应的N-gram信息,同时更新领域数据集的向量空间;

6.基础数据集更新,领域数据集发生变化,基础数据集从变化的领域数据集中提 取频率较高(概率值排名前十)的字串填充到基础数据集中来,不断更新基础 数据集的信息;

实验分十组数据,每次递增2000,作为训练集;测试集用老子。首次命中率,即 用户想要的字串显示在输入法的第一个位置,否则为未命中。实验结果表明相对于搜 狗和微软输入法,命中率都有显著提高,更有随着训练集的递增,本发明的命中率越 来越高,微软Bing的输入法命中率维持在30%左右,搜狗的输入法命中率维持在50%, 本发明的输入法可以达到90%以上,见图2,纵坐标表示首次命中率,横坐标表示训 练集的字个数,以万为单位。

重码率,相对于微软和搜狗的输入法,本发明的输入法重码率也相较后两者有比 较明显的降低。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号