CN102147796B - 一种词汇检索方法及其装置 - Google Patents
一种词汇检索方法及其装置 Download PDFInfo
- Publication number
- CN102147796B CN102147796B CN201010108153.XA CN201010108153A CN102147796B CN 102147796 B CN102147796 B CN 102147796B CN 201010108153 A CN201010108153 A CN 201010108153A CN 102147796 B CN102147796 B CN 102147796B
- Authority
- CN
- China
- Prior art keywords
- vocabulary
- monobasic
- syllable
- initial consonant
- compound vowel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Document Processing Apparatus (AREA)
Abstract
本申请公开了词汇检索方法及装置,用于降低输入法的系统资源消耗,该方法为:接收用户输入的一元词汇拼音,并对所述一元词汇拼音进行声韵母划分,得到声母序列和韵母序列;在一元词典中确定所述声母序列对应的存储区域,并在该存储区域内获得对应所述韵母序列保存的词汇集合,以及在一元词典中获取对应所述词汇集合保存的至少一个一元词汇。这样,通过拼音映射、汉字串映射、将声母韵母分开存储等等手段,降低了输入法的实现复杂度,从而有效降低了输入法运行时的系统资源消耗。本申请同时公开了词汇检索装置。
Description
技术领域
本申请涉及输入法技术,特别涉及一种词汇检索方法及其装置。
背景技术
在任意一款操作系统中,输入法的词汇搜索效率直接影响其系统资源的消耗(如,内存占用量),而输入法的词汇搜索效率受制于输入法的词典查询方式和词典查询速度,进一步而言,输入法词典的结构决定了词典查询方式和查询速度;因此,如何建立可直接快速查询的词典结构是降低输入法系统资源消耗的首要任务。
发明内容
本申请实施例提供一种提高词汇检索效率的方法及其装置,用以降低输入法的系统资源消耗。
本申请实施例提供的具体技术方案如下:
一种一元词汇检索方法,包括:
接收用户输入的一元词汇拼音,并对所述一元词汇拼音进行声韵母划分,得到相应的声母序列和韵母序列;
在一元词典中确定所述声母序列对应的存储区域,并在该存储区域内获得对应所述韵母序列保存的词汇集合,以及在一元词典中获取对应所述词汇集合保存的至少一个一元词汇。
一种词汇检索装置,包括:
处理单元,接收用户输入的一元词汇拼音,并对所述一元词汇拼音进行声韵母划分,得到声母序列和韵母序列;
检索单元,用于在一元词典中确定所述声母序列对应的存储区域,并在该存储区域内获得对应所述韵母序列保存的词汇集合,以及在一元词典中获取对应所述词汇集合保存的至少一个一元词汇。
一种二元词汇检索方法,包括:
接收用户输入的二元词汇拼音,执行如下步骤获得所述二元词汇拼音包含的每一个一元词汇拼音对应的词汇集合:
接收用户输入的一元词汇拼音,并对所述一元词汇拼音进行声韵母划分,得到相应的声母序列和韵母序列;
在一元词典中确定所述声母序列对应的存储区域,并在该存储区域内获得对应所述韵母序列保存的词汇集合,以及在一元词典中获取对应所述词汇集合保存的至少一个一元词汇;
在二元词典中确定所述词汇集合中第一词汇对应的存储区域,并在该存储区域内获取对应所述词汇集合中非第一词汇保存的二元词汇。
一种词汇检索装置,包括:
处理单元,用于接收用户输入的二元词汇拼音,执行如下步骤获得所述二元词汇拼音包含的每一个一元词汇拼音对应的词汇集合:接收用户输入的一元词汇拼音,并对所述一元词汇拼音进行声韵母划分,得到相应的声母序列和韵母序列;在一元词典中确定所述声母序列对应的存储区域,并在该存储区域内获得对应所述韵母序列保存的词汇集合,以及在一元词典中获取对应所述词汇集合保存的至少一个一元词汇;
检索单元,用于在二元词典中确定所述词汇集合中第一词汇对应的存储区域,并在该存储区域内获取对应所述词汇集合中非第一词汇保存的二元词汇。
一种一元词典构建方法,包括:
将一元词汇的拼音进行声韵母划分,得到相应的声母序列和韵母序列;
在一元词典中设置所述声母序列对应的存储区域,并在该存储区域内对应所述韵母序列保存所述一元词汇。
一种一元词汇检索方法,包括:
接收用户输入的一元词汇拼音,并对所述一元词汇拼音进行声韵母划分,得到相应的声母序列和韵母序列;
在一元词典中确定所述韵母序列对应的存储区域,并在该存储区域内获得对应所述声母序列保存的词汇集合,以及在一元词典中获取对应所述词汇集合保存的至少一个一元词汇。
一种一元词典构建方法,包括:
将一元词汇的拼音进行声韵母划分,得到相应的声母序列和韵母序列;
在一元词典中设置所述韵母序列对应的存储区域,并在该存储区域内对应所述声母序列保存所述一元词汇。
本申请实施例中,设置了新的unigram词典和bigram词典,通过拼音映射、汉字串映射、声母韵母分开存储等等手段,将对内存要求降到了最低,同时针对查询频度最高的函数,优化查询效率,达到O(1)或者Log2N的复杂度,即降低了其实现复杂度,从而有效降低了输入法运行时系统资源的消耗。
附图说明
图1为本申请实施例中用于进行词汇检索的装置功能结构图;
图2为本申请实施例中一元词典构建原理图;
图3为本申请实施例中使用一元词典进行检索示意图;
图4为本申请实施例中使用一元词典进行检索流程图;
图5为本申请另实施例中一元词典构建原理图;
图6为本申请实施例中二元词典构建原理图。
具体实施方式
为了降低输入法的系统资源消耗,本申请实施例中,分别设置了新的一元词典和二元词典,其中,
在构建一元词典时,包括:将一元词汇的拼音进行声韵母划分,得到相应的声母序列和韵母序列;在一元词典中设置所述声母序列对应的存储区域,并在该存储区域内对应所述韵母序列保存所述一元词汇。
在构建二元词典时,包括:将二元词汇分解为至少两个一元词汇,并获得所述至少两个一元词汇的词汇集合;在二元词典中设置所述词汇集合中第一词汇对应的存储区域;并在该存储区域内对应所述词汇集合中非第一词汇保存所述二元词汇。
在进行词汇检索时,针对一元词汇和二元词汇分别采用如下方法进行检索:
针对一元词汇:接收用户输入的一元词汇拼音,并对所述一元词汇拼音进行声韵母划分,得到声母序列和韵母序列;接着,在一元词典中确定所述声母序列对应的存储区域,并在该存储区域内获得对应所述韵母序列保存的词汇集合,以及在一元词典中获取对应所述词汇集合保存的至少一个一元词汇。所述词汇集合可以是将词汇转换成对应的词汇标识ID后组成的词汇标识ID集合。
其中,对所述一元词汇拼音进行声韵母划分,得到相应的声母序列和韵母序列,包含但不限于以下两种方式:
1、对所述一元词汇拼音进行声韵母划分后,将获得的各声母音节组成声母序列,以及将划分后获得的各韵母音节组成韵母序列;
2、对所述一元词汇拼音进行声韵母划分后,将获得的各声母音节转换为相应的声母音节ID,再将各声母音节ID组成声母序列,以及将获得的各韵母音节转换为相应的韵母音节ID,再将各韵母音节ID组成韵母序列。
以下实施例中将以第2种情况为例并且以词汇集合为词汇标识ID集合为例进行详细说明。
针对二元词汇:接收用户输入的二元词汇拼音,按照上述方法获得所述二元词汇拼音包含的各一元词汇拼音对应的词汇集合,以及在二元词典中确定所述词汇集合中第一词汇对应的存储区域,并在该存储区域内获取对应所述词汇 集合中非第一词汇保存的二元词汇。所述词汇集合可以是将词汇转换成对应的词汇标识ID后组成的词汇标识ID集合,第一词汇可以是第一词汇ID。
下面结合附图对本申请优选的实施方式进行详细说明。
参阅图1所示,本申请实施例中,用于进行词汇检索的装置,简称检索装置包括处理单元10和检索单元11,其中:
在针对一元词汇检索时,
处理单元10,接收用户输入的一元词汇拼音,并对所述一元词汇拼音进行声韵母划分,得到声母序列和韵母序列;
检索单元11,用于在一元词典中确定所述声母序列对应的存储区域,并在该存储区域内获得对应所述韵母序列保存的词汇ID集合,以及在一元词典中获取对应所述词汇ID集合保存的至少一个一元词汇。
在针对二元词汇检索时,
处理单元10,用于接收用户输入的二元词汇拼音,并对按照上述方法获得所述二元词汇拼音包含的各一元词汇拼音对应的词汇ID集合;
检索单元11,用于在二元词典中确定所述词汇ID集合中第一词汇ID对应的存储区域,并在该存储区域内获取对应所述词汇ID集合中非第一词汇ID保存的二元词汇。
本申请实施例中,上述检索装置可以位于终端用户的电脑、手机等任何具有拼音输入功能的装置上,或者也可以位于服务器侧,在此不再赘述。
基于上述检索装置,下面对本申请实施例中构建输入法核心词典的方式进行详细介绍。
本申请实施例中,所构建的核心词典包括一元(unigram)词典以及二元(bigram)词典两个部分,构建过程是将unigram原始文件和bigram原始文件转换成能高效查询且占用内存最小的二进制文件。
表1
词汇 | 拼音 | 权重 |
冬天 | Dong’tian | 100 |
洞天 | Dong’tian | 54 |
朝阳 | Zhao’yang | 280 |
朝阳 | Chao’yang | 89 |
朝野 | Chao’ye | 752 |
... | ... | ... |
阿里巴巴 | A’lI’ba’ba | 189 |
表2
第一词汇 | 拼音 | 第二词汇 | 拼音 | 权重 |
打 | Da | 酱油 | Jiang’you | 300 |
天气 | Tian’qi | 真好 | Zhen’hao | 56 |
举行 | Ju’xing | 会议 | Hui’yi | 765 |
词典 | CI’dian | 大小 | Da’xiao | 32 |
水果 | Shui’guo | 产业 | Chan’ye | 32 |
... | ... | ... | ... | ... |
淘宝 | Tao’bao | 卖家 | Mai’jia | 650 |
例如,参阅表1所示,unigram原始文件用于记录一元词汇、一元词汇的拼音和一元词汇的权重,用以描述一个一元词汇(含其拼音)独立成词的程度。
参阅表2所示,bigram原始文件用于记录二元词汇,二元词汇的拼音、二元词汇的权重,用以描述一个二元词汇中包含的两个一元词汇(含其拼音)共同出现的程度;其中,bigram原始文件中记录的二元词汇中包含的一元词汇(称为第一词汇和第二词汇)均在unigram词典中有所记录。
基于上述unigram原始文件和bigram原始文件,在其中记录一元词汇及二元词汇时,采用以下方式:
首先,将一元词汇的音节转换成无符号字符(如,uint8_t)的音节ID进行存储,音节与音节ID之间的映射关系具体可以设置为表3所示的内容。
表3
音节 | 音节ID |
d | 7 |
ong | 1 |
t | 2 |
ian | 23 |
zh | 17 |
ao | 13 |
ch | 5 |
y | 123 |
ang | 26 |
e | 21 |
ue | 6 |
ing | 3 |
ie | 8 |
b | 9 |
ou | 4 |
a | 10 |
音节指的是拼音中的声母和韵母,如表3所示,拼音“tian”是由音节“t”和音节“ian”组成,因此,按照如表3所示的映射关系其转换后的音节ID[2,23]两个字节构成。
设置音节与音节ID之间的映射关系,可以有效地降低占用的内存空间。因为:拼音音节采用字符串形式记录时,其平均长度是大于2个字节的,而转换为拼音ID后,每个拼音音节固定为2个字节,从而大大节省了内存空间。另一方面,拼音音节采用字符串形式记录时,若进行音节比较,则需要比较的次数为其长度包含的字节数,显然大于2次;而转换为拼音ID后,每个拼音只需比较两次即可完成音节比较,从而大大提高查找效率。
其次,将unigram原始文件以及bigram原始文件中所有一元词汇(含其拼音)转换成uint32_t长度的词汇ID,从1开始编号,范围是[1,unigram原始文件中一元词汇的个数]。
建立好上术音节ID和词汇ID后,以unigram原始文件及bigram原始文件中出现的一元词汇及其拼音作为key,记录每一个key与对应的词汇ID(Word ID)。具体可以设置为表4(也称为Map)所示的内容:
表4
词汇ID | 一元词汇 | 拼音 | 权重 |
1 | 冬天 | dong’tian | 100 |
2 | 洞天 | dong’tian | 54 |
3 | 朝阳 | chao’yang | 280 |
4 | 朝阳 | zhao’yang | 89 |
5 | 潮阳 | chao’yang | 752 |
6 | 朝野 | chao’ye | 852 |
... | ... | ... | ... |
1000 | 阿里巴巴 | a’li’ba’ba | 189 |
在处理一个key时,首先判断该key是否在Map中已出现,若已出现,则说明已处理过该key,继续处理下一个key;若未出现,则将该key的词汇ID赋值为当前最大词汇ID号+1。存储时,建立MAX(Word ID)+1大小的数组,以WordID作为数组下标,并在对应位置记录Word ID相应的汉字串以及该汉字串对应的权重,这样,在查询时,根据Word ID可以在复杂度O(1)的时间内取得相应词汇。
通过设置词汇ID可以在复杂度O(1)时间内查找到对应的一元词汇及相应的权重信息,因为各种算法对整型数据(Word ID)的处理速度远远大于对字符串数据的处理速度,因此有效提高了词汇检索的效率。另一方面,词库中汉字串的平均长度为10.4904字节,而用词汇ID表示后,只需4个字节,进一步节省了内存空间。进一步地,采用词汇ID最为突出的优点即是解决了多音字的存储问题,因为key是由一元词汇及其拼音共同构成,多音字虽然字形相同,但是拼音并不同,从而对应的key也不同,那么相应的词汇ID也不同,因此,按照词汇ID查找所需的词汇无需担心多音字带了的困扰。
基于上述设置信息,下面对unigram词典以及bigram词典的设置及查询方式进行详细介绍。
一、unigram的词典结构以及查询方案。
unigram词典就是通过如表1所示的拼音(包括声母和韵母)与音节ID之间的对应关系,以及如表3所示的一元词汇与Word ID之间的对应关系来构建的。参阅图2所示,其具体的构建过程如下:
首先、将所有unigram原始文件中一元词汇的拼音包含的声母韵母进行分离,转换为对应的声母音节ID和韵母音节ID,若声母或韵母为空,则用0xFF作为空声母或空韵母的标识。
其次,将所有声母音节ID序列相同的一元词汇及其相关信息(至少包括韵母音节ID序列、Word ID及权重信息)形成一个集合C;其中,较佳地,将集合C中声母音节ID序列相同的一元词汇,按照其韵母音节ID序列进行分类,包括将韵母音节ID序列相同的Word ID及其权重信息存储在一起;进一步地,较佳地,将对应同一声母音节ID序列和韵母音节ID序列的Word ID按照其权重信息从大到小的顺序进行排列。当然,也可以按照权重信息从小到大的顺序进行排列,由管理人员按照应用环境进行相应设定,在此不再赘述。
这样,在形成unigram词典时,将所有的声母相关信息记录在声母区,并且保证是有序的,声母相关信息包含声母音节ID、对应的所有韵母音节ID的存储起始位置和结束位置;对应同一声母音节ID的所有韵母相关信息连续记录在韵母区,韵母相关信息包含韵母音节ID以及对应的Word ID的储存起始位置和个数;其中,将同一声母和韵母对应的所有Word ID,连续地记录在Word ID区。通过上述方式,将声母音节ID和韵母音节ID分开存储,令相同的声母音节ID只存储一份,节省了内存空间;并且针对同一声母音节ID下,相同的韵母音节ID也只存储一份,从而进一步节省了内存空间。较佳地,声母音节ID是按照其ID序列的取值排序的,例如,chen′p ei′jun的声母序列:chpj,转化成后得到id1、id2、id3。具体排序时,是用类字典序的方式,如:(2,3)<(3,5,6)<(3,6)<(4)),可以在log2N时间内完成,其中,N表示:unigram词典有M个词,将每个词的声母抽取出来,形成M个声母序列;将M个声母序列消除重复后,剩下N个声母序列,进一步地,针对用户以简拼方式输入的拼音,如冬天输入为“d’t”, 无需将简拼扩展全拼,而是直接用通配的0xFF标识代替省略的韵母音节ID即可以进行词汇查询。或者,也可以采用其他的自定义的特殊标识对省略的韵母音节ID进行标记,本实施例仅以空标识为例者介绍。
基于上述unigram词典,在进行词汇检索时,可以根据词汇的声母音节ID在声母区采用折半算法进行查找,找到该声母音节ID在声母区的位置,此操作的复杂度为O(lg(N)),N为声母区声母音节ID的个数。接着,获取该声母音节ID对应的声母相关信息,即对应该声母音节ID保存的韵母音节ID的存储起始位置和结束位置;为了支持简拼,较佳地,根据韵母音节ID进行词汇检索时采用顺序遍历的方法,寻找可与该声母音节ID匹配的韵母音节ID对应的候选Word ID,这样就完成词汇检索查找流程。
例如,以用户输入拼音“dong tian”为例,参阅图3和图4所示,本申请实施例中,检索装置基于unigram词典对用户输入的拼音进行词汇检索的详细流程如下:
步骤400:接收用户输入的拼音“dong tian”。
步骤410:将“dong tian”中包含的声母和韵母进行划分,并按照如表3所示的音节与音节ID的映射关系,将划分后获得的声母序列和韵母序列分别转成对应的声母音节ID序列[7,2]以及韵母音节ID序列[1,23]。
步骤420:根据声母音节ID序列[7,2]在unigram词典的声母区进行匹配查找,确定对应该声母音节ID序列设置的韵母音节ID的存储起始位置和结束位置(即存储区域)。
步骤430:根据韵母音节ID序列[1,23]在步骤420中确定的存储起始位置和结束位置之间(即上述存储区域内)进行遍历,获得与韵母音节ID序列[1,23]匹配的Word ID集合[1,2]。
步骤440:根据获得的Word ID集合[1,2]获取对应保存的一元词汇“冬天”和”洞天”;至此,已完成了词汇检索。
完成词汇检索后,可以将“冬天”和“洞天”按照其相应的呈现程度权重排序后(如,按照权重从大到小或从小到大的的顺序排序),通过操作界面呈现给用户,并根据用户选定的一元词汇,更新“冬天”或“洞天”的呈现程度权重。
实际应用中,上述实施例提供的技术方案同样适用于用户输入简拼的情况,例如,参阅图3所示,若用户输入的拼音为简拼“chao y”,则检索装置基于unigram词典对用户输入的简拼进行词汇检索时,先将“chao y”进行声母和韵母的划分,并分别转化成相应的声母音节ID[5,123]以及韵母音节ID[13,0xFF],其中0xFF用于标识空韵母,可以匹配任何韵母;接着,检索装置·根据声母音节ID[5,123]在unigram词典的声母区内查找,获取,获取声母音节ID[5,123]对应的全部韵母音节ID的存储起始位置和结束位置;然后,检索装置根据韵母音节ID[13,0xFF]遍历声母音节ID[5,123]对应的所有韵母音节ID,获知可以匹配的韵母音节ID有[13,26]和[13,21],最后,再获取韵母音节ID[13,26]和[13,21]分别对应的Word ID[4,5,6],并根据Word ID[4,5,6]获得相应的词汇“朝阳”“潮阳”和“朝野“,至此,便完成了根据简拼进行词汇检索的流程。
实际应用中,可以通过对上述实施例的简单变形,构建另一种unigram的词典结构,并实现相应的查询。现对另一种实施例简述如下:
参阅图5所示,其具体的构建过程如下:
首先、将所有unigram原始文件中一元词汇的拼音包含的声母韵母进行分离,转换为对应的声母音节ID和韵母音节ID,若声母或韵母为空,则用0xFF作为空声母或空韵母的标识。
其次,将所有韵母音节ID序列相同的一元词汇及其相关信息(至少包括声母音节ID序列、Word ID及权重信息)形成一个集合D;其中,较佳地,将集合D中韵母音节ID序列相同的一元词汇,按照其声母音节ID序列进行分类,包括将声母音节ID序列相同的Word ID及其权重信息存储在一起;进一步地,较佳地,将对应同一韵母音节ID序列和声母音节ID序列的Word ID按照其权重信 息从大到小的顺序进行排列。当然,也可以按照权重信息从小到大的顺序进行排列,由管理人员按照应用环境进行相应设定,在此不再赘述。
这样,在形成unigram词典时,将所有的韵母相关信息记录在韵母区,并且保证是有序的,韵母相关信息包含韵母音节ID、对应的所有声母音节ID的存储起始位置和结束位置;对应同一韵母音节ID的所有声母相关信息连续记录在声母区,声母相关信息包含声母音节ID以及对应的Word ID的储存起始位置和个数;其中,将同一韵母和声母对应的所有Word ID,连续地记录在Word ID区。通过上述方式,将韵母音节ID和声母音节ID分开存储,令相同的韵母音节ID只存储一份,节省了内存空间。由此可见,图5中所示的一元词典结构和图2中的一元词典结构相比,其区别在于声母区和韵母区进行了调转。
基于上述unigram词典,在进行词汇检索时,可以根据词汇的韵母音节ID在韵母区采用折半算法进行查找,找到该韵母音节ID在韵母区的位置。接着,获取该韵母音节ID对应的韵母相关信息,即对应该韵母音节ID保存的声母音节ID的存储起始位置和结束位置,这样就完成词汇检索查找流程。
二、bigram词典词典结构以及查询方案
bigram词典是通过如表3所示的一元词汇(及其拼音)与Word ID之间的对应关系来构建的,即将bigram原始文件构建成便于高效查找的二进制文件,主要用于提供查明两个词汇之间是否存在bigram关系的查询工作。基于Bigram词典的词汇检索是输入法系统内调用频度较高的操作,其性能直接影响输入法的整体性能,也影响了其消耗的系统资源。参阅图6所示,其构建过程如下:
首先,将一元词汇转换成对应的Word ID时,较佳地,保证优先处理bigram原始文件中出现的一元词汇,这样可以保证bigram词库包含的一元词汇的WordID的取值归属于区间[1-X],X=bigram原始文件中独立词的个数,即将bigram词库中所有的一元词取出,消除重复后的一元词个数为X。
bigram词典分为两个存储区域,第一个存储区域称为BigramFirst,用于记录一个二元词汇中所有第一词汇对应的Word ID,第二个存储区域称为 BigramSecond,用于记录一个二元词汇中第一词汇对应的所有第二词汇的WordID及其两者同时出现的权重。上述bigram词典对应的二元关系可以表示为[WordIDa,WordIDb,w],其中Word ID a,Word ID b分别为第一词汇和第二词汇的Word ID,w为两者共同出现的权重,将所有Word ID a相同的二元关系进行合并即构成集合C,包括,将Word ID a对应信息写入BigramFirst中,记录的信息包括Word ID a对应的所有第二词汇在BigramSecond中的存储起始位置和结束位置;以及将Word ID a对应的所有的[Word ID b,w]连续的写入BigramSecond区域,较佳地,保证按照Word ID b升序(或降序)进行排列。这样将第一个词汇和第二个词汇分开存储,使得相同的第一个词汇只需存储一份,从而节省了内存空间,另一方面,第一个词汇可以在不增加空间的条件下,实现复杂度为O(1)的词汇检索;而第二个词汇按照Word ID b的升序排列,可以在Log2Y时间内内完成词汇检索,其中Y为与第一个词相关的第二个词汇的个数。
在bigram词典内进行二元词汇搜索时,按照上述步骤400-步骤440获得用户输入的二元词汇的词汇ID,例如,获得二元词汇“冬天冷”的词汇ID集合为[Word ID a,Word ID b],那么,首先判断Word ID a的取值是否大于X,若是,则说明Word ID a不存在二元关系,向用户返回0即可,否则,在bigram词典内确定Word ID a对应的第二词汇存储区域的起始位置和结束位置,即[beginPos,endPos],该过程的算法复杂度为O(1),以及在该存储区域内进行折半查找搜索Word ID b,如果搜索到,则返回Word ID a和Word ID b对应的二元词汇,以及两者同时出现的权重信息,否则,返回0,表示Word ID a和Word ID b不存在二元关系,完成查找。其中,在呈现上述二元词汇时,要按照用于表示Word IDa和Word ID b共同出现程度的权重w对其进行排序,并在呈现后根据用户的选择,更新上述w,即更新用于表示Word ID a和Word ID b共同出现程度的权重。
综上所述,本申请实施例中,设置了新的unigram词典和bigram词典,通过拼音映射、汉字串映射、声母韵母分开存储等,将对内存要求降到了最低,同 时针对查询频度最高的函数,优化查询效率,达到O(1)或者Log2N的复杂度,即降低了其实现复杂度,从而有效降低了输入法运行时系统资源的消耗。
具体为,本申请实例中,根据提供的词库文件,将拼音切分成声母和韵母,同时将声母和韵母转成ID,这样一个拼音可以用固定的2个字节表示,而在词库文件中的一个拼音的平均长度是>2,可以节省内存空间;查找时,将拼音字符串的比较转换成ID的比较,因为ID的长度固定,所以ID的平均比较次数小于字符串的比较次数,提高效率。
将词库中的中文串映射成Word Id,这样一元词典的中文串和拼音和二元词典中的包含一元中文串和拼音都可以用一个ID表示,词库中的中文串的平均长度大于一个ID的长度,可以节省存储空间;同时词典查询时,获取到WordID,在最后展示给用户前,所有复杂的比较等运算都可以基于ID进行,而非基于字符串,这样大大降低的算法的复杂度。最后展示给用户时,根据WordId可以在O(1)的时候内获取到对应的中文串以及对应的信息。
在一元词典中查询用户输入的拼音时,先抽取出用户输入拼音的声母ID集合和韵母ID集合,通过折半查找在O(Log2(n))时间内完成对用户拼音的声母ID集合的查找,同时,如果在词典的声母区未找到,就不需要进行韵母ID集合的匹配,大大节省时间。
查找二元词典时,首先在BigramFirst区域O(1)时间内第一个词对应的WordId,如果查找不到,则不用查找第二个词,节省大量时间;第一个词WordId对应的所有的第二个词WordId是有序的,这样可以在Log2N时间内找到。
本申请实施例将拼音字节转换成拼音ID以及将词库中的中文串转换成词汇ID能达到更加优化的实施效果,当然本实施例也可以不将其转换为ID,仍然可以实现本申请。
显然,本领域的技术人员可以对本申请中的实施例进行各种改动和变形而不脱离本申请的精神和范围。这样,倘若本申请实施例中的这些修改和变形属于本申请权利要求及其等同技术的范围之内,则本申请中的实施例也意图包含 这些改动和变形在内。
Claims (17)
1.一种一元词汇检索方法,其特征在于,包括:
接收用户输入的一元词汇拼音,并对所述一元词汇拼音进行声韵母划分,得到相应的声母序列和韵母序列;
在一元词典中确定所述声母序列对应的存储区域,并在该存储区域内获得对应所述韵母序列保存的词汇集合,以及在一元词典中获取对应所述词汇集合保存的至少一个一元词汇;
其中,所述一元词典通过以下方式形成:
将一元原始文件中一元词汇的拼音包含的声母、韵母进行分离,转换为对应的声母音节ID和韵母音节ID;
将所有声母音节ID序列相同的一元词汇及其相关信息形成一个集合,所述相关信息包括韵母音节ID序列、Word ID及权重信息;
在形成一元词典时,将所有的声母相关信息记录在声母区,所述声母相关信息包含声母音节ID、对应的所有韵母音节ID的存储起始位置和结束位置;对应同一声母音节ID的所有韵母相关信息连续记录在韵母区,所述韵母相关信息包含韵母音节ID以及对应的Word ID的储存起始位置和个数;其中,将同一声母和韵母对应的所有Word ID,连续地记录在Word ID区,所述Word ID是通过以下方式获得的:
将一元原始文件中所有一元词汇和该词汇的拼音转换成无符号整数型uint32_t长度的WordID,从1开始编号,范围是[1,一元原始文件中一元词汇的个数]。
2.如权利要求1所述的方法,其特征在于,若用户输入的一元词汇拼音中不包含声母或韵母,则采用空字符进行替代。
3.如权利要求1所述的方法,其特征在于,所述对所述一元词汇拼音进行声韵母划分,得到相应的声母序列和韵母序列,包括:
对所述一元词汇拼音进行声韵母划分后,将获得的各声母音节组成声母序列,以及将划分后获得的各韵母音节组成韵母序列;
或者
对所述一元词汇拼音进行声韵母划分后,将获得的各声母音节转换为相应的声母音节ID,再将各声母音节ID组成声母序列,以及将获得的各韵母音节转换为相应的韵母音节ID,再将各韵母音节ID组成韵母序列。
4.如权利要求1、2或3所述的方法,其特征在于,在一元词典中获取所述词汇集合对应的至少一个一元词汇后,将其按照相应的呈现程度权重进行排序,并呈现给用户,以及根据用户选定的一元词汇更新对应的词汇的呈现程度权重。
5.一种词汇检索装置,其特征在于,包括:
处理单元,接收用户输入的一元词汇拼音,并对所述一元词汇拼音进行声韵母划分,得到声母序列和韵母序列;
检索单元,用于在一元词典中确定所述声母序列对应的存储区域,并在该存储区域内获得对应所述韵母序列保存的词汇集合,以及在一元词典中获取对应所述词汇集合保存的至少一个一元词汇;
其中,所述一元词典通过以下方式形成:
将一元原始文件中一元词汇的拼音包含的声母、韵母进行分离,转换为对应的声母音节ID和韵母音节ID;
将所有声母音节ID序列相同的一元词汇及其相关信息形成一个集合,所述相关信息包括韵母音节ID序列、Word ID及权重信息;
在形成一元词典时,将所有的声母相关信息记录在声母区,所述声母相关信息包含声母音节ID、对应的所有韵母音节ID的存储起始位置和结束位置;对应同一声母音节ID的所有韵母相关信息连续记录在韵母区,所述韵母相关信息包含韵母音节ID以及对应的Word ID的储存起始位置和个数;其中,将同一声母和韵母对应的所有Word ID,连续地记录在Word ID区,所述Word ID是通过以下方式获得的:
将一元原始文件中所有一元词汇和该词汇的拼音转换成无符号整数型uint32_t长度的WordID,从1开始编号,范围是[1,一元原始文件中一元词汇的个数]。
6.如权利要求5所述的装置,其特征在于,若用户输入的一元词汇拼音中不包含声母或韵母,则所述处理单元采用空字符进行替代。
7.如权利要求5所述的装置,其特征在于,所述处理单元对所述一元词汇拼音进行声韵母划分后,将获得的各声母音节组成声母序列,以及将划分后获得的各韵母音节组成韵母序列;或者,对所述一元词汇拼音进行声韵母划分后,将获得的各声母音节转换为相应的声母音节ID,再将各声母音节ID组成声母序列,以及将获得的各韵母音节转换为相应的韵母音节ID,再将各韵母音节ID组成韵母序列。
8.如权利要求5、6或7所述的装置,其特征在于,所述检索单元在一元词典中获取所述词汇集合对应的至少一个一元词汇后,将其按照相应的呈现程度权重进行排序,并呈现给用户,以及根据用户选定的一元词汇更新对应的词汇的呈现程度权重。
9.一种二元词汇检索方法,其特征在于,包括:
接收用户输入的二元词汇拼音,执行如下步骤获得所述二元词汇拼音包含的每一个一元词汇拼音对应的词汇集合:
接收用户输入的一元词汇拼音,并对所述一元词汇拼音进行声韵母划分,得到相应的声母序列和韵母序列;
在一元词典中确定所述声母序列对应的存储区域,并在该存储区域内获得对应所述韵母序列保存的词汇集合,以及在一元词典中获取对应所述词汇集合保存的至少一个一元词汇;
在二元词典中确定所述词汇集合中第一词汇对应的存储区域,并
在该存储区域内获取对应所述词汇集合中非第一词汇保存的二元词汇;
其中,所述一元词典通过以下方式形成:
将一元原始文件中一元词汇的拼音包含的声母、韵母进行分离,转换为对应的声母音节ID和韵母音节ID;
将所有声母音节ID序列相同的一元词汇及其相关信息形成一个集合,所述相关信息包括韵母音节ID序列、Word ID及权重信息;
在形成一元词典时,将所有的声母相关信息记录在声母区,所述声母相关信息包含声母音节ID、对应的所有韵母音节ID的存储起始位置和结束位置;对应同一声母音节ID的所有韵母相关信息连续记录在韵母区,所述韵母相关信息包含韵母音节ID以及对应的Word ID的储存起始位置和个数;其中,将同一声母和韵母对应的所有Word ID,连续地记录在Word ID区,所述Word ID是通过以下方式获得的:
将一元原始文件中所有一元词汇和该词汇的拼音转换成无符号整数型uint32_t长度的WordID,从1开始编号,范围是[1,一元原始文件中一元词汇的个数]。
10.如权利要求9所述的方法,其特征在于,若用户输入的二元词汇拼音中不包含声母或韵母,则采用空字符进行替代。
11.如权利要求9所述的方法,其特征在于,包括:在获得所述词汇集合,与在二元词典中确定所述词汇集合中第一词汇对应的存储区域之间,还包括:
将所述第一词汇的取值与设定阈值进行比较,所述设定阈值为二元词典中当前数值最大的词汇的取值;
确定所述第一词汇小于所述设定阈值时,执行后续操作。
12.如权利要求9、10或11所述的方法,其特征在于,获得所述二元词汇后,按照用于表示第一词汇和非第一词汇共同出现程度的权重对其进行排序,并在呈现后根据用户的选择,更新所述权重。
13.如权利要求9所述的方法,其特征在于,所述声母序列为声母音节ID;所述韵母序列为韵母音节ID。
14.一种词汇检索装置,其特征在于,包括:
处理单元,用于接收用户输入的二元词汇拼音,执行如下步骤获得所述二元词汇拼音包含的每一个一元词汇拼音对应的词汇集合:接收用户输入的一元词汇拼音,并对所述一元词汇拼音进行声韵母划分,得到相应的声母序列和韵母序列;在一元词典中确定所述声母序列对应的存储区域,并在该存储区域内获得对应所述韵母序列保存的词汇集合,以及在一元词典中获取对应所述词汇集合保存的至少一个一元词汇;
检索单元,用于在二元词典中确定所述词汇集合中第一词汇对应的存储区域,并在该存储区域内获取对应所述词汇集合中非第一词汇保存的二元词汇;
其中,所述一元词典通过以下方式形成:
将一元原始文件中一元词汇的拼音包含的声母、韵母进行分离,转换为对应的声母音节ID和韵母音节ID;
将所有声母音节ID序列相同的一元词汇及其相关信息形成一个集合,所述相关信息包括韵母音节ID序列、Word ID及权重信息;
在形成一元词典时,将所有的声母相关信息记录在声母区,所述声母相关信息包含声母音节ID、对应的所有韵母音节ID的存储起始位置和结束位置;对应同一声母音节ID的所有韵母相关信息连续记录在韵母区,所述韵母相关信息包含韵母音节ID以及对应的Word ID的储存起始位置和个数;其中,将同一声母和韵母对应的所有Word ID,连续地记录在Word ID区,所述Word ID是通过以下方式获得的:
将一元原始文件中所有一元词汇和该词汇的拼音转换成无符号整数型uint32_t长度的WordID,从1开始编号,范围是[1,一元原始文件中一元词汇的个数]。
15.如权利要求14所述的装置,其特征在于,若用户输入的二元词汇拼音中不包含声母或韵母,则所述处理单元采用空字符进行替代。
16.如权利要求14或15所述的装置,其特征在于,所述检索单元获得所述二元词汇后,按照用于表示第一词汇和非第一词汇共同出现程度的权重对其进行排序,并在呈现后根据用户的选择,更新所述权重。
17.一种一元词汇检索方法,其特征在于,包括:
接收用户输入的一元词汇拼音,并对所述一元词汇拼音进行声韵母划分,得到相应的声母序列和韵母序列;
在一元词典中确定所述韵母序列对应的存储区域,并在该存储区域内获得对应所述声母序列保存的词汇集合,以及在一元词典中获取对应所述词汇集合保存的至少一个一元词汇;
其中,所述一元词典通过以下方式形成:
将一元原始文件中一元词汇的拼音包含的声母、韵母进行分离,转换为对应的声母音节ID和韵母音节ID;
将所有韵母音节ID序列相同的一元词汇及其相关信息形成一个集合,所述相关信息包括声母音节ID序列、Word ID及权重信息;
在形成一元词典时,将所有的韵母相关信息记录在韵母区,所述韵母相关信息包含韵母音节ID、对应的所有声母音节ID的存储起始位置和结束位置;对应同一韵母音节ID的所有声母相关信息连续记录在声母区,所述声母相关信息包含声母音节ID以及对应的Word ID的储存起始位置和个数;其中,将同一韵母和声母对应的所有Word ID,连续地记录在Word ID区,所述Word ID是通过以下方式获得的:
将一元原始文件中所有一元词汇和该词汇的拼音转换成无符号整数型uint32_t长度的WordID,从1开始编号,范围是[1,一元原始文件中一元词汇的个数]。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010108153.XA CN102147796B (zh) | 2010-02-05 | 2010-02-05 | 一种词汇检索方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010108153.XA CN102147796B (zh) | 2010-02-05 | 2010-02-05 | 一种词汇检索方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102147796A CN102147796A (zh) | 2011-08-10 |
CN102147796B true CN102147796B (zh) | 2014-10-15 |
Family
ID=44422062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010108153.XA Expired - Fee Related CN102147796B (zh) | 2010-02-05 | 2010-02-05 | 一种词汇检索方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102147796B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107621892A (zh) * | 2017-10-18 | 2018-01-23 | 北京百度网讯科技有限公司 | 用于获取信息的方法及装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109426358B (zh) * | 2017-09-01 | 2023-04-07 | 百度在线网络技术(北京)有限公司 | 信息输入方法和装置 |
CN113486163A (zh) * | 2021-06-30 | 2021-10-08 | 西安热工研究院有限公司 | 一种基于音形泛化的模糊搜索方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1307273A (zh) * | 2000-01-28 | 2001-08-08 | 英业达集团(上海)电子技术有限公司 | 智能注音输入系统及方法 |
CN1369760A (zh) * | 2001-02-15 | 2002-09-18 | 英业达股份有限公司 | 使用简易罗马拼音的输入系统与方法 |
CN101075262A (zh) * | 2007-06-12 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 一种计算机汉字输入方法及系统 |
CN101079060A (zh) * | 2007-03-26 | 2007-11-28 | 腾讯科技(深圳)有限公司 | 一种中文输入法简拼实现方法和系统 |
-
2010
- 2010-02-05 CN CN201010108153.XA patent/CN102147796B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1307273A (zh) * | 2000-01-28 | 2001-08-08 | 英业达集团(上海)电子技术有限公司 | 智能注音输入系统及方法 |
CN1369760A (zh) * | 2001-02-15 | 2002-09-18 | 英业达股份有限公司 | 使用简易罗马拼音的输入系统与方法 |
CN101079060A (zh) * | 2007-03-26 | 2007-11-28 | 腾讯科技(深圳)有限公司 | 一种中文输入法简拼实现方法和系统 |
CN101075262A (zh) * | 2007-06-12 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 一种计算机汉字输入方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107621892A (zh) * | 2017-10-18 | 2018-01-23 | 北京百度网讯科技有限公司 | 用于获取信息的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102147796A (zh) | 2011-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109492077B (zh) | 基于知识图谱的石化领域问答方法及系统 | |
CN109947904B (zh) | 一种基于Spark环境的偏好空间Skyline查询处理方法 | |
US8838551B2 (en) | Multi-level database compression | |
US20100094835A1 (en) | Automatic query concepts identification and drifting for web search | |
CN110532347B (zh) | 一种日志数据处理方法、装置、设备和存储介质 | |
CN106033416A (zh) | 一种字符串处理方法及装置 | |
CN101075252A (zh) | 一种网络搜索方法及系统 | |
CN1008016B (zh) | 输入处理系统 | |
CN101794307A (zh) | 基于互联网分词思想的车载导航poi搜索引擎 | |
CN108804642A (zh) | 检索方法、装置、计算机设备及存储介质 | |
CN104199965A (zh) | 一种语义信息检索方法 | |
CN109902142B (zh) | 一种基于编辑距离的字符串模糊匹配和查询方法 | |
US9720976B2 (en) | Extracting method, computer product, extracting system, information generating method, and information contents | |
CN102867049A (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
CN1924854B (zh) | 智能移动终端的桌面搜索方法 | |
CN105096944A (zh) | 语音识别方法及装置 | |
WO2020037794A1 (zh) | 一种英文地名的索引建立方法及其查询方法和装置 | |
CN113033183A (zh) | 一种基于统计量与相似性的网络新词发现方法及系统 | |
CN102147796B (zh) | 一种词汇检索方法及其装置 | |
CN109885641A (zh) | 一种数据库中文全文检索的方法及系统 | |
CN105404677A (zh) | 一种基于树形结构的检索方法 | |
US8682900B2 (en) | System, method and computer program product for documents retrieval | |
CN103064847A (zh) | 索引装置、索引方法、检索装置、检索方法和检索系统 | |
CN105740374A (zh) | 基于分布式内存的三维平台数据模糊查询方法 | |
CN110928550B (zh) | 基于关键词Trie树消除GCC抽象语法树冗余的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1159793 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1159793 Country of ref document: HK |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141015 Termination date: 20220205 |
|
CF01 | Termination of patent right due to non-payment of annual fee |