題目:
提取一段文字中的關鍵字
思路:
- 先將一段文字分詞處理(類似第三方庫jieba分詞);
- 我們可以發現分詞結果里有許多的無用詞語,這時候就要剔除形容詞,動詞等無用詞;最后再提煉出來所需要的關鍵詞;
- 這時候去網上找相關代碼一大堆,而且提取到的關鍵詞好像也達不到我的要求,還要再接着提煉;
- 到頭來想想算了,還不如去調用第三方接口,免費省力還專業,它不香嗎;
解決方法:
調用百度AI開放平台的接口,實現關鍵詞的提取
准備工作:
打開百度AI開放平台,點擊控制台,注冊登錄;
選擇左菜單欄的自然語言處理;
創建應用,得到API Key和SecretKey
選擇自己想要學習的接口:(這里選擇文章標簽)
在文檔中查看如何獲取url,以及返回的Json數據格式;
代碼實現:
代碼分析:
如上圖官方文檔所示,請求中需要有三個條件
①根據你的API Key和SecretKey得到正確的請求URL
#得到請求url def get_url(): url=0 #通過API Key和Secret Key獲取access_token AccessToken_url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}'.format(APIKey,SecretKey) res = requests.get(AccessToken_url) json_data = json.loads(res.text) #print(json.dumps(json_data, indent=4, ensure_ascii=False)) if not json_data or 'access_token' not in json_data: print("獲取AccessToken的json數據失敗") else: accessToken=json_data['access_token'] #將得到的access_token加到請求url中 url='https://aip.baidubce.com/rpc/2.0/nlp/v1/keyword?charset=UTF-8&access_token={}'.format(accessToken) print(url) return url
②根據得到的url調用接口獲取相關Json數據
#創建請求,獲取數據 def get_tag(url,title,content): tag=''#存儲得到的關鍵詞 #創建Body請求 body={ "title": title, "content":content } body2 = json.dumps(body)#將字典形式的數據轉化為字符串,否則報錯 #創建Header請求 header={ 'content-type': 'application/json' } res = requests.post(url,headers=header,data=body2)# 推薦使用post json_data = json.loads(res.text) if not json_data or 'error_code' in json_data: #print(json.dumps(json_data, indent=4, ensure_ascii=False)) print("獲取關鍵詞的Json數據失敗") else: #print(json.dumps(json_data, indent=4, ensure_ascii=False)) for item in json_data['items']: tag=tag+item['tag']+' ' tags=tag.strip()#去除前后空格 print(tags) return tags
完整代碼:

#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : tiqu.py # @Author: 田智凱 # @Date : 2020/3/13 # @Desc :調用百度接口實現關鍵詞的提取 import json import requests APIKey='###' SecretKey='###' #創建請求url def get_url(): url=0 #通過API Key和Secret Key獲取access_token AccessToken_url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}'.format(APIKey,SecretKey) res = requests.post(AccessToken_url)#推薦使用post json_data = json.loads(res.text) #print(json.dumps(json_data, indent=4, ensure_ascii=False)) if not json_data or 'access_token' not in json_data: print("獲取AccessToken的json數據失敗") else: accessToken=json_data['access_token'] #將得到的access_token加到請求url中 url='https://aip.baidubce.com/rpc/2.0/nlp/v1/keyword?charset=UTF-8&access_token={}'.format(accessToken) return url #創建請求,獲取數據 def get_tag(url,title,content): tag=''#存儲得到的關鍵詞 #創建Body請求 body={ "title": title, "content":content } body2 = json.dumps(body)#將字典形式的數據轉化為字符串,否則報錯 #創建Header請求 header={ 'content-type': 'application/json' } res = requests.post(url,headers=header,data=body2)# 推薦使用post json_data = json.loads(res.text) if not json_data or 'error_code' in json_data: #print(json.dumps(json_data, indent=4, ensure_ascii=False)) print("獲取關鍵詞的Json數據失敗") else: #print(json.dumps(json_data, indent=4, ensure_ascii=False)) for item in json_data['items']: tag=tag+item['tag']+' ' tags=tag.strip()#去除前后空格 print(tags) return tags if __name__ == '__main__': title='iphone手機出現“白蘋果”原因及解決辦法,用蘋果手機的可以看下' content='如果下面的方法還是沒有解決你的問題建議來我們門店看下成都市錦江區紅星路三段99號銀石廣場24層01室。在通電的情況下掉進清水,這種情況一不需要拆機處理。盡快斷電。用力甩干,但別把機器甩掉,主意要把屏幕內的水甩出來。如果屏幕殘留有水滴,干后會有痕跡。^H3 放在台燈,射燈等輕微熱源下讓水分慢慢散去。' url=get_url() get_tag(url, title,content)
運行截圖: