CN1993692A - 字符显示*** - Google Patents
字符显示*** Download PDFInfo
- Publication number
- CN1993692A CN1993692A CNA2005800165319A CN200580016531A CN1993692A CN 1993692 A CN1993692 A CN 1993692A CN A2005800165319 A CNA2005800165319 A CN A2005800165319A CN 200580016531 A CN200580016531 A CN 200580016531A CN 1993692 A CN1993692 A CN 1993692A
- Authority
- CN
- China
- Prior art keywords
- phrase
- character
- word
- speech
- data
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/274—Converting codes to words; Guess-ahead of partial word inputs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
Abstract
一种用于为用户界面产生显示数据的方法和***,包括:(i)接收包括表意字符的输入字符串;(ii)从所述输入字符串中选择表意字符;(iii)产生从所述选择的字符开始的第一词或短语,所述第一词或短语对应于所述输入字符串中与字典中的词或短语相对应的最大连续表意字符;(iv)针对所述第一词或短语中的每个字符,基于所述输入字符串中从所述第一词或短语的字符开始的多个连续表意字符产生附加词或短语,每个所述附加词或短语对应于所述字典中的词或短语;并且(v)在所述用户界面上产生用于显示所述输入字符串中的连续字符组的所述显示数据,所述组包括所述第一词或短语以及所述附加词或短语中的所有字符,所述组基于所述附加词或短语相对于所述第一词或短语的位置被显示。
Description
技术领域
本发明涉及一种用于产生用来显示表意字符的显示尤其是用于指示由表意字符构成的词或短语的界限的显示的***和方法。
本发明还涉及一种用于产生用来提供由表意字符构成的词或者短语的相关信息的显示的***和方法。
背景技术
汉语可能比其它语言更加难学,比如印欧语系的语言。一方面,一个人在学习大量的汉字之后才能够阅读一段汉字。不同的繁体汉字约有50,000个以上,其中常用的大约有5,000到8,000个。在这5,000到8,000个汉字当中,每天都要使用的有将近3,000个。汉字是表意字符,每个字都可以表示至少一种含义。而印欧语系的语言中所利用的只是一小组标准的表示读音的符号或字符,其中这组符号或字符定义字母表,并且每个单词都是由表示读音的字符的唯一组合构成,其具有特定的含义。
另一方面可能要归因于汉语中对词的定义的不同方式。在印欧语系的语言中,因为相邻单词是通过空格或者小间隙来分隔的,所以单词开始和结束的边界非常明显。相反地,汉字中词的边界却很模糊,因为词与词之间没有自然的界定(比如空格或者间隙),并且汉字典型的书写方式是一个挨着一个,没有任何指示表明哪里是词的开始或结束。但是,标点符号可以帮助界定词的边界。能够阅读汉字的人可以很容易地解析或解释一串汉字并识别相关的词。然而,要想获得这项技能,必须经过对汉语字词的认知能力的正规训练,将这项技能教授给一个不熟悉汉语或者汉字词汇量有限的人是非常困难的。
语言学习工具典型地包括文本阅读器,它带有与字典文库相链接的增强显示。这种显示可以帮助学生识别串中的各个词,并且当词被选中时(例如点击这个词),还可以显示出这个词的含义。由于在汉语中识别词边界的复杂性,要提供一种类似的识别汉语词的学习工具就更加困难了。
在一串汉字中识别词的边界是一项复杂的工作,因为汉语中的词可能由一个或多个汉字组成。这样,确定单个汉字是否本身应被视作词,或者它是否应与相邻的字组合以构成词,就需要考虑这个字在句子中使用时的上下文(如考虑与这个字相邻的字)。更复杂的是一个汉字可能有多于一个含义。例如,把特定的字和其它字或词放在一起的时候,这个字的含义就可能会被限定或者改变。字的正确含义将再次取决于这个字在句子中使用时的上下文。组成一个词的一组字有可能部分或者完全与组成另一个词的另一组字交叠。因此,单纯地通过求助于包含多个汉字的词中每个字的单独含义来确定该词的含义是困难且复杂的。
在作为示例的汉字的上下文中所述的上述问题以及类似的问题也会在其它基于表意字符的语言中发生(如日语和韩语)。因此,期望提供一种能够解决上述问题的方法和***或者至少提供一种有用的替换方案。
发明内容
根据本发明,提供了一种用于为用户界面产生显示数据的方法,所述方法包括:
(i)接收包括表意字符的输入字符串;
(ii)从所述输入字符串中选择表意字符;
(iii)产生从所述选择的字符开始的第一词或短语,所述第一词或短语对应于所述输入字符串中与字典中的词或短语相对应的最大连续表意字符;
(iv)针对所述第一词或短语中的每个字符,基于所述输入字符串中从所述第一词或短语中的字符开始的多个连续表意字符而产生附加词或短语,每个所述的附加词或短语都对应于所述字典中的词或短语;以及
(v)在所述用户界面上产生用于显示所述输入字符串中的连续字符组的所述显示数据,所述组包括所述第一词或短语以及所述附加词或短语中的所有字符,所述组基于所述附加词或短语相对于所述第一词或短语的位置被显示。
本发明还提供一种用于执行上述方法的***。
本发明还提供一种用于执行上述方法的包含计算机可执行代码的计算机程序产品。
本发明还提供一种用于为用户界面产生显示数据的***,包括:
(i)用于接收包括表意字符的输入字符串的装置;
(ii)用于从所述输入字符串中选择表意字符的装置;
(iii)用于存储字典的存储器;
(iv)词产生器,用于:
产生从所述选择的字符开始的第一词或短语,所述第一词或短语 对应于所述输入字符串中与字典中的词或短语相对应的最大连续表意字符;并且
针对所述第一词或短语中的每个字符,产生从所述第一词或短语中的字符开始的附加词或短语,每个所述附加词或短语基于所述输入字符串中的多个连续表意字符而产生,并且每个所述附加词或短语对应于所述字典中的词或短语;以及
(v)用于在所述用户界面上产生用于显示所述输入字符串中的连续字符组的所述显示数据的装置,所述组包括所述第一词或短语以及所述附加词或短语中的所有字符,其中所述字符组的显示基于所述附加词或短语相对于所述第一词或短语的位置。
附图说明
下面将参考附图,仅作为示例描述本发明的优选实施例,其中:
图1为显示***的框图,其还示出了字符处理***的各模块;
图2为示出用于处理从字符输入模块接收的输入字符串以便显示的步骤的流程图;
图3为示出用于确定从选定字符开始的、可使用输入字符串中的连续字符形成的最长词的步骤的流程图;
图4为示出用于利用字符字典和变体字典将汉字转换为繁体汉字的步骤的流程图;
图5为示出用于利用变体字典将汉字强行转换为其繁体变体的步骤的流程图;
图6为示出用于利用最长词中的每个字产生词列表然后确定该最长词是否有歧义的步骤的流程图;
图7为示出用于从最长词中的根字开始并使用输入字符串中该根字后面连续的字产生词列表的步骤的流程图;
图8为示出用于处理从字符输入模块接收到的输入字符串从而显示与输入字符串中识别的词相关联的描述性数据的步骤的流程图;
图9为示出用于产生包含在最长词内的词的列表的步骤的流程图;
图10为示出用于查询、检索并显示与包含字或复合词的列表中的每个条目相对应的、来自字符字典、复合字典和/或变体字典的数据值的步骤的流程图;
图11为示出用于利用从包含一个或多个拼音音节的输入字符串获得的拼音音节产生条目列表的步骤的流程图,其中每个条目对应于单个字或复合词;
图12为示出用于利用从输入字符串获得的关键词产生条目列表的步骤的流程图,其中每个条目对应于单个字或复合词;
图13为示出用于利用从输入字符串获得的字产生条目列表的步骤的流程图,其中每个条目对应于单个字或复合词;
图14为终止符的图;
图15为标点符号的图;
图16为以汉语书写的多字符词;
图17为以汉语书写的多字符词;以及
图18为多个以汉语书写的单字符词。
具体实施方式
作为示例在处理汉字的上下文中描述优选实施例,并且应当理解这些优选实施例可以用于处理其它语言(如日语或者韩语)中的表意字符。
如图1所示,处理***100包括字符输入模块102,字符处理模块104和显示模块106。字符输入模块102接收来自用户的汉字输入字符串。举例来说,字符输入模块102为用户产生用户界面(例如,以用于接收一个或多个字符输入的输入窗口或文本框的形式)以输入字符串,并且用户界面可以从字符输入设备(如键盘、鼠标或者字符输入板,例如PenPowerCrystal触摸式中文书写板<http://www.penpower.com.tw/>)或者软件输入法(例如Microsoft的全球输入法编辑器,从http://www.microsoft.com/windows/ie/downloads/recommended/ime/default.mspx可以获得该软件)接收输入字符串。字符输入模块102将输入字符串转发至字符处理模块104。
字符处理模块104处理输入字符串,并将结果(即由字符处理模块104产生的显示数据)发送给显示模块106以便显示(例如,通过更新由字符处理模块104产生的用户界面)。显示数据表示要被显示的一个或多个字符,也表示每个要被显示的字符的显示准则。
如图1所示,字符处理模块104包括断词(tokenisation)模块108、分析模块110、查询模块112和存储器114。存储器114包括任何形式的计算机可读存储介质(如硬盘,光盘或者磁带,随机存取存储器(RAM)和/或只读存储器(ROM))。存储器114还包含复合字典116、字符字典118以及变体字典120。
如图1所示,字符处理模块104中的断词模块108接收来自字符输入模块104的输入字符串,并通过参考字符字典116、复合字典118以及变体字典120,来确定使用输入字符串中从特定字符位置(或光标位置)开始的一个或多个连续字符所能形成的最长的词。如果光标位置处的字符是分隔符,断词模块108就将该分隔符传递给显示模块106以便显示。
分隔符可以是文件结束(EOF)符、换行符、终止符或者标点符号。终止符定义句子的结束,并且例如包括图14所示的字符。终止符包括特定于具体语言、用来定义句子结束的字符,比如图14中的字符1402相当于汉语中的句号。标点符号是没有任何含义的符号或者字符,并且不是终止符、EOF符或者换行符。标点符号包括图15所示的符号,Unicode Standard(4.0.0版本)的第6章“Writing Systems and Punctuation”中进一步描述了这些符号(从<http://www.unicode.org/versions/unicode4.0.0/ch06.pdf>中可以获得),其内容通过引用结合在本文中。所有未定义为分隔符的字符被称作非分隔符。
如果断词模块108确定最长的词是单个字,则断词模块108将包括要被显示的字符的显示数据传给显示模块106以便显示。如果最长的词包含两个或更多个字,则对于该最长词中的每一个字,断词模块108使用最长词中的每一个字作为起始字(即根字),产生包含一个或多个复合词(即具有两个或更多个字的词)的列表。每个复合词都对应于字符字典116、复合字典118以及变体字典120中的字或词。列表中的每个复合词都以作为最长词中的字的根字开始,而且每个复合词都是使用输入字符串中跟随并包含该根字的连续字符来构成。
将这个包含一个或多个复合词的列表传给分析模块110,分析模块110根据列表中的复合词确定该最长词是否由于完全包含列表中的其它复合词或者与其相交叠而有歧义。如果是,分析模块110产生包括该最长词的显示数据,并将其传给显示模块106以便显示。如果该最长词完全包含列表中的一个复合词,显示模块106按照显示数据中为最长词中的字符定义的显示准则显示该最长词(例如,指示它有歧义)。如果该最长词与列表中的一个复合词交叠但没有完全包含该词,显示模块106按照显示数据中为最长词中的字符定义的不同显示准则显示该最长词(例如,指示不同的歧义形式)。如果该最长词被确定为没有歧义,则分析模块110将包含最长词的显示数据传给显示模块106以便根据显示数据中定义的又一不同显示准则显示为无歧义词。
显示准则是指定义用来显示一组一个或多个字的一个或多个视觉特征的一个或多个条件。可以用作显示准则的条件包括用特定的字体类型、字体颜色和字体风格(包括粗体、斜体和下划线)显示一组字,对于单个或一组字采用有色背景(即高亮),或者结合其他独特图形标识手段显示单个或一组字(例如,在框中显示字符),或者一个或多个上述条件的任意组合。
查询模块112处理由断词模块108生成的词的列表,并从字符字典116、复合字典118以及变体字典120的数据字段中检索与包含在最长词中的每个复合词相关联的数据值。然后,将所检索的数据值传给显示模块106以便显示。
处理***100中的模块可以在软件中实施并在运行诸如Windows或Unix等标准操作***的标准计算机(例如由IBM公司<http://www.ibm.com>提供的计算机)上执行。本领域的技术人员可以理解由这些组件执行的处理至少可以部分地由专用硬件电路执行,例如专用集成电路(ASICs)或者现场可编程门阵列(FPGA)。由处理模块110执行的处理可以作为独立的应用,或者作为与标准操作***如MicrosoftWindows操作***的任何版本(<http://www.microsoft.com/windows/>)的默认输入和显示组件交互的***式软件组件来实施。
字符字典116关联代表特定表意字符(如繁体汉字)的标识符。字符字典116中的每个字都与一个包括一个或多个对象的列表相关联,每个对象都包含一个或多个值。这些值可以对应于读音数据、音频数据和/或定义数据。读音数据代表特定字的发音表示(如拼音)。音频数据代表相应字的音频表示。优选地,音频表示包括存储在存储器114中的音频文件(或者指向这种文件的、包括路径和/或文件名的指针)。音频文件中的数据可以表示模拟的或者数字化的音频信号,该信号在以后可以被再现为声音波形,以向用户说明该字的发音。定义数据代表对应于特定字的一个或多个含义(例如,该字被翻译为另一种语言后的含义,如英语)的定义(例如,字符串的形式)。每个表意字符都有含义,因此它本身即可被看作词。
字符字典116可以作为存储在存储器114中的哈希映射来实施,它将标识符(例如,字符的Unicode字符码)与包含一个或多个对象的列表相关联。Unicode标准(可从<http://www.unicode.org/>获得)是一种对字符进行编码的标准,其中为任何语言中的每个字符、符号或字母分配一个唯一的十六进制数值标识符,其被称为Unicode字符码。在一个优选的实施例中,仅仅使用与繁体汉字对应的Unicode字符码(如在CJK统一表意文字标准(范围:4E00-9FAF)中所定义,可从<http://www.unicode.org/charts/PDF/U4E00.pdf>获得)来标识XML字符数据文件和字符字典116中的字符。在其它优选的实施例中,可以使用与其它语言中的表意字符对应的Unicode字符码(例如,可从<http://www.unicode.org/charts>获得其它表意字符的Unicode字符码定义)。
字符字典116也可以作为关系数据库中的一个或多个表,或者作为将唯一标识符与一个或多个值相关联的多维数组来实施(例如,其中该一个或多个表或阵列中的每个元素将唯一Unicode字符码与包含一个或多个列表元素的列表相关联)。
对应于字符字典116的哈希映射可以利用包含在存储于存储器114中的一个或多个结构化数据文件中(例如,可扩展标记语言(XML)文件)的数据生成。如下所示,列表1是对应于来自XML字符数据文件的单字符条目(或图示符)的数据片段示例。该XML字符数据文件包含对应于一个或多个字符的数据条目,每个条目都用来产生字符字典116中的一个条目。每一个字的数据都存储在标签<glyph>和</glyph>之间。每个条目都由每个字符的唯一Unicode字符码标识,该唯一Unicode字符码存储在标签<unicode>和</unicode>之间。
在标签<kDefinifion>和</kDefinition>之间,XML字符数据文件以字符串的形式存储了字的定义。该定义可以是该字表示为采用任何语言(包括汉语)表达的字的含义。XML字符数据文件还在标签<pinyin>和</pinyin>之间为每个字存储了读音表示(如拼音)。汉字的读音表示可以用称为拼音的罗马字母描述。每个表意字符可以对应于一个或多个拼音音节,而每个音节由声音部分和音调部分构成。每个字的拼音音节可以用文本部分(对应于声音部分)和音调标识符(标识音调部分)的组合来表示。文本部分是特定汉字发音的罗马字母表示,而音调标识符代表该汉字的发音音调。优选地,每个汉字的书面读音表示都是基于汉语普通话(或官方语言)。相应地,音调标识符优选地为从1到5之间的数值标识符,分别对应于为普通话拼音定义的5个标准音调。例如,数字“1”代表与高平音高对应的第一个音调。数字“2”代表与上升音高对应的第二个音调。数字“3”代表与先降后升音高对应的第三个音调。数字“4”代表与下降音高对应的第四个音调。并且类似地,数字“5”代表与不发声(或轻声)对应的第五个音调。这样,在列表1所示的拼音表示中,被标识为Unicode字符码“53e3”的汉字,其普通话拼音表示为“kou3”,这指示了该汉字的读音为“kou”,音调为三声。
然而,单个书面汉字在不同的中国方言中可能有不同的发音。每个汉字将有对应于特定口语方言的不同书面读音表示。所以,举例来说,存储在字符字典116中的每个汉字的书面读音表示可以是基于另一种汉语方言的拼音表示(如,基于广东话拼音)。通常,优选的是字符字典116中所有字的书面读音表示始终如一地与常见单个方言的拼音表示相关联。在本发明的其它实施例中,每个字都可以单独地与一个或多个不同的拼音表示相关联,以对应于不同方言中的发音。在这种情况下,优选的是字符字典116中的每个字始终如一地与对应于同一组不同方言的同一组不同拼音表示相关联。
下面是描述如何提取存储在XML字符数据文件中的对应于汉字的数据以及使用该数据产生字符字典116中的条目的示例。用Unicode字符码“53e3”标识列表1所示的字。当例如采用任何传统的解析技术来解析XML字符数据文件时,从XML字符数据文件中的每个条目提取Unicode字符码,以形成字符字典116中的对应条目的键。该键唯一地标识对应于字符字典116中的字的哈希映射中的特定条目。例如,可以通过将每个键与包含一个或多个对象的列表相关联来生成对应于字符字典116的哈希映射,其中,每个对象都与定义数据(如翻译字符串)、代表该字读音表示的读音数据相关联(如拼音),和/或代表该字的音频数据(如音频信号或音频文件)相关联。
如下所述,列表2为与来自XML字符数据文件的单字符条目相对应的片段的示例,其中同一字(用Unicode字符码“4f9b”标识)可以以不同的音调发音(即“gong1”和“gong4”),并且不同的含义与每个发音相关联。在这种情况下,与字符字典116对应的哈希映射中以“4f9b”标识的条目就是包含两个对象的列表。第一个对象包含与“gong1”对应的读音数据和定义数据(即,分别为拼音音节“gong1”和翻译字符串“supply;provide;”)。第二个对象包含与“gong4”对应的发音数据和定义数据(即,分别为拼音音节“gong4”和翻译字符串“lay(offerings);confess;own up;”)。
复合字典118关联表示复合词或短语的标识符。一个词包括单个字(如存储在字符字典116中)或者两个或更多个字的组合(如存储在复合字典118中)。一个短语包括多于两个字的组合,其仅仅存储在复合字典118中。复合字典118中的词/短语的标识符可以与包含一个或多个对象的列表相关联,其中每个对象都包含一个或多个值。这些值可以对应于该词/短语的读音数据、音频数据和/或定义数据。优选地,复合字典118中的每个词/短语的字都是繁体汉字。
对于复合字典118中的每个词/短语,读音数据代表该复合词的读音表示(如拼音)。音频数据代表相应词/短语的音频表示,例如以存储在存储器114中的音频文件(或者指向这样一个文件的、包括路径和/或文件名的指针)的形式。举例来说,音频文件中的数据代表模拟的或数字化的音频信号,该信号在以后可以被再现为声音波形,以向用户说明该词/短语的发音。定义数据代表对应于该词/短语的含义(例如,该复合词被翻译为另一种语言以后的含义,如英语)的定义(例如,以字符串的形式)。
复合字典118可以作为存储在存储器114中的哈希映射来实施,它将标识符(例如,对应于词/短语中每个字的Unicode字符码的唯一组合,唯一标识作为复合词的词/短语)与包含一个或多个对象的列表相关联,每个对象都包含一个或多个值。可选地,复合字典118也可以作为关系数据库中的一个或多个表,或者作为多维数组(如上所述)来实施,其各自将使用Unicode字符码的组合形成的唯一标识符与对象列表相关联,其中每个对象包含一个或多个值。复合字典118可以采用与其它语言中的表意字符对应的Unicode字符码来标识另一种语言中的词/短语。其它表意字符的Unicode字符码定义可从<http://www.unicode.org/charts/>获得。
对应于复合字典118的哈希映射可以利用存储于存储器114中的一个或多个结构化数据文件(例如,可扩展标记语言(XML)文件)中所包含的数据生成。如下所示,列表3是对应于来自XML复合词数据文件的复合词条目的数据片段的示例。该XML复合词数据文件包含对应于一个或多个复合词的数据条目,每一个数据条目都用来产生复合字典118中的一个条目。每个复合词的数据都存储在标签<compound>和</compound>之间。
每个复合词包括至少两个字,对复合词中的每个字都定义一个<tuple>标签。<tuple>标签可以包括复合词中每个字的标识符(如多个Unicode字符码)和读音表示(如拼音)。字的顺序是重要的。举例来说,参考列表3和图17,由Unicode字符码“660e”标识的字对应于图17中的字1072,而由Unicode字符码“5929”标识的字对应于图17中的字1074。字1072和字1074按照这个顺序(即字1072放在字1074之前)组成了一个含义为“tomorrow”的汉语词汇。如果这两个字按照不同的方式排列,那么它们就不具有相同的含义。字的顺序按照它们的出现顺序存储在XML复合词数据文件中,于是在这个例子中,字1072(标识为“660e”)的字符数据在字1074(标识为“5929”)的字符数据之前出现。该复合词的英文含义(即,复合词的翻译字符串形式的定义数据)定义在标签<english>与</english>之间。然而,应当理解,翻译字符串可以是采用任何书面语言表达的该复合词的含义。还可以为对应于特定复合词的其它数据定义另外的标签,例如,与该复合词的音频表示相对应地定义音频文件的路径和文件名、或者指向此文件的指针的标签。
下面的示例描述如何从XML复合词数据文件中的条目提取对应于复合词的数据以及使用该数据产生复合字典118中的条目。列表3所示的复合词条目包括两个字(对应于图17中的字1072和1074),这两个字分别由Unicode字符码“660e”和“5929”标识。当例如采用任何传统解析技术解析XML复合词数据文件时,提取该条目中的每个字的Unicode字符码并按照它们出现的顺序将其串接在一起,以形成复合字典118中的键。在列表3所示的示例中,串接列表3所示的复合词条目中的每个字的Unicode字符码,以形成字符串“660e5929”,其用作复合字典118中的对应条目的键。该键唯一标识对应于复合字典118中的复合词的哈希映射中的特定条目。例如,对应于复合字典118的哈希映射可以将每个键与包含一个或多个对象的列表相关联,其中,每个对象都与定义数据(如对应于该复合词的含义的翻译字符串)、代表该复合词的读音表示的读音数据(如拼音),和/或代表该复合词的音频数据(如音频信号或音频文件)相关联。可以通过将复合词中每个字的拼音音节串接在一起来形成存储在哈希映射中、与该复合词对应的拼音表示,而每个串接的拼音音节之间可以有一个空格。例如,如图17所示,由字1702和1704组成的复合词由串接的Unicode字符码键“660e5929”标识,并且其相应的读音表示为“ming2 tian1”。
优选地,仅使用与繁体汉字对应的Unicode字符码(如在CJK统一表意文字标准(范围:4E00-9FAF)中所定义的,可从<http://www.unicode.org/charts/PDF/U4E00.pdf>获得)来标识字符字典116和复合字典118中的字,这些Unicode字符码分别位于相应的XML字符数据文件和XML复合词数据文件中。
变体字典120对于每个繁体和简体汉字包括一个条目(如在CJK统一表意文字标准(范围:4E00-9FAF)中所定义的),并且将这些汉字中的每个与包含一个或多个对象的列表相关联,每个对象包含一个或多个值。这些值可以对应于包含一个或多个相应繁体变体字、相应简体变体字的列表,或包含一个或多个相应语义变体字的列表。
参考列表4说明一个示例,其示出与包含在XML变体数据文件中的不同字符条目相对应的三个数据片断。XML变体数据文件中的每个条目都对应于一个字,该字由其Unicode字符码标识并存储在标签<unicode>与</unicode>之间。例如,参考图18,采用Unicode字符码“9452”标识的繁体汉字(被示出为图18中的字1806)也可以写成对应于Unicode字符码“9274”的简体汉字(被示出为图18中的字1808)。这样,在列表4所示的示例中,由“9274”标识的字(即图18中的字1808)就被定义为由“9452”标识的字的简体变体(即图18中的字1806)。此外,简体变体“9274”存储在由Unicode字符码“9452”标识的字符条目下面的标签<kSimplifiedVariant>与</kSimplifiedVariant>之间。作为另外的示例,尽管用Unicode字符码“9452”标识的繁体汉字(即图18中的字1806)与另一个对应于Unicode字符码“9451”的繁体汉字(即图18中的字1810)的写法不同,它们的含义却相似。所以,标识为“9451”的字(即图18中的字1810)是标识为“9452”的字的语义变体(即图18中的字1806)。如列表4所示,语义变体“9451”(即图18中的字1810)存储在标识为Unicode字符码“9452”的字符(即图18中的字1806)条目下面的标签<kSemanticVariant>与</kSemanticVariant>之间。
类似地,简体汉字也可以写成特定的繁体汉字。例如,采用Unicode字符码“9274”标识的字(即图18中的字1808)可以对应于与Unicode字符码“9451”对应的繁体汉字(即图18中的字1810)或与Unicode字符码“9452”对应的繁体汉字(即图18中的字1806)。优选地,当特定条目与多于一个繁体变体字相关联时,这些繁体变体字中的每个将根据普及程度排序。
当例如采用任何传统解析技术解析XML变体数据文件时,提取标识XML变体文件中的每个条目的Unicode字符码,以形成变体字典120中的相应条目的键。该键唯一标识对应于变体字典120中的字的哈希映射中的特定条目。举例来说,对应于变体字典120的哈希映射可以将每个键与包含一个或多个对象的列表相关联,其中,每个对象都有包含一个或多个繁体变体字、简体变体字的列表,和/或包含一个或多个语义变体字的列表。
图2中的流程图示出用于处理从字符输入模块102接收的输入字符串以便显示的处理200。处理200处理输入字符串来识别词(包括复合词和短语),并根据那些词是无歧义的还是有歧义的(例如,由于完全包含另一个词或者与其交叠),产生用来显示那些词的显示数据。除了方框202中所示的步骤在显示模块106中执行以外,处理200在断词模块108中执行。处理200从步骤204开始,设置全局变量max_char来定义输入字符串中用于搜索的连续字符的最大数目,以便确定这些连续字符是否对应于一个复合词,完全包含该复合词或者与之交叠。变量max-char的值可以在7到15之间,但是优选地,max-char的值设为10。在步骤206,从字符输入模块102获取输入字符串。然后,在步骤208,要求用户确定起始字符位置(或光标位置)作为输入字符串中的复合词搜索起始字符。在步骤210,选择光标位置处的字符作为选定字符。在步骤212,分析选定字符,判定其是否为分隔符。如果该选定字符是分隔符,则该处理在步骤214继续,其中判定该选定字符是否为EOF符。如果步骤214判定该选定字符为EOF符,则该处理结束。否则,步骤214前进到步骤216,显示该选定字符。例如,步骤216可以产生用来在标准的白色背景下显示该字符的显示数据。
在步骤218,推进光标位置至输入字符串中的下一个字符。然后,在步骤210,选择新光标位置处的字符作为新的选定字符,并且如前所述,处理200继续处理新光标位置处的字符。然而,如果在步骤212判定该选定字符不是分隔符,则该处理前进到步骤220,调用处理300来确定可以利用从选定字符开始并包括选定字符的输入字符串中的连续字符形成的最长词。如果在步骤220确定的该最长词的字长度大于或等于2(即该最长词包含2个或更多个字),则该处理前进到步骤224,利用处理600来处理该最长词的歧义性。否则,步骤222前进到步骤216,产生用于显示该最长词的显示数据。在步骤224处理了该最长词的歧义性之后,步骤226判定输入字符串中的所有字都经过处理。如果是,该处理结束。否则,在步骤228,推进光标至输入字符串中紧跟在该最长词后面的字符,并且将在步骤210选择该新光标位置处的字符为新的选定字符。
图3中的流程图示出用于确定可以利用从选定字符开始并包括选定字符的输入字符串中的连续字形成的最长词的处理300。处理300在断词模块108中执行。处理300从步骤302开始,将用于存储新字符的变量new_char初始定义为在处理200的步骤210中的光标位置处选定的字符。在步骤304,表示对应于最长词的字符组中第一个可能字符的变量start_char也被定义为在处理200的步骤210中的光标位置处选定的字符。在步骤306,将用于查询键的变量CT_Key和FCT_Key复位为null或空字符串。步骤306前进到步骤308,判定定义为new_char的字符是否为EOF符或终止符。如果是,步骤308前进到步骤310,执行在处理200中的步骤222继续。否则,步骤308前进到步骤312,判定定义为new_char的字符是否为换行符。如果是,则在步骤314,将输入字符串中紧跟在该换行符后面的字符定义为新字符new_char,并且步骤314前进到步骤308。否则,步骤312前进到步骤316,其中将变量temp_string定义为输入字符串中从定义为start_char的字符开始直到且包括当前定义为new_char的字符的所有字符。
在步骤318,使用处理400将定义为new_char的字符转换为繁体汉字,并将结果保存在变量new_charT中。然后,在步骤320,将定义为new_charT的繁体汉字添加至现有的定义为CT_Key的查询键中,并将更新后的结果保存为变量CT_Key。在步骤322,使用处理500将定义为new_char的字符强行转换为繁体汉字,并将结果保存在变量new_charFT中。然后,在步骤324,将定义为new_charFT的繁体汉字添加至现有的定义为FCT_Key的查询键中,并将更新结果保存为变量FCT_Key。
在步骤326和328,分别尝试使用CT_Key和FCT_Key各自的Unicode表示在复合字典118中查询匹配的条目。两个键中每一个的Unicode表示可分别通过那些键中每个字符的Unicode字符码按照这些字符在每个键中出现的顺序串接而成。
然后,步骤330判定是否在复合字典118中找到CT_Key或FCT_Key的Unicode表示。如果是,在步骤332将定义为temp_string的字符串定义为最长词。否则,在步骤334判定temp_string的字符长度(即包含在定义为temp_string的字符串中的字符数)是否超过变量max_char所定义的最大搜索字符数。如果在步骤334判定temp_string中的字符数小于或等于定义为max_char的最大搜索字符数,则在步骤336将输入字符串中紧跟在temp_string最后字符后面的下一个字符定义为新字符new_char。否则,该处理前进到步骤310,在调用执行处理300的处理中调用执行处理300之后的点(例如,在处理200中的步骤222,或者在处理800中的步骤802)恢复执行。
图4的流程图示出用于利用字符字典116和变体字典120将任何汉字转换为繁体汉字的处理400。处理400在断词模块108中执行。处理400从步骤402开始,其中将要被转换为繁体汉字的字符定义为变量input_char。在步骤404,判定字符字典116中是否存在定义为input_char的字符所对应的Unicode字符码。在字符字典116只包含由繁体汉字的Unicode字符码标识的条目的情况下,如果字符字典中找到input_char的Unicode表示,那么这个字就一定是繁体汉字。所以,如果在步骤404在字符字典116中找到相应的条目,则在步骤406,将定义为input_char的字返回至调用执行处理400的处理,并且在调用执行处理400之后的点(例如,在处理300中的步骤320,或在处理700中的步骤716)恢复执行。否则,步骤404前进到步骤408,判定是否可以在变体字典120中找到定义为input_char的字符所对应的Unicode字符码,并且如果是,判定input_char的条目是否也有相应的繁体变体字。如果是,步骤408前进到步骤410,将变体字典120中与定义为input_char的字对应的繁体变体字返回至调用执行处理400的处理,并且在调用执行处理400之后的点恢复执行(例如,在处理300中的步骤320,或在处理700中的步骤716)。否则,步骤408前进到步骤406。
图5的流程图示出用于利用变体字典120将汉字强行转换为其繁体变体的处理500。处理500在断词模块108中执行。处理500从步骤502开始,其中将要被转换为繁体汉字的字定义为变量in_char。在步骤504,判定是否可以在变体字典120中找到定义为in_char的字符所对应的Unicode字符码,并且如果是,则判定in_char的条目是否具有对应的繁体变体字。如果是,步骤504前进到步骤506,将变体字典120中与定义为in_char的字对应的繁体变体字返回至调用执行处理500的处理,并且在调用执行处理500之后的点继续执行(例如,在处理300中的步骤324或处理700中的步骤720)。否则,步骤504前进到步骤408,将定义为in_char的字返回至调用执行处理500的处理,并且在调用执行处理500之后的点继续执行(例如,在处理300中的步骤324,或处理700中的步骤720)。
有些汉字可能是繁体汉字,但是同一个汉字也可能是另一个繁体汉字的简体字。例如,参考图18,字1802(对应于Unicode字符码“51e0”)本身是意为“a small table”的繁体汉字。然而,对于如图18所示的繁体汉字1804(对应于Unicode字符码“5e7e”),其简化字也是同一个字,其含义为“how many;several;a few;some”。处理400的作用是,如果要被转换的原始字(即定义为input_char的字)本身是繁体汉字,则处理400将返回该原始字。然而,处理500的作用是,如果要被转换的原始字(即定义为in_char的字)是有繁体变体的字,则无论定义为in_char的字是否为繁体字,处理500都将总是返回相应的繁体变体字。
图6的流程图示出用于使用最长词中的每个字作为起始字产生词列表然后根据该词列表判定该最长词是否有歧义的处理600。该词列表包含复合词,同样也包括短语。方框602中所示的步骤在分析模块110中执行,而方框604中所示的步骤在显示模块106中执行。处理600中的其余步骤在断词模块108中执行。处理600从步骤606开始,其中将最长词中的第一个字定义为变量LW_first。在步骤608,将最长词中最后字的字符位置定义为变量LW_last。LW_last表示该最长词中最后字相对于第一个字的字符偏移量。
在步骤610,选择根字用作起始字,以便产生以该字开始的词的列表。在步骤610,将代表根字的变量LW_root初始定义为最长词中的第一个字。然后,在步骤612中判定定义为LW_root的字是否为分隔符。如果是,步骤612前进到步骤614,在处理200的步骤226恢复执行。否则,步骤612前进到步骤616,利用处理700产生复合词列表,其中列表中的每个复合词都从定义为LW_root的字开始,并且该列表中的每个复合词都由输入字符串中跟随且包括定义为LW_root的字符的连续字符组成。所形成的每个复合词都存储在由句柄list标识的列表中。在产生了词列表之后,步骤618判定是否最长词中的所有字都经过处理(即,是否最长词中的每个字都被定义为LW_root以生成以该字开始的词的列表)。如果否,步骤618前进到步骤610,选择输入字符串中紧跟在当前定义为LW_root的字后面的下一个字为新根字,然后更新变量LW_root以引用该新根字。否则,步骤618前进到步骤620。
由于该词列表(标识为list)中定义的词总是包含最长词,因此在步骤620,从该词列表中将该最长词移除。在步骤622,判定词列表是否为空。如果是,这指示不能由从该最长词的每个字开始的连续字符的组合形成另外的词(除该最长词之外)。也就是说,空列表表示该最长词是无歧义的,因为它没有完全包含另一个词,或者与另一个词交叠。所以,如果词列表为空,步骤622前进到步骤624,将该最长词显示为无歧义。例如,在步骤624,产生单个无歧义复合词中的所有字,以便根据这样的显示准则来显示,即按照交替顺序的两种背景色中的一种高亮显示该复合词(即在有色背景上显示该复合词),使得采用一种背景色高亮显示一个复合词,而采用另一种背景色高亮显示随后的复合词。步骤624可采用第一种背景色(如灰色)高亮显示第一个无歧义复合词,而采用第二种背景色(如蓝色)高亮显示下一个无歧义复合词。然后,将采用第一种背景色(如灰色)高亮显示再下一个复合词,以此类推,使得以交替的顺序应用这些背景色。步骤624继续到步骤614,在处理200中的步骤226恢复执行。
如果在步骤622判定词列表不为空,则步骤622前进到步骤626,处理词列表中的每个词以识别定义为list的列表中的一个复合词,该复合词的最后字与定义为LW_first的字之间的字符偏移量最大。在步骤628,判定在步骤626确定的复合词的最后字的字符偏移量是否大于定义为LW_last的字(即最长词中的最后字)的字符偏移量。如果步骤628判定LW_last的字符偏移量未被超过,则最长词因此完全包含其它复合词,并且步骤628前进到步骤630,以产生用于将当前最长词显示为由于包含内部复合词而有歧义的显示数据。举例来说,步骤630可能产生用于按照显示准则显示最长词中的所有字(例如,在特定背景色如浅绿色上显示这些字)的显示数据。步骤630继续到步骤614,在处理200中的步骤226恢复执行。
否则,由于该最长词与另一个词相交叠,其中该另一个词超出当前最长词的最后字,因此步骤628前进到步骤632。在步骤632,将该最长词重新定义成包括输入字符串中从LW_first(即最长词的第一个字)开始直到且包括具有最大最后字符偏移量的词(在步骤626确定)的最后字的所有字。步骤634产生这样的显示数据,其用于将更新后的最长词显示为由于包含交叠复合词而有歧义。举例来说,在步骤634,产生更新后的最长词中的所有字以便根据显示准则来显示(例如,在特定的背景色如浅橙色上显示这些字)。步骤634继续到步骤608,用更新后的最长词的新最后字的字符位置更新变量LW_last。然后,在步骤610,选择紧跟在最长词(在其被更新以前)后面的字作为下一个根字,并将其定义为LW_root。
图7的流程图示出处理700,其用于从最长词中的特定根字开始并且使用输入字符串中跟随该根字的连续字产生词列表。处理700在断词模块108中执行。该处理从步骤702开始,其中来自处理600的根字初始地被用作产生一个或多个复合词的第一个字,因此将其定义为变量next_char。在步骤703,将查询键的变量CT_WKey和FCT_WKey复位为null或空字符串。在步骤704,判定定义为next_char的字是否为EOF符或终止符。如果是,步骤704前进到步骤706,在调用执行处理700的处理中调用执行处理700之后的点(例如,在处理600中的步骤618或处理900中的步骤618)恢复执行。否则,步骤704前进到步骤708,其中判定定义为next_char的字是否为换行符。如果是,在步骤710,将输入字符串中紧跟在该换行符后面的字定义为下一个字next_char,并且步骤710前进到步骤704。否则,步骤708前进到步骤712,其中将变量tmp_string定义为包括输入字符串中从定义为LW_first的字开始直到且包括当前定义为next_char的字的所有字。
在步骤714,利用处理400将定义为next_char的字转换为繁体汉字,并将结果保存在变量next_charT中。然后,在步骤716,将定义为next_charT的繁体汉字字添加至定义为CT_WKey的现有查询键中,并将更新后的结果保存为变量CT_WKey。在步骤718,利用处理500将定义为next_char的字强行转换为繁体汉字,并将结果保存在变量new_charFT中。然后,在步骤720,将定义为new_charFT的繁体汉字添加至定义为FCT_WKey的现有查询键中,并将更新结果保存为变量FCT_WKey。
在步骤722和724,分别尝试使用CT_WKey和FCT_WKey各自的Unicode表示在复合字典118中查询匹配的条目。这两个键中每个键的Unicode表示可以分别由这些键中每个字符的Unicode字符码按照这些字符在每个键中出现的顺序串接而成。
然后,在步骤726判定是否可以在复合字典118中找到CT_WKey或者FCT_WKey的Unicode表示。如果是,在步骤728,将定义为tmp_string的字符串添加至定义为list的词列表中。否则,在步骤730判定tmp_string的字符长度(即定义为tmp_string的字符串所包含的字符数)是否超过由变量max_char定义的最大搜索字符数。如果在步骤730判定tmp_string中的字符数小于或等于由max_char定义的最大搜索字符数,则在步骤732将输入字符串中紧跟在tmp_string的最后字后面的下一个字定义为下一字next_char。否则,由步骤730进入步骤706。
图8的流程图示出处理800,其用于处理从字符输入模块102接收的输入字符串,以便显示字典(如116、118和/或120)中与在输入字符串中识别的词或短语相关联的描述性数据。处理800处理输入字符串,以识别以输入字符串中的特定字开始的复合词(包括短语),然后检索最长词以及包含在该最长词中的每个词的描述性数据。处理800是处理200的一种变形,图2和图8中相同的标号表示相同的步骤。但是,处理800没有仅仅在处理200中存在的对应步骤216或步骤222。处理800在断词模块108中执行。处理800从步骤204开始,并且以与上面关于处理200所述相同的方式执行。然而,处理800中的步骤220前进到新步骤802,其中调用处理900来检索并显示在字符字典116、复合字典118和/或变体字典120中定义的与最长词相关联的数据值。另外,在步骤802之后,该处理则前进到步骤226。
图9的流程图示出用于产生词列表的处理900,其中这些词包含在最长词内。处理900的步骤在断词模块108中执行。处理900从步骤902开始,其中将最长词中的第一个字定义为变量Lookup_LW_first。在步骤904,选择根字,其用作生成以该根字开始的复合词的列表的起始点。在步骤904,将代表根字的变量Lookup_LW_root初始定义为最长词的第一个字。然后,在步骤906判定定义为Lookup_LW_root的字是否为分隔符。如果是,步骤906前进到步骤914,其中在处理800的步骤226恢复执行。否则,步骤906前进到步骤908,其中利用处理700产生包含一个或多个复合词的列表,该列表中的每个复合词都以定义为Lookup_LW_root的字开始,并且每个复合词都由输入字符串中跟随且包括定义为Lookup_LW_root的字的连续字组成。所形成的每个复合词都存储在由句柄lookup_list标识的列表中。生成了词列表后,步骤910判定是否最长词中的所有字都经过处理(即,是否最长词中的每个字都被定义为Lookup_LW_root以生成包含以该字开始的词的列表)。如果否,步骤910前进到步骤904,其中选择输入字符串中紧跟在当前定义为Lookup_LW_root的字后面的下一个字为新的根字,并且更新变量Lookup_LW_root来引用该新的根字。否则,步骤910前进到步骤912,其中利用处理1000来处理复合词的lookup_list,这是通过查询并检索(从字符字典116、复合字典118和/或变体字典120)与lookup_list中的每个条目对应的数据,以及产生用于显示检索到的数据的显示数据。然后,步骤912前进到步骤914。
图10的流程图示出处理1000,其用于从字符字典116、复合字典118和/或变体字典120中查询并检索与列表中的每个条目对应的数据,其中该列表包含一个或多个单独字和/或一个或多个复合词或短语。除了步骤1020在显示模块106中执行以外,处理1000的步骤在查询模块112中执行。处理1000从步骤1002开始,其中将变量input_list定义为用于访问待处理的表(包括一个或多个条目,每个条目对应于单独的字或复合词)的临时句柄。举例来说,input_list可以是指向现有列表(如由处理700、1100、1200或1300产生的表)的指针。在步骤1004,从input_list中选择单个对应于字或复合词的条目,然后将其存储在变量lookup_Key中。步骤1006利用lookup_Key的内容在字符字典116中查询与lookup_Key对应的条目。在步骤1006,利用lookup_Key中单个字的Unicode字符码表示、或者lookup_Key中每个字的Unicode字符码(按照它们在lookup_Key中出现的顺序串接)查询字符字典116。如果在字符字典116中没有找到任何条目,则步骤1006前进到步骤1010。否则,步骤1006前进到步骤1008,其中检索字符字典116中与由lookup_Key标识的字符条目相关联的数据值(即,通过查询包含在与字符字典116相对应的一个或多个对象中的值)。可以从字符字典116中检索的数据值包括与所标识的字符条目相对应的字的Unicode字符码、代表与所标识的字符条目相对应的的一个或多个读音表示的读音数据(如拼音)、代表与所标识的字符条目相对应的字的音频表示的音频数据和/或代表与所标识的字符条目相对应的一个或多个翻译字符串的定义数据。还可以检索在字符字典116中定义的其它数据值。步骤1008前进到步骤1010。
在步骤1010,利用存放在lookup_Key中的单个字或复合词在变体字典120中查询由lookup_Key标识的对应条目。步骤1010利用lookup_Key中单个字的Unicode字符码表示、或者lookup_Key中每个字的Unicode字符码(按照它们在lookup_Key中出现的顺序串接)查询变体字典120。如果在变体字典120中没有找到任何条目,则步骤1010前进到步骤1014。否则,步骤1010前进到步骤1012,其中检索变体字典120中与由lookup_Key标识的条目相关联的数据值(即,通过查询包含在与变体字典120中的条目相对应的一个或多个对象中的值)。可以从变体字典120中检索的数据值包括与特定字符条目相对应的简体变体字、一个或多个繁体变体字、和/或一个或多个语义变体字。还可以检索在变体字典120中定义的其他数据值。步骤1012前进到步骤1014。
在步骤1014,利用存储在lookup_Key中的单个字或复合词在复合字典118中查询由lookup_Key标识的对应条目。步骤1014利用lookup_Key中单个字的Unicode字符码表示、或者lookup_Key中每个字的Unicode字符码(按照它们在lookup_Key中出现的顺序串接)查询复合字典118。如果在复合字典118中没有找到任何条目,则步骤1014前进到步骤1018。否则,步骤1014前进到步骤1016,其中检索复合字典118中与由lookup_Key标识的条目相关联的数据值(即,通过查询包含在与复合字典118中的复合词条目相对应的一个或多个对象中的值)。可以从复合字典118中检索的数据值包括识别所标识的复合词条目的Unicode字符码的唯一组合、代表与所标识的复合词条目相对应的读音表示的读音数据(如拼音)、代表与所标识的复合词条目相对应的复合词的音频表示的音频数据和/或代表与所标识的复合词条目相对应的翻译字符串的定义数据。还可以检索在复合字典118中定义的其它数据。步骤1016前进到步骤1018。
步骤1018为显示模块106产生显示数据,以显示与lookup_Key对应的所有检索到的数据值(如Unicode字符码、读音数据、音频数据、定义数据、简体变体字、繁体变体字和/或语义变体字)。步骤1020判定是否input_list中的每个词都已经过处理(即用作lookup_Key)。如果否,则步骤1020前进到步骤1004,其中选择input_list中的下一个条目,并将其定义为lookup_Key的新值,并且根据如上所述的处理1000中的步骤处理该lookup_Key的新值。否则,步骤1020前进到步骤1022,其中在调用执行处理1000调用的处理中恢复执行。
图11的流程图示出处理1100,其用于利用从包含一个或多个拼音音节的输入字符串得到的拼音音节产生条目列表,其中每个条目对应于单个字或复合词。除了步骤1108和1110在查询模块112中执行并且步骤1114部分地在查询模块112和显示模块106中执行以外,处理1100中的其它步骤都在断词模块108中执行。处理1100从步骤1102开始,其中从用户获取拼音音节的输入字符串。例如,用户可以将一个或多个拼音音节输入到字符输入模块102的输入域中。如前所述,拼音音节至少有文本部分(表示该音节的声音或发音),并且优选地,还有与该文本部分对应的音调部分。例如,所输入的拼音音节可以为“kou3”,其中“kou”对应于文本部分,而“3”为对应于音调部分的数字标识符。优选地,拼音音节以“text#”的格式输入,其中单词“text”表示该音节的文本部分,符号“#”代表一个用于标识音调部分的整数。更优选地,如果只输入拼音音节的文本部分而没有相应的音调,则在下述查询处理中将假定针对能够与用户输入的文本部分形成的每一种音调组合进行独立的搜索。所采用的拼音可以是标准的普通话拼音。但是,应当理解,本发明也可以与字的其它拼音或其他读音表示形式一起工作。
在步骤1104,解析拼音音节的输入字符串,从而识别输入字符串中的每一个拼音音节,以及对应于每一个音节的文本部分和音调部分。举例来说,典型地,输入拼音音节时每个音节之间都会有一个空格,所以步骤1104的解析可能涉及到基于字符串中空格符的位置断开拼音音节的输入字符串。步骤1106判定输入字符串是否只包含一个拼音音节(即输入字符串中的拼音对应于单个字还是复合词或短语)。如果输入字符串只包含一个拼音音节,则步骤1106前进到步骤1108,其中在字符字典116中搜索每个条目的拼音数据字段的值,并且仅检索具有与所输入的拼音音节对应的拼音数据字段的字(如Unicode字符码)。在步骤1112,将所检索的字添加到通过句柄pinyin_list引用的列表中。
否则,如果步骤1106判定输入字符串包含多于一个拼音音节,那么该输入字符串一定对应于复合词或短语,步骤1106前进到步骤1110。在步骤1110,搜索复合字典118中的每个条目,以仅检索那些具有拼音表示(由对应于按照输入顺序的每个输入拼音音节的串接组合形成)的复合词(包括短语)。如果复合字典118中复合词(或短语)的拼音表示完全包含按照输入顺序的每个输入拼音音节,那么在步骤1110也检索该复合词。在步骤1112,将所检索的复合词添加到通过句柄pinyin_list引用的列表中。
然后,步骤1112前进到步骤1114,其中使用处理1000以利用字符字典116和/或复合字典118中定义的数据值,查询、检索并显示与pinyin_list中的每个条目相关联的数据值。步骤1114之后,处理1100结束。
图12的流程图示出处理1200,其用于利用从输入字符串得到的关键词生成条目列表,其中每个条目对应于单个字或复合词。除了步骤1206在查询模块112中执行并且步骤1210部分地在查询模块112和显示模块106中执行以外,处理1200中的其它步骤都在断词模块108中执行。处理1200从步骤1202开始,其中从用户获得关键词的输入字符串。例如,用户可将一个或多个关键词输入到字符输入模块102的输入域中。通常,关键词指的是用户认为与其试图检索的字或复合词的含义相关的任何词。在步骤1204,解析输入字符串,从而在输入字符串中识别一个或多个关键词中的每一个。在步骤1206,搜索定义数据(例如,与字符字典116和/或复合字典118中的每个条目相关联的翻译字符串),并且只有当对应翻译字符串至少包含输入关键词中的至少一些时,才(从字典116或118中)检索字或复合词。在步骤1208,将所检索的字和/或关键词添加至由句柄keyword_list引用的列表中。然后,在步骤1210,使用处理1000以利用字符字典116和/或复合字典118中定义的数据值,查询、检索并显示与keyword_list中的每个条目相关联的数据值。在步骤1210之后,处理1200结束。
图13的流程图示出处理1300,其用于利用从输入字符串中得到的字,生成条目列表,其中每个条目对应于单个字或复合词。在处理1300中,除了步骤1308、1310、1314和1316在查询模块112中执行,并且步骤1318部分地在查询模块112和显示模块106中执行以外,其它步骤都在断词模块108中执行。处理1300从步骤1302开始,其中从用户获得汉字的输入字符串。例如,用户可将一个或多个汉字输入到字符输入模块102的输入域中。在这一阶段,用户输入的字可以既可以是繁体汉字也可以是简体汉字。在步骤1304,解析输入字符串,从而在输入字符串中识别一个或多个字中的每一个(例如通过确定作为输入字符串而输入的每个字的Unicode字符码)。步骤1306判定输入字符串是否只包含一个字。如果输入字符串只包含一个字,则步骤1306前进到步骤1308,其中利用处理400和处理500中的任意一个或两个,将该字转换为繁体汉字。在步骤1310,利用从处理400或处理500返回的字所对应的Unicode字符码查询字符字典116中的每一个条目。如果字符字典116中的一个条目与该输入字的Unicode字符码匹配,则在步骤1310,将该输入字添加至由句柄character_list标识的列表中。
否则,如果步骤1306确定该输入字符串包含多于一个字,则将输入字符串中的字作为复合词看待,并且步骤1306前进到步骤1314。在步骤1314,利用处理400和处理500中的任何一个或两个,将输入字符串中的每一个字转换为繁体汉字。在步骤1316,利用输入字符串中每一个输入字的Unicode字符码,其中这些Unicode字符码按照输入字符串中的其输入顺序而串接起来,形成一个键。该键用来在复合字典118中查询匹配的条目。如果未找到匹配的条目,则在步骤1316,将输入字符串中的复合词添加到由句柄character_list标识的列表中。
在步骤1310或步骤1316之后,该处理前进到步骤1318,其中使用处理1000以利用字符字典116和/或复合字典118中定义的数据值,查询、检索并显示与pinyin_list中的每个条目相关联的数据值。在步骤1318之后,处理1300结束。
将字转换为繁体汉字的步骤只是本发明的一些适用于汉字处理的优选实施例中的可选特性。应当理解,如果字典条目包括由繁体汉字及其相应的简体汉字的Unicode字符码标识的条目,则不需要那些步骤。
列表1
<?xml version="1.0"encoding="UTF-8"?>
<allGlyphs>
…
<glyph>
<unicode>53e3</unicode>
<pinyin>kou3</pinyin>
<kDefinition>mouth;opening;entrance;cut;hole;
the edge of a knife;</kDefinition>
</glyph>
…
</allGlyphs>
列表2
</xml version="1.0"encoding="UTF-8"?>
<allGlyphs>
…
<glyph>
<unicode>4f9b</unicode>
<pinyin>gong1</pinyin>
<kDefinition>supply;provide;</kDefinition>
<pinyin>gong4</pinyin>
<kDefinition>lay (offerings); confess; own
up;</kDefinition>
</glyph>
…
</allGlyphs>
列表3
<?xml version="1.0"encoding="UTF-8"?>
<allCompounds>
…
<compound>
<tuple pinyin="ming2"unicode="660e"/>
<tuple pinyin="tian1"unicode="5929"/>
<english>tomorrow</english>
</compound>
…
</allCompounds>
列表4
<?xml version="1.0"encoding="UTF-8"?>
<allGlyphs>
…
<glyph>
<unicode>9452</unicode>
<kSimplifiedVariant>9274</kSinplifiedVariant>
<kSemantlcVariant>9451</kSermanticVariant>
</glyph>
…
<glyph>
<unicode>9274</unicode>
<tradVariant>9452 9451</tradVariant>
</glyph>
…
<glyph>
<unicode>9451</unicode>
<kSimplifiedVariant>9274</kSimplifiedVariant>
<kSemanticVariant>9452</kSernanticVariant>
</glyph>
…</allGlyphs>
Claims (27)
1.一种用于为用户界面产生显示数据的方法,所述方法包括:
(i)接收包括表意字符的输入字符串;
(ii)从所述输入字符串中选择表意字符;
(iii)产生从所述选择的字符开始的第一词或短语,所述第一词或短语对应于所述输入字符串中与字典中的词或短语相对应的最大连续表意字符;
(iv)针对所述第一词或短语中的每个字符,基于所述输入字符串中从所述第一词或短语中的字符开始的多个连续表意字符而产生附加词或短语,每个所述附加词或短语对应于所述字典中的词或短语;以及
(v)在所述用户界面上产生用于显示所述输入字符串中的连续字符组的所述显示数据,所述组包括所述第一词或短语以及所述附加词或短语中的所有字符,所述组基于所述附加词或短语相对于所述第一词或短语的位置被显示。
2.如权利要求1所述的方法,其中,所述表意字符为汉字。
3.如权利要求1所述的方法,其中,所述显示数据表示根据所述附加词或短语相对于所述第一词或短语的位置按照不同的显示准则在所述用户界面上显示的所述字符组。
4.如权利要求3所述的方法,其中,如果所述第一词或短语不包括所述附加词或短语中的任何字符,则所述显示数据表示按照第一显示准则在所述用户界面上显示的所述字符组。
5.如权利要求4所述的方法,其中,如果所述第一词或短语包括所述附加词或短语中的所有字符,则所述显示数据表示按照第二显示准则在所述用户界面上显示的所述字符组。
6.如权利要求5所述的方法,其中,如果所述第一词或短语包括所述附加词或短语中至少一些但并全部的字符,则所述显示数据表示按照第三显示准则在所述用户界面上显示的所述字符组。
7.如权利要求3到6中的任一项所述的方法,其中,所述显示准则定义所述字符组的一个或多个视觉特性,包括:
所述字符组的字体尺寸和/或字体类型;
所述字符组的风格,包括将所述字符组定义成以粗体、斜体和/或带下划线显示;和/或
所述字符组的显示背景,包括有色背景。
8.如权利要求2所述的方法,其中,将所述第一词或短语中的所述字符转换为繁体汉字,以便确定所述第一词或短语是否对应于所述字典中的词或短语。
9.如权利要求2所述的方法,其中,将所述附加词或短语中的所述字转换为繁体汉字,以便针对每个附加词或短语,确定所述附加词或短语中的一个是否对应于所述字典中的词或短语。
10.如权利要求1所述的方法,包括根据所述显示数据在所述用户界面上显示所述连续字符组。
11.如权利要求1所述的方法,所述方法还包括:
(vi)从所述字典中检索与所述第一词或短语相关联的字典数据,所述字典数据包括定义数据、音频数据和/或读音数据;
(vii)产生用于在所述用户界面上显示的附加显示数据,所述附加显示数据包括基于所述字典数据的所述第一词或短语的至少一种表示。
12.如权利要求11所述的方法,包括基于所述附加显示数据在所述用户界面上显示所述第一词或短语的所述至少一种表示。
13.如权利要求11所述的方法,其中,所述附加显示数据表示:
用于描述所述第一词或短语的文本,基于从所述字典数据中获得的所述定义数据;
用于表示所述第一词或短语的音频信号,基于从所述字典数据中获得的所述音频数据;和/或
所述第一词或短语的读音表示,所述读音表示包括拼音,基于从所述字典数据中获得的所述读音数据。
14.如权利要求11所述的方法,所述方法还包括:
(vi)(a)检索与所述附加词或短语中的一个相关联的附加字典数据,所述附加字典数据包括定义数据、音频和/或读音数据;
(vii)(a)产生用于在所述用户界面上显示的所述附加显示数据,所述附加显示数据进一步包括基于所述附加字典数据的所述附加词或短语的至少一种表示。
15.如权利要求14所述的方法,包括基于所述附加显示数据在所述用户界面上显示所述附加词或短语的所述至少一种表示。
16.如权利要求14所述的方法,其中,所述附加显示数据表示:
用于描述所述附加词或短语的文本,基于从所述附加字典数据中获得的所述定义数据;
用于表示所述附加词或短语的音频信号,基于从所述附加字典数据中获得的所述音频数据;和/或
所述附加词或短语的读音表示,所述读音表示包括拼音,基于从所述附加字典数据中获得的所述读音数据。
17.一种用于执行如权利要求1到16所述的方法的***。
18.一种计算机可读存储介质,包含用于执行如权利要求1到16所述的方法的计算机可执行代码。
19.一种用于为用户界面产生显示数据的***,包括:
(i)用于接收包括表意字符的输入字符串的装置;
(ii)用于从所述输入字符串中选择表意字符的装置;
(iii)用于存储字典的存储器;
(iv)词产生器,用于:
产生从所述选择的字符开始的第一词或短语,所述第一词或短语对应于所述输入字符串中与所述字典中的词或短语相对应的最大连续表意字符;并且
针对所述第一词或短语中的每个字符,产生从所述第一词或短语中的字符开始的附加词或短语,每个所述附加词或短语基于所述输入字符串中的多个连续表意字符而产生,并且每个所述附加词或短语对应于所述字典中的词或短语;以及
(v)用于在所述用户界面上产生用于显示所述输入字符串中的连续字符组的所述显示数据的装置,所述组包括所述第一词或短语以及所述附加词或短语中的所有字符,其中所述字符组的显示基于所述附加词或短语相对于所述第一词或短语的位置。
20.如权利要求19所述的***,其中,所述用于产生所述显示数据的装置产生这样的显示数据,其用于根据所述附加词或短语相对于所述第一词或短语的位置,按照不同的显示准则在所述用户界面上显示所述字符组。
21.如权利要求19所述的***,包括用于根据所述显示数据显示所述连续字符组的所述用户界面。
22.如权利要求19所述的***,还包括:
(vi)用于从所述字典中检索与所述第一词或短语相关联的字典数据的装置,所述字典数据包括定义数据、音频数据和/或读音数据;并且
其中所述用于产生所述显示数据的装置包括用于产生附加显示数据的装置,所述附加显示数据包括用于在所述用户界面上显示的、基于所述字典数据的所述第一词或短语的至少一种表示。
23.如权利要求22所述的***,包括用于基于所述附加显示数据而显示所述第一词或短语的所述至少一种表示的所述用户界面。
24.如权利要求22所述的***,其中,所述附加显示数据表示:
用于描述所述第一词或短语的文本,基于从所述字典数据中获得的所述定义数据;
用于表示所述第一词或短语的音频信号,基于从所述字典数据中获得的所述音频数据;和/或
所述第一词或短语的读音表示,所述读音表示包括拼音,基于从所述字典数据中获得的所述读音数据。
25.如权利要求22所述的***,还包括:
(vii)用于检索与所述附加词或短语之一相关联的附加字典数据的装置,所述附加字典数据包括定义数据、音频数据和/或读音数据;
其中所述用于产生所述附加字典数据的装置产生所述附加字典数据,所述附加字典数据进一步包括用于在所述用户界面上显示的、基于所述附加字典数据的所述附加词或短语的至少一种表示。
26.如权利要求25所述的***,包括用于基于所述附加字典数据显示所述附加词或短语的所述至少一种表示的所述用户界面。
27.如权利要求25所述的***,其中,所述附加字典数据表示:
用于描述所述附加词或短语的文本,基于从所述附加字典数据中获得的所述定义数据;
用于表示所述附加词或短语的音频信号,基于从所述附加字典数据中获得的所述音频数据;和/或
所述附加词或短语的读音表示,所述读音表示包括拼音,基于从所述附加字典数据中获得的所述读音数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2004902765A AU2004902765A0 (en) | 2004-05-24 | A Character Display System | |
AU2004902765 | 2004-05-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1993692A true CN1993692A (zh) | 2007-07-04 |
Family
ID=35451061
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005800165319A Pending CN1993692A (zh) | 2004-05-24 | 2005-05-20 | 字符显示*** |
Country Status (3)
Country | Link |
---|---|
US (1) | US20070242071A1 (zh) |
CN (1) | CN1993692A (zh) |
WO (1) | WO2005116863A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104599670A (zh) * | 2015-01-30 | 2015-05-06 | 成都星炫科技有限公司 | 点读笔的语音识别方法 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200823813A (en) * | 2006-11-30 | 2008-06-01 | Inventec Corp | Method and apparatus for learning english vocabulary and computer accessible storage media to store program thereof |
US20080278508A1 (en) * | 2007-05-11 | 2008-11-13 | Swen Anderson | Architecture and Method for Remote Platform Control Management |
EP2120130A1 (en) | 2008-05-11 | 2009-11-18 | Research in Motion Limited | Mobile electronic device and associated method enabling identification of previously entered data for transliteration of an input |
US8107671B2 (en) | 2008-06-26 | 2012-01-31 | Microsoft Corporation | Script detection service |
US8073680B2 (en) * | 2008-06-26 | 2011-12-06 | Microsoft Corporation | Language detection service |
US8019596B2 (en) * | 2008-06-26 | 2011-09-13 | Microsoft Corporation | Linguistic service platform |
US8266514B2 (en) * | 2008-06-26 | 2012-09-11 | Microsoft Corporation | Map service |
US8918383B2 (en) * | 2008-07-09 | 2014-12-23 | International Business Machines Corporation | Vector space lightweight directory access protocol data search |
US9009591B2 (en) * | 2008-12-11 | 2015-04-14 | Microsoft Corporation | User-specified phrase input learning |
CN102346731B (zh) * | 2010-08-02 | 2014-09-03 | 联想(北京)有限公司 | 一种文件处理方法及文件处理装置 |
CN101944079A (zh) * | 2010-09-16 | 2011-01-12 | 西安双捷科技有限责任公司 | 数据输入的处理方法及装置 |
US8542235B2 (en) | 2010-10-13 | 2013-09-24 | Marlborough Software Development Holdings Inc. | System and method for displaying complex scripts with a cloud computing architecture |
CN103631802B (zh) * | 2012-08-24 | 2015-05-20 | 腾讯科技(深圳)有限公司 | 歌曲信息检索方法、装置及相应的服务器 |
US9208589B2 (en) * | 2012-10-22 | 2015-12-08 | Apple Inc. | Optical kerning for multi-character sets |
TWI553542B (zh) * | 2014-12-08 | 2016-10-11 | 英業達股份有限公司 | 表情圖像推薦系統及其方法 |
US20170371850A1 (en) * | 2016-06-22 | 2017-12-28 | Google Inc. | Phonetics-based computer transliteration techniques |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0724055B2 (ja) * | 1984-07-31 | 1995-03-15 | 株式会社日立製作所 | 単語分割処理方法 |
US6640006B2 (en) * | 1998-02-13 | 2003-10-28 | Microsoft Corporation | Word segmentation in chinese text |
US20030040899A1 (en) * | 2001-08-13 | 2003-02-27 | Ogilvie John W.L. | Tools and techniques for reader-guided incremental immersion in a foreign language text |
-
2005
- 2005-05-20 US US11/596,819 patent/US20070242071A1/en not_active Abandoned
- 2005-05-20 CN CNA2005800165319A patent/CN1993692A/zh active Pending
- 2005-05-20 WO PCT/AU2005/000726 patent/WO2005116863A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104599670A (zh) * | 2015-01-30 | 2015-05-06 | 成都星炫科技有限公司 | 点读笔的语音识别方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2005116863A1 (en) | 2005-12-08 |
US20070242071A1 (en) | 2007-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1993692A (zh) | 字符显示*** | |
CN1113305C (zh) | 语言处理装置和方法 | |
CN1205572C (zh) | 对拼写、打字和转换错误具有容错能力的将一种文本形式转换为另一种文本形式的语言输入体系结构 | |
US7506254B2 (en) | Predictive conversion of user input | |
CN101065746A (zh) | 文件自动丰富的方法和*** | |
CN1834955A (zh) | 多语种翻译存储器、翻译方法以及翻译程序 | |
CN1384940A (zh) | 以无模式输入将一种文本形式转换成另一种文本形式的语言输入体系结构 | |
CN101042867A (zh) | 语音识别设备和方法 | |
US20070011160A1 (en) | Literacy automation software | |
JP2011018330A (ja) | 統計的な方法を用いて漢字を自国語の発音列に変換するシステムおよび方法 | |
CN1232226A (zh) | 句子处理装置及其方法 | |
CN1942875A (zh) | 对话支援装置 | |
JP2007087397A (ja) | 形態素解析プログラム、補正プログラム、形態素解析装置、補正装置、形態素解析方法および補正方法 | |
WO2006122361A1 (en) | A personal learning system | |
WO2005089215B1 (en) | Phonetic and stroke input methods of chinese characters and phrases | |
CN1106619C (zh) | 汉语输入变换处理装置和汉语输入变换处理方法 | |
CN100351836C (zh) | 例句显示设备和例句显示方法 | |
CN1144141C (zh) | 汉语输入变换处理装置及汉语输入变换处理方法 | |
JP4643183B2 (ja) | 翻訳装置および翻訳プログラム | |
CN1679023A (zh) | 创建和使用中文语言数据和用户自纠正数据的方法和*** | |
JPH1145266A (ja) | 文書検索装置およびその装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JPH08272780A (ja) | 中国語入力処理装置及び中国語入力処理方法及び言語処理装置及び言語処理方法 | |
JP2001109740A (ja) | 中国語文書作成装置及び中国語文書作成方法 | |
JP2008059600A (ja) | 文書処理装置、文書処理方法、および、文書処理プログラム | |
CN1838044A (zh) | 中文拼音声调笔划组合输入法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20070704 |