使用python做中文分词最好的就是jieba包,除此之外,我们还可以使用百度的AI开放平台,获取其AccessToken,调用自然语言处理接口,进行中文分词处理。
主要步骤:
# 导入requests工具包import requests# client_id 为官网获取的AK, client_secret 为官网获取的SKhost = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'response = requests.get(host)#借助AK和SK,获取access_tokenif response: access_token = response.json()['access_token']# 按要求写入header参数headers = {'content-type': 'application/json'}# 生成urlurl = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/lexer?charset=UTF-8&access_token=' + access_token
#读取特定文本文件f=open('C:est.txt','rb')f_read=f.read()news=f_read.decode('utf-8')
response = requests.post(url, data = json.dumps({'text': news}), # news变量写在这里 headers = headers)if response: result = response.json()['items']
![c2a089fcc070b978cd90a7e4cefec628.png](https://i-blog.csdnimg.cn/blog_migrate/50e81491b22cf2587369e119c330ddb8.jpeg)
注:该结果为每个词汇的属性所组成的字典
针对字典型数据,我们可以使用DataFrame将其转化为表格化数据
import pandas as pddf = pd.DataFrame(result['items'])df.head()
![48e066b330c593dbaed3dc97acd29c6e.png](https://i-blog.csdnimg.cn/blog_migrate/cbf1cc6ed6ead6821d993ae953dfee08.jpeg)
![7a21ee320032770a980bd69243c4b7a4.png](https://i-blog.csdnimg.cn/blog_migrate/090c7b27f7214b1ff9e7b7837d249db6.jpeg)
#在分词中,我们一般只需要‘item’,‘ne’,‘pos’这三列即可,所以只索引这三列df_new = df[['item','ne','pos']]df_new
![5b048fbfb96c0791222620ac528b1629.png](https://i-blog.csdnimg.cn/blog_migrate/ac7cbf9e5ff303538c838804767a3054.jpeg)
df_n =df_new[(df_new['ne'] == 'PER')| (df_new['pos'] =='n')]df_n
![0c5eb01270ed4993266fe0a9363c4b8f.png](https://i-blog.csdnimg.cn/blog_migrate/2084f44368535d12988ae90628f2ac83.jpeg)
对分析结果进行词频统计
df_n_count = df_n['item'].value_counts()df_n_count.head(20)
![088dfc81ae31aa0872c2a7686a08f383.png](https://i-blog.csdnimg.cn/blog_migrate/f70b21fc0210ea2475e57cd32481c1ce.jpeg)
针对分词结果绘制词云图
import pyecharts as pewd = pe.WordCloud('老罗卖货词云图') #词云图图名words = df_n_count.index #构建词云图中的词words_size = df_n_count.values #构建每个词的 word_size_range大小# 绘制图表wd.add("", words, words_size, shape = 'cardioid', word_size_range=[20, 100], rotate_step=10)#参数分析:''为图例,本图不需要,words和words_size分别为上面所赋值的参数#shape 为词云图的形状,有'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star'可选# word_size_range为单词大小的范围,rotate_step为旋转单词角度,默认时为 45°
![8ccf8240b5f45532070dc0b5595a75a8.png](https://i-blog.csdnimg.cn/blog_migrate/cf5137bed52fd7a6ee3d836d229942c0.jpeg)
(注:其中有部分词为同义词,并未替换,正式的数据分析中需要将其转为同一词进行统计)
参考来源:
CSDN 《利用百度的词法分析区分数据》
- END -
![d8dca37d014a5184038768614cbe0f9a.png](https://i-blog.csdnimg.cn/blog_migrate/bab2df4bbe8eb8ebcbdf9b3563c14f28.jpeg)
![3ba50b8b63330f7818c5628fc90eed0b.png](https://i-blog.csdnimg.cn/blog_migrate/d09e9ad8aa8b78717ccfa875fd7e28d3.jpeg)
李
读书、观影
分享生活的碎片
有理想的人不会伤心