Python3 调用腾讯AI开放平台之智能闲聊与情感分析

昨日抓了一大堆公司店铺的评论.可是抠门的天猫不予展示评分... 所以也不知道到底是好评呀,还是差评. 心好累...

本想着弄一个现成的snowNlp来进行情感分析.  因为没有自己的语料库,也不会自己去训练.   所以就想着弄个现成的 腾讯Ai开放平台. 简直太好用了! 

期间有收到两位大佬: 大佬1 大佬2 文章的指点.

因为是第一次接入Api.  所以会写得很蠢. 主要是为了自己记录自己的思路.

 

整体Api对接的思路:

1、 设计请求参数

2、 发送请求

3、 解析响应的Json.

 

总结:

Python3 调用腾讯AI开放平台之智能闲聊与情感分析_第1张图片

本来自己想着... 就是为了懒,直接用现成的api. 可是... 用户的评论实在是太五花八门了...

所以你看这个蛮明显的差评... 被判断为 正面.(polar=1为正面,0为中性,-1为负面.)

唉...

 

详细过程:

1、 设计请求的参数.

Python3 调用腾讯AI开放平台之智能闲聊与情感分析_第2张图片

在 文档中心 查阅到每一个需要请求的参数.

app_id,time_stamp,nonce_str,session都是现成的.没有问题.

question是拿来传参的.  也没问题. 主要就是sign的问题.   文档中心没有Python3的. 涉及到编码的问题,我不太了解.  只能套用大佬现成的.

 

2、发送请求

发送请求,要么是直接 通过拼接URL直接GET, 要么就是POST一个dict.

3、解析json

接下来就是根据需要,解析json就好啦~~

 

 

代码参考

智能闲聊:

import hashlib
import time
import random
import string
from urllib.parse import quote

def curlmd5(src):
    m = hashlib.md5(src.encode('UTF-8'))
# 将得到的MD5值所有字符转换成大写
    return m.hexdigest().upper()
 
def get_params(plus_item):
    global params
    #请求时间戳(秒级),用于防止请求重放(保证签名5分钟有效)  
    t = time.time()
    time_stamp=str(int(t))
    # 请求随机字符串,用于保证签名不可预测  
    nonce_str = ''.join(random.sample(string.ascii_letters + string.digits, 10))
    # 应用标志,这里修改成自己的id和key  
    app_id='咩咩咩'
    app_key='咩咩咩'
    params = {'app_id':app_id,
              'question':plus_item,
              'time_stamp':time_stamp,
              'nonce_str':nonce_str,
              'session':'10000'
             }
    sign_before = ''
    #要对key排序再拼接
    for key in sorted(params):
        # 键值拼接过程value部分需要URL编码,URL编码算法用大写字母,例如%E8。quote默认大写。
        sign_before += '{}={}&'.format(key,quote(params[key], safe=''))
    # 将应用密钥以app_key为键名,拼接到字符串sign_before末尾
    sign_before += 'app_key={}'.format(app_key)
    # 对字符串sign_before进行MD5运算,得到接口请求签名  
    sign = curlmd5(sign_before)
    params['sign'] = sign
    return params

import requests

def get_content(plus_item):
    global payload,r
    # 聊天的API地址  
    url = "https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat"
    # 获取请求参数  
    plus_item = plus_item.encode('utf-8')
    payload = get_params(plus_item)
    # r = requests.get(url,params=payload)  
    r = requests.post(url,data=payload)
    return r.json()["data"]["answer"]

情感分析:

import hashlib
import time
import random
import string
from urllib.parse import quote

def curlmd5(src):
    m = hashlib.md5(src.encode('UTF-8'))
# 将得到的MD5值所有字符转换成大写
    return m.hexdigest().upper()

def get_params(plus_item):
    global params
    #请求时间戳(秒级),用于防止请求重放(保证签名5分钟有效)  
    t = time.time()
    time_stamp=str(int(t))
    # 请求随机字符串,用于保证签名不可预测  
    nonce_str = ''.join(random.sample(string.ascii_letters + string.digits, 10))
    # 应用标志,这里修改成自己的id和key  
    app_id='咩咩咩'
    app_key='咩咩咩'
    params = {'app_id':app_id,
              'text':plus_item,
              'time_stamp':time_stamp,
              'nonce_str':nonce_str,
             }
    sign_before = ''
    #要对key排序再拼接
    for key in sorted(params):
        # 键值拼接过程value部分需要URL编码,URL编码算法用大写字母,例如%E8。quote默认大写。
        sign_before += '{}={}&'.format(key,quote(params[key], safe=''))
    # 将应用密钥以app_key为键名,拼接到字符串sign_before末尾
    sign_before += 'app_key={}'.format(app_key)
    # 对字符串sign_before进行MD5运算,得到接口请求签名  
    sign = curlmd5(sign_before)
    params['sign'] = sign
    return params

def get_sentiments(comments):
    url = "https://api.ai.qq.com/fcgi-bin/nlp/nlp_textpolar"
    comments = comments.encode('utf-8')
    payload = get_params(comments)
    r = requests.post(url,data=payload)
    return r.json()

 

你可能感兴趣的:(Python3 调用腾讯AI开放平台之智能闲聊与情感分析)