jieba、pyltp、百度api三种方式分词效果比较

一.几种分词方式参考文档:

1.百度api:https://cloud.baidu.com/doc/NLP/NLP-API/12.5C.E7.AE.80.E4.BB.8B.html

这里需要说明一点:调用api的时候需要拿到acess_token(而acess_token的获得需要通过申请的api key 和 secret key发送http请求获得);我这里是通过官网介绍的方式之一bash来获取acess_token:

#!/bin/bash
curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=iAMeqDyTdC4gkHwFzjVle***&client_secret=0LSMArEnd1rmNTb3RF7U22sOGK4sU***'

(上述代码最后三位我脱敏了)

2.pyltp:https://pyltp.readthedocs.io/zh_CN/develop/api.html

3.jieba:https://github.com/fxsjy/jieba

 

二.放入代码

# -*- coding: UTF-8 -*-

import  re
import  os
import jieba
from pyltp import Segmentor
import requests
import json


sentence='2016年2月14日,徐荣霞与常代峰向东台市人民法院诉讼离婚,后经东台法院判决双方离婚,婚生子常凯随常代峰生活,徐荣霞自2016年2月起每月给付抚养费300元至婚生子独立生活时止,该款分别于每年的6月30日前和12月30日前给付。因徐荣霞未按判决履行,常凯向东台法院申请强制执行。'

# 采用哈工大pyltp python包

abs_path = "/Users/hqh/nlp/3.4.0/ltp_data_v3.4.0"
cws_path = os.path.join(abs_path, 'cws.model')
seg = Segmentor()  # 生成对象
seg.load(cws_path)  # 加载分词语料库
pyltp_list=list(seg.segment(sentence))
print(",".join(pyltp_list))



# 采用jieba分词

jieba_list=list(jieba.cut(sentence,cut_all=False)) # 采用精确模式进行匹配
print(",".join(jieba_list))


#  百度开放api

url='https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?access_token=这里填入获取到的acess_token的具体值'
headers={"Content-Type":"application/.json"}
data={
    "text":sentence
}
data=json.dumps(data).encode('GBK')
request_res=requests.request('post',url,headers=headers,data=data)
content=request_res.text
content=json.loads(content)
bd_list=[]
for ele in content['items']:
    bd_list.append(ele['item'])
print(",".join(bd_list))

 

三.分词结果与分析

1.pyltp:

2016年,2月,14日,,,徐荣霞,与,常,代峰,向,东台市,人民法院,诉讼,离婚,,,后,经,东台,法院,判决,双方,离婚,,,婚生子常凯,随,常,代峰,生活,,,徐荣霞,自,2016年,2月,起,每月,给,付,抚养费,300,元,至,婚生子,独立,生活,时,止,,,该款,分别,于,每年,的,6月,30日,前,和,12月,30日,前,给,付,。,因,徐荣霞,未,按,判决,履行,,,常凯,向,东台,法院,申请,强制,执行,。

 

2.jieba:

2016,年,2,月,14,日,,,徐荣霞,与,常代峰,向,东台市,人民法院,诉讼,离婚,,,后经,东台,法院,判决,双方,离婚,,,婚生子,常凯,随常,代峰,生活,,,徐荣霞,自,2016,年,2,月,起,每月,给付,抚养费,300,元至,婚生子,独立,生活,时止,,,该款,分别,于,每年,的,6,月,30,日前,和,12,月,30,日前,给付,。,因,徐荣霞,未,按,判决,履行,,,常凯,向东,台,法院,申请,强制执行,。

 

3.百度api:

2016年2月14日,,,徐荣霞,与,常代峰,向,东台市人民法院,诉讼离婚,,,后,经,东台法院,判决,双方,离婚,,,婚生子,常凯,随,常代峰,生活,,,徐荣霞,自,2016年2月起,每月,给付,抚养费,300元,至,婚生子,独立生活,时,止,,,该,款,分别,于,每年,的,6月30日前,和,12月30日前,给付,。,因,徐荣霞,未,按,判决,履行,,,常凯,向,东台法院,申请,强制,执行,。

 

4.比较:

a.去重后的分词长度比较:

类别 去重后词语列表长度
pyltp 76
jieba 76
百度api 60

百度api的分词结果更加简洁;实际上简洁的原则,在分词中经常出现,传统的基于字典的分词如双向匹配,会遵循分词个数少的原则;

 

b.时间、地点、人名、金额的区分度

类别 时间 地点 人名 金额
pyltp 一般 不予置评 一般(常代峰未识别出) 一般
jieba 差(拆分过细) 不予置评 一般
百度api 不予置评 好(没有与元拆分,可以很好体现金额)

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(自然语言处理)