干货|使用搜狗词库优化资源标签

来源:互联网 发布:天池大数据竞赛入门 编辑:程序博客网 时间:2024/06/06 15:36

点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文

作者简介

作者王师墨是一名网络管理软件开发工程师,长期致力于网管软件的开发实践,也在不断进行智能运维相关新技术的学习。今天他为我们带来关于优化网管系统资源画像相关内容的分享,希望对网管开发人员、运维人员及相关从业人员能有所帮助。



引子

前段时间通过UserLabel分词对网管系统中资源做了标签画像的。在实践过程中使用了自定义的字典,进行简单优化。但自定义字典远远不能满足商用化的架构,且字典的维护工作量比较大,每个局的字典又有可能有差异化。



搜狗细胞词库

本人喜欢用搜狗输入法作为平时使用的拼音输入法。在安装输入法的时候,安装向导会询问是否导入词库,里面列出了许多实用,常用的词库,用来优化用户输入体验。并且,除了安装时列出的词库,搜狗网站(http://pinyin.sogou.com/dict/)上还提供了许多官方、非官方的词库可以下载安装。

通过“城市信息”-> “广东”->“行政区划地名”下载个“深圳市城市信息精选”(深圳市城市信息精选.scel文件)的词库。这就是本文接下来的素材了。


实践

本章主要描述如果将词库文件(scel)转换成jieba可以识别的字典(txt),加入引用。


深蓝词库转换

在网上搜索了一下,有个开源工具“深蓝词库转换”

https://github.com/studyzy/imewlconverter/)可以解析词库并转换成多种格式的文件,其中就包括了txt。

深蓝词库转换是绿色版软件,下载后直接执行exe就可以运行。


选择文件所在路径,工具会自动识别源文件类型(搜狗细胞词库scel)。再选择目标格式,搜狗拼音txt,后点击“转换”。预览文本区域会列出解析结果,并弹框提示是否保存到本地。

保存文件之后,可以得到一个txt文件。也就是我们的中间文件“深圳市城市信息精选.txt”。

从中间文件提取词条

中间文件“深圳市城市信息精选.txt”并不能直接被jieba所使用,需要将前面的拼音定义给去掉。这时,数据分析瑞士军刀级别的excel(现在都用WPS了,不过本人学习数据分析的时候还用excel)就派上用场了。

先将中间文件扩展名改为csv,再用WPS打开。

表格中第一列包含了两部分内容,拼音和词条,之间用空格分隔。选中第一列后,通过“数据”->“分列”功能可以很轻易的将两部分内容分成两列。

“原始数据类型”选择“分隔符号”(默认选项)。点击“下一步”。

 “分隔符号”勾选上“空格”,在“数据预览”中可以看到数据将会按我们期望的分列。后续内容无需定制,所以直接点击“完成”。

可以看到我们需要的内容已经分列到“B”列中。再选中“A”列->右键“删除”,则文件将只包含词条数据。

由于csv是纯文本的文件格式。所以,保存文件,并将文件扩展名改回txt,即可得到我们需要的字典。


代码修改

将之前引用自定义字典nms.txt的代码替换为引用新文件:

注:此时“深圳市城市信息精选.txt”文件的编码格式有可能是“gbk”。而jieba只能用“utf-8”解析字典,因此需要将文件做一下转换。


使用词库前后对比

对比使用词库前后内容,可以发现它识别出了“布新村”,而不是“布|新村”。但词库中还是未能很好的识别出“较场尾路”,而还是识别为“较场尾|路”;“大鹏金沙湾”也未能合理的拆分为“大鹏|金沙湾”。因此,词库还是有改进空间的。


后续考虑

  1. 单词库远远不能满足需求,合并多词库内容是否又会导致内存资源吃紧?

  2. 词库除了官方提供,还有很多词条是网友贡献。词库的质量也就参差不齐,且可能有重复内容。如何裁剪优化?

  3. 目前使用词库是否涉及商业权限问题?

  4. 通过深蓝词库转换工具可以手工转换词库格式,但如何能实现自动化?