南开期末考试《并行程序设计》期末“作业考核(线上)【仅供参考】438
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南开大学现代远程教育学院考试卷
《并行程序设计》
jiebe分词的局部并行化处理
摘要:Jieba分词为中文处理的一个工具集,主要功能为对文章进行长短句切割和分词,其在国内对中文的自然语言处理中使用率较高。本文分析了jieba分词中生成前缀词典和中文分词部分的算法并对其实现了并行化算法。最终使前缀词典生成效率(最大)提高倍,分词效率提高倍。
关键词:jiebe分词;并行计算;前缀词典;进程池
一、引言
在自然语言处理中,能将长句准确地切割成单词、短语是之后算法的关键。目前国内外已有很多关于中英文分词的算法和工具,在分词准确率上已达到较高水平,其中应用最广泛的是基于词典的机械匹配算法,这也是本文选用的算法。它的本质是将文本与词典进行字符串匹配,算法实现比较容易,但是对于一词多义、组配灵活的汉语实行简单的机械切分,将会产生无法克服的切分歧义,同时由于词库容量的限制,对于词库中没有收录的新词将无法识别。单纯采用机械匹配方式进行分词由于切分精度不高难以满足中文信息处理中对汉语分词的要求。为了提高机械匹配对切分歧义的处理能力,人们提出了将其他切分歧义处理策略与机械匹配相结合的中文分词算法,并取得了不错的效果,它是目前中文分词方法研究中一个比较成熟的发展方向。
对一个成熟的算法,切分精度和切分速度是两个最重要的目标。对机械匹配算法来说,切分精度已达到要求,但速度却较慢,尤其是在大文本量的前提下。以github.上star数较高的中文分词工具jieba分词来说,使用的仍然是串行算法。在速度方面,国内已有越来越多的学者开始研究引入并行技术,如郭翠珍[1][2]等人提出的一个基于网格的分词服务系统的研究,刘怀英[3]提出的基于分布式并行计算的中文分词研究等。
本文在jieba分词的基础上,分析了原有的算法并探讨了对算法并行加速的可行性。参考了相关文献后选择在jeba分词的前缀字典生成和中文分词两部分进行了并行化的实验,在多种并行方案中找到了最合适的方案并最终取得了良好的加速效果。
二、实验环境
属性
操作内核数2个
编程语言Python
分词工具Jieba 内存大小8GB
三、前缀字典生成的并行化
1.串行算法与并行可行性分析
jieba分词中,实际分词的过程是从一条语句中出现的某个汉字开始,依次遍历其后的所有汉字来构成一个短语,之后在构建的前缀字典中查找该短语,若字典中有对应短语且其词频大于0,则可认为成功找到一个词语。该函数在jieba分词中由get_DAG函数完成,伪代码:
for word in 该汉字之后的每个汉字i
短语=sentence[word:i]
if前缀字典中存在该短语
if词频大于1
将该短语加入word对应的短语列表
endif
eles
break
endif
endfor
endfor