一种设备端中英分词算法的设计与实现

作者: 高群

一种设备端中英分词算法的设计与实现0

关键词:中英文分词算法;设备端算法;词典匹配

0 引言

1) 研究背景与意义。各种智能设备已成为提高工作和学习效率的重要工具,特别是学习辅助设备如电子词典、扫描翻译笔等,为学生提供了便捷的学习方式,极大地丰富了学习资源和环境。中英文分词算法作为文本处理的基础技术,对于提高智能设备的文本识别和处理能力具有至关重要的作用。例如,在扫描翻译笔类产品中,OCR扫描后获取的文本需要进行分词,以便更快捷地与内置资源进行匹配,从而让学习更加高效。

通过对中英文分词算法的研究,并针对设备的特性进行优化,不仅可以促进技术发展,还可以直接提升算法在端侧设备上的性能,进而改善广大使用者的体验。鉴于此,本文对中英文分词算法进行了研究,并提出一种适用于设备端应用场景的算法设计思路和实现方案。该算法将考虑终端设备的特殊需求,如处理速度、用户交互体验和准确率等,力求在不断进步的技术潮流中,为使用者提供更为精准便捷的学习体验。

2) 相关工作回顾。在中英文分词算法的研究领域,学者们已经提出了多种方法来提高分词的精确度和效率。对于中文来说,基于词典的分词方法、基于统计的模型[1]以及近年来流行的深度学习方法[2],如双向长短时记忆网络(BiLSTM) 和卷积神经网络(CNN) [3],都为分词技术的进步作出了贡献。而在英文分词方面,除了传统的基于空格和标点符号的分词方法,还有基于自然语言处理的分词算法,如基于正则表达式的方法、基于隐马尔可夫模型(HMM) 的方法等。

在学习辅助设备的应用中,分词算法主要用于提升设备的文本扫描和翻译质量。例如,在扫描词典笔中,可以通过分词算法纠正用户扫描文本的OCR文本识别结果、进行有效分词以便用户可逐个单词点击并与内置资源进行匹配,还可以辅助后续的语音合成和文本翻译等。在智能教育软件中,分词算法能够帮助软件更好地理解和处理用户输入的查询。

尽管现有的分词算法在学习辅助设备中已经取得了一定的应用成果,但仍然存在一些挑战和不足。例如,对于复杂语境下的句子或者生僻词汇,现有算法的分词效果仍不理想。此外,学习辅助设备的一个重要使用场景可能是无网络环境,该场景下分词算法只能使用本地端方案,对实时性的要求较高,而现有算法在处理速度上仍有提升空间。为此,本文通过深入分析研究学习辅助设备场景下中英文分词算法的需求,为学习辅助领域取得更好的应用效果,提出了切实可行的本地中英文分词算法落地方案。

3) 研究目标与贡献。该研究的主要目标是针对学习辅助设备这一特殊应用场景下的设备端中英文分词算法,以达到更好的跨平台性和可移植性为目的,设计并实现一种高效可行的算法,主要针对纯C 语言实现。预期成果包括提升分词的整句准确率、减少每次分词耗时,以及辅助改善用户体验(协助学习辅助设备后续的文本翻译和语音合成等)。通过优化算法,希望能够在不增加系统负担的前提下,提高学习辅助设备在文本解析方面的性能。此外,本研究还会探索算法在两款硬件平台上的实际表现,并通过算法性能和效果测试验证其有效性和可行性。

本研究提出的方案的贡献主要体现在以下3个方面:首先,提出一种新的中英文混合文本分词算法,该算法考虑了学习辅助设备中的实际应用情况,如对实时性和准确性的要求。其次,通过对比实验验证了所提算法在准确率和效率上的优势,为学习辅助设备提供了更为可靠的文本处理技术支持。最后,本研究提出的算法实现为学习辅助设备上中英文分词算法的实现提供了有价值的参考和启示。

1 分词算法基础

1.1 中文分词技术概述

中文分词是自然语言处理领域的基础任务,其目标是将连续的汉字序列切分成有意义的词语。由于中文文本中词语之间没有明显的界限标志,因此这一任务对计算机来说极具挑战性。传统的中文分词方法主要基于词典匹配,包括正向最大匹配、逆向最大匹配和双向匹配等。这些方法简单有效,但对于未登录词和歧义切分问题处理不佳。随着技术的发展,基于统计学习的模型、条件随机场以及近年来流行的深度学习方法被广泛应用于中文分词任务中,显著提高了分词的准确率。

1.2 英文分词技术概述

英语分词任务由于英语单词之间一般都是以空格分隔的,所以相对于中文分词来说相对简单一些。然而,英文分词并非毫无挑战,特别是在处理衍生词、缩略词、数字和特殊符号时。英文分词需要考虑词形还原、词性标注和句法结构等因素。常用的技术包括正则表达式匹配、动态规划算法以及基于机器学习的方法。近年来,深度学习技术的引入进一步提升了英文分词的性能,尤其是在处理不规则单词和上下文依赖的应用场景中。

1.3 智能设备端对分词算法的特殊需求

智能设备,特别是学习辅助设备,对分词算法提出了特殊的要求。学习辅助设备上的中英文分词算法的首要任务是可以完成基于词典的分词,词典即为学习辅助设备内置的词典资源,只有能准确分词,才可更快捷地完成扫读查词等任务。首先,准确性是最重要的考虑因素,因为错误的分词结果会直接影响学习效果。其次,实时性也至关重要,设备需要在有限的时间内返回结果,这要求分词算法具有高效的处理能力。因此,对于端侧的学习辅助设备的应用,主要选择基于词典的分词算法进行设计和实现,以满足学习辅助设备的特定需求。

2 算法设计

2.1 算法框架

根据学习辅助设备的应用场景,本研究采用基于词典的分词算法设计思路。该算法按照一定的策略,将待匹配的字符串与一个已建立好的“充分大的”词典资源中的词条进行匹配,若找到某个词条,则表明匹配成功,识别出该词。特定算法策略采用字符串正向最大值匹配的方式。算法框架如图1所示。

2.2 关键技术详述

在中英文分词算法的设计中,关键技术主要包括以下几个方面:

1)“ 字”切分与指针设置。在这一步中,算法需要对文本序列进行细粒度的切分,识别出单个汉字、标点符号、连续的字母串和数字串。然后,设置两层“字”指针,用于跟踪当前处理位置和状态。

2) 子串匹配与词典查找。这是分词算法的核心步骤。从两层“字”指针所指向位置开始,按照从左到右正向最大匹配原则,依次截取子串并与词典中词条进行匹配。词典查找采用散列hash算法,以提高查找效率。

3) 子串记录与指针更新。当找到匹配的词条时,将其记入分词序列中,并更新两层“字”指针,准备进行下一次的子串匹配。

4) 结束条件检查。在每次循环结束后,检查文本串是否已全部匹配完毕。如果还有未完成部分,则退回第2步继续执行;否则,整个分词环节结束。

5) 词典的构建。词典是分词算法不可或缺的部分,它包含了所有可能的词汇。在构建词典时,需要考虑到词汇多样性和覆盖面,同时也需要定期更新词典以适应语言的变化。

6) 字符串匹配算法。字符串匹配算法是分词过程中另一个重要环节。本研究采用的是散列hash算法进行字符串匹配,该算法通过将字符串转换为唯一的哈希值来快速定位和比较字符串,从而提高匹配效率和准确性。

通过以上关键技术的应用,本研究提出的中英文分词算法能够有效地处理学习辅助设备中的文本序列,满足高精度和高效率的要求。

2.3 算法优化策略

针对上述的算法框架和关键技术描述,可以采取以下优化策略来进一步提高分词算法的性能:

1) 词典结构优化。优化词典的数据结构,如使用树形结构(比如字典树Trie) 来组织词典,可以大幅提高字符串搜索效率。

2) 算法并行化。利用现代计算机多核处理器的优势,将算法中计算密集型部分并行化,例如并行地进行字符串匹配,以减少总体处理时间。

3) 自适应分词策略。根据不同应用场景和用户习惯,动态调整分词策略。例如,对于专业性较强的材料,使用更为精细的分词规则;而对于通用材料,则使用标准分词规则。

4) 反馈机制。引入用户反馈机制,根据用户的实际使用情况不断调整和优化算法,词典资源打包支持强制设置分词,以便对算法进行兜底和快速响应用户需求。这包括收集用户对分词结果的反馈、分析错误案例,不断地完善分词词典和分词规则[4]。

3 算法实现

3.1 数据集准备

根据上述分词场景需求,数据集主要分为两部分:

1) 词典。根据学习辅助设备使用场景,主要是扫描语文或者英文教材,实现查词功能,词典主要收集了K12 教育阶段教材里的一些词语和古诗词等句子,具体词典数据如表1所示。

2) 测试集。参考了一些其他分词测试集语料库的构架和标注方法[4],选取小初高语文和英语课本的一些句子作为效果验证和评价集,数据的标注是根据人们的主观感知进行标注的,具体如表2所示。

实例:

[文本] 摄提贞于孟陬兮,惟庚寅吾以降。小高大摇大摆地走了。

[标注] 摄提贞于孟陬兮/,/惟庚寅吾以降/。/小/ 高/大摇大摆/地/走/了/。/

3.2 实现环境与工具

为了确保算法的广泛适用性和可移植性,本研究采用平台无关的C语言进行中英文分词算法的实现。C语言具有高效、稳定和跨平台的特性,使其成为处理字符串和实现复杂逻辑的理想选择。在硬件环境方面,算法可以在任何支持C语言编译的环境中运行,学习辅助设备的开发一般都采用C/C++编程语言进行开发,这样可以满足学习辅助设备对算法的实现要求。

3.3 实现细节

1) 词典资源。词典资源的数据结构设计好坏会直接影响算法性能,为了提高分词引擎初始化效率,词典资源的生成要采用离线生成并打包成二进制资源文件的方式实现[5],在分词引擎初始化时再加载到内存中。

为了便于在不同应用场景中和不同词典进行匹配,需要支持多个不同类型的词典。

每个类型词典的数据结构设计如下:

2) 字符串匹配的hash 算法。考虑后续分词搜索速度,对于每个词条存储采用字符串哈希算法进行存储,这样分词的效率和词条数量关系没那么大,允许存在不同字符串对应的hash 值相同的情况,实际测试这种情况存在但是不频繁(如果不考虑内存开销,可以将hash 映射的数组范围开得更大,这样可以减少hash值冲突)。

4 实验及结果分析

4.1 实验数据

采用上述3.1章节的词典数据集和测试集进行实验。

1) 词典资源。包含50万条中文和英文词条。

2) 测试数据。中文集合15 987 个句子,英文27 251个句子。

4.2 实验结果

1) 算法效率相关结果。算法支持输入文本为UTF8 格式,单次分词最长为3 000 字节(约1 000 汉字),测试集中最长文本为2 978 字节。为了对比分词算法性能,测试选择了两个平台,测试结果如表3所示。

2) 算法准确率相关结果。测试集采用了人工标注分词结果,评估算法准确率是采用如下方式进行计算,如果全句的分词结果和人工标注一致,则该句记为分词正确,只要有一处分词错误,都记为分词错误,分词准确率=分词正确句数/测试总句数。具体测试结果如表4所示。

4.3 结果分析

本次实验对中英文分词算法的效率和准确率进行了详细评估。通过对不同平台下的算法性能测试以及在多个数据集上的准确率验证,可得到以下分析结果:

1) 算法效率相关分析。算法在两种不同硬件平台上的测试表明,在通用PC上,完成1 000字的输入文本的分词耗时仅为3 ms,这得益于其强大的计算能力和较高的处理器频率;而全志V833芯片,虽然配置了单核[email protected] GHz处理器,但其分词耗时显著增加至68 ms。这表明算法在处理能力较弱的芯片上的性能有待进一步优化。但整体性能表现均较优。此外,算法内存占用与平台无关,在支持50万词典的情况下仅需 40 MB 内存,显示出良好的内存管理能力。

2) 算法准确率相关分析。在准确率测试中,使用了人工标注分词结果作为基准,确保了评估的准确性和权威性。测试结果显示,在中文小初高教材句子数据集上,分词准确率达到了90.7%,而在英文小初高教材句子数据集上,准确率稍低,为81.0%。整体算法效果达到实用水平。

在英文测试集上表现不如中文测试集,经过分析主要有两个原因:一是测试集标注存在一些问题,因为标注人员对英文的分词不像对中文那么熟悉,所以标注结果的个人主观性差异较大。如句子“This isthe way I go to bed.”分词成“This is/the way/I/go to bed/./”和“This/ is/the/way/I/go to bed/./”都可以接受,但在统计准确率时须与标注对比,可能导致准确率统计偏低。二是英文分词存在一些特殊情况,如连字符、缩写词(如I’m) 等,有待进一步优化。

综合以上分析,本研究的中英文分词算法表现出了高效和相对准确的分词能力。然而,针对低性能处理器的优化和英文文本的分词准确率仍有提升空间。未来工作可集中在改进算法以适应低性能硬件环境,以及对英文文本处理规则的细化和优化上。

5 结论与展望

本研究针对学习辅助设备中的中英文分词算法进行了深入探究与实践,提出了一种高效、准确的分词方法,并对该方法进行了详细的设计与实现。通过在两款平台上的测试表明,该分词算法在保证较高准确率的同时,具有较快的处理速度,能够满足学习辅助设备对实时性的要求。

实验也揭示了当前工作仍有提升空间。特别是在英文文本的处理上,如何进一步提高分词准确性以及如何处理特殊语言现象(如连字符、缩写等),将是未来工作的重点。此外,针对低端硬件设备的优化也是未来研究的方向之一,以期望该算法能在更广泛的学习辅助设备上得到有效应用。

上一篇 点击页面呼出菜单 下一篇