一、背景作者在2年前写了一篇文章《PHP使用elasticsearch搜索安装及分词方法》,记录了使用ES进行分词的实现步骤。最近需要分词。在网上找到了一个百度中文分词项目ChineseLexicalAnalysis(LAC),决定使用它,并通过文章记录下这次试用,以供有需要的朋友参考。中文词法分析LAC支持Python、C++、JAVA、Android接口调用,其他语言需要开发者封装是的,笔者这次决定使用Python进行实验,相关代码我会贴在文章,作为大家的参考。2、LACLAC2的安装方法。源可能很慢,所以我们可以使用加速地址。参考命令如下:pip3installlac-ihttps://mirror.baidu.com/pypi/simple命令执行后,返回信息如下。安装注意事项LAC有1.0和2.0,在码云中显示为1.0,但没有具体标注。1.0版本的安装过程很麻烦,安装过程也容易出错。推荐大家去github查看LAC2.0的安装方法。如果你是Windows系统想用wsl安装,千万不要用WSL1.0,因为它不支持LAC的依赖组件paddle,没有办法正确安装LAC。LAC安装需要注意你的Python版本,不能大于3.7。笔者在做实验时使用的Python3.8版本,结果报如下错误3.运行DEMO为了验证LAC是否安装成功,我这里运行demo代码,首先新建一个代码文件lac.py,然后将demo代码复制进去,代码如下#-*-coding:utf-8-*-fromLACimportLAC#loadwordsegmentationmodellac=LAC(mode='seg')#singlesampleinput,输入是Unicode编码的字符串text=u"国王叫我巡山"seg_result=lac.run(text)print(seg_result)#批量样本输入,输入是多个句子的列表,平均速度会befastertexts=[u"山上有一座寺庙",u"寺庙里有一个老和尚和一个小和尚"]seg_result=lac.run(texts)print(seg_result)然后用Python运行这个文件并执行命令执行下面的pythonlac.py命令后,返回的分词词汇标注信息如下从上图可以看出,LAC已经对一段文字进行了分词,说明我们已经成功安装了LAC。除了分词,LAC还可以进行词性标注和实体识别,我们继续运行demo代码。作者首先新建了一个代码文件lac2.py,然后复制了词性标注和实体识别的demo代码。代码如下fromLACimportLAC#加载LAC模型lac=LAC(mode='lac')#单样本输入,输入为Unicode编码的字符串text=u"我要加薪"lac_result=lac.run(text)print(lac_result)#batch样例输入,输入是多个句子的列表,平均速度较快texts=[u"唐青松好帅",u"我喜欢做安全开发工程师"]lac_result=lac.run(texts)print(lac_result)然后用Python运行这个文件,执行命令如下pythonlac2.py命令执行后,返回的分词词汇标注信息如下在上面图中我们可以看到,这次LAC不仅返回了分词结果,还返回了另外一个词表类型列表,笔者大致查了一下,基本可以对应。比如作者姓名标注为PER,姓名类型标注为帅气,形容词类型标注为a。下面是一组词性和专有名词类别标签,其中我们将最常用的4个专有名词类别以大写形式标注:labelmeaninglabelmeaninglabelmeaninglabelmeaningncommonnounfplacenounsplacenounnwworknamenz其他专有名词v普通动词vd动词副词vn名词动词a形容词adparaform词an名词d副词m量词q量词r代词p介词c连词u助词xc其他虚词w标点符号PER人名LOC地名ORG机构名TIME时间4.试用感受LAC是一个很好的分词工具,不是用来直接为业务提供搜索支持,而是作为一个搜索引擎的基础工具;例如,当你想使用网站的文章标题进行站内搜索,使用LAC进行分词,分词后需要额外存储这些数据,使用来作为搜索,因为LAC只提供分词功能,所以我觉得LAC很适合作为分词搜索引擎的一部分。如果要用分词的方式在站内搜索信息,不如ES方便。笔者也很好奇LAC项目的适用场景?从LAC项目的产品口中得到的答案是:LAC的适用场景更贴近实际。对象识别相关的,如知识图谱、知识问答、信息抽取等,也可以作为其他模型算法的基础工具,因为分词的粒度是基于实体的,也有效果实体识别,而在搜索引擎中,一般使用的分词粒度会比较小,或者可以同时提供多个粒度。如果分词是为了搜索,需要用户自己微调模型-作者:唐青松日期:2020-07-07
