资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

案例实现步骤

下面让我们一起来和小王看一下如何接入百度自然语言处理服务吧

实现步骤

只需三步,即可完成接口的调用。

Step1:成为百度AI开放平台的开发者

要调用百度AI开放平台的能力先要成为百度AI开放平台的开发者,首先让我们来注册百度AI开放平台的开发者,并新建一个自然语言处理应用。

  • 点击百度AI开放平台导航右侧的控制台,选择需要使用的AI服务项。若为未登录状态,将跳转至登录界面,请您使用百度账号登录。如还未持有百度账户,可以点击此处注册百度账户
  • 首次使用,登录后将会进入开发者认证页面,请填写相关信息完成开发者认证。注:(如您之前已经是百度云用户或百度开发者中心用户,此步可略过。)
  • 通过控制台左侧导航,选择产品服务-人工智能,进入具体AI服务项的控制面板(自然语言处理),进行相关业务操作。

我们有账号之后登录,并且点击此处创建一个应用如下图

图片

然后就能看到创建完的应用和 API KEY 以及 Secret KEY

图片

Step2:准备数据

我们在某电商上针对某一款电商产品(例如:XX手机)随机抽取了几条商品评论进行典型意见分析。

评论1

手机已经收到,非常完美超出自己的想象,外观惊艳 黑色高端加外形时尚融为一体比较喜欢的类型。
系统流畅优化的很好,操作界面简洁大方好上手。
电池用量很满意,快充很不错。相机拍人拍物都美。
总而言之一句话很喜欢的宝贝。

评论2

外观精美大小正合适,做工精细,线条流畅,拍照完美,吃鸡最高画质无压力。
连续玩了三个小时掉电百分之二十,电池强劲持久,无明显发热,操作流畅,准备再买一台给老婆生日礼物!

评论3

大家千万不要在上当了,耗电特别快,手机激活后不支持7天无理由退货,请大家小心购买

Step3: 编写一个示例程序

第一步API KEY 以及 Secret KEY,以及第二步的数据,我们就可以写一个示例代码调用百度AI开放平台的评论观点抽取能力

准备开发环境

我们选择用python来快速搭建一个原型,关于如何安装python。可以参考下表列出的不同操作系统的安装方法进行安装。

Python的官方下载地址:下载python

Windows 快速测试包

windows平台的用户如果对上述的python安装感到困难,可以下载我们的一键测试包,下载地址:windows测试包

解压zip文件后,双击run.bat即可测试。

编写代码

新建一个 main.py

粘贴以下内容,不要忘记替换你的 API_KEY 以及 SECRET_KEY

# coding=utf-8

import sys
import json
import base64
import time


# make it work in both python2 both python3
IS_PY3 = sys.version_info.major == 3
if IS_PY3:
    from urllib.request import urlopen
    from urllib.request import Request
    from urllib.error import URLError
    from urllib.parse import urlencode
    from urllib.parse import quote_plus
else:
    import urllib2
    from urllib import quote_plus
    from urllib2 import urlopen
    from urllib2 import Request
    from urllib2 import URLError
    from urllib import urlencode

# skip https auth
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

API_KEY = 'jhDFBkvSQGtS9WPGZaE9IbcS'

SECRET_KEY = 'e5OXupgG11ovUFkA2zhqPD4HsLO35bqd'


COMMENT_TAG_URL = "https://aip.baidubce.com/rpc/2.0/nlp/v2/comment_tag"

"""  TOKEN start """
TOKEN_URL = 'https://aip.baidubce.com/oauth/2.0/token'


"""
    get token
"""
def fetch_token():
    params = {'grant_type': 'client_credentials',
              'client_id': API_KEY,
              'client_secret': SECRET_KEY}
    post_data = urlencode(params)
    if (IS_PY3):
        post_data = post_data.encode('utf-8')
    req = Request(TOKEN_URL, post_data)
    try:
        f = urlopen(req, timeout=5)
        result_str = f.read()
    except URLError as err:
        print(err)
    if (IS_PY3):
        result_str = result_str.decode()


    result = json.loads(result_str)

    if ('access_token' in result.keys() and 'scope' in result.keys()):
        if not 'brain_all_scope' in result['scope'].split(' '):
            print ('please ensure has check the  ability')
            exit()
        return result['access_token']
    else:
        print ('please overwrite the correct API_KEY and SECRET_KEY')
        exit()

"""
    call remote http server
"""
def make_request(url, comment):
    print("---------------------------------------------------")
    print("评论文本:")
    print("    " + comment)
    print("\n评论观点:")

    response = request(url, json.dumps(
    {
        "text": comment,
        # 13为3C手机类型评论,其他类别评论请参考 https://ai.baidu.com/docs#/NLP-Apply-API/09fc895f
        "type": 13
    }))

    data = json.loads(response)

    if "error_code" not in data or data["error_code"] == 0:
        for item in data["items"]:
            # 积极的评论观点
            if item["sentiment"] == 2:
                print(u"    积极的评论观点: " + item["prop"] + item["adj"])
            # 中性的评论观点
            if item["sentiment"] == 1:
                print(u"    中性的评论观点: " + item["prop"] + item["adj"])
            # 消极的评论观点
            if item["sentiment"] == 0:
                print(u"    消极的评论观点: " + item["prop"] + item["adj"])
    else:
        # print error response
        print(response)

    # 防止qps超限
    time.sleep(0.5)

"""
    call remote http server
"""
def request(url, data):
    req = Request(url, data.encode('utf-8'))
    has_error = False
    try:
        f = urlopen(req)
        result_str = f.read()
        if (IS_PY3):
            result_str = result_str.decode()
        return result_str
    except  URLError as err:
        print(err)

if __name__ == '__main__':

    comment1 = "手机已经收到,非常完美超出自己的想象,外观惊艳 黑色高端加外形时尚融为一体比较喜欢的类型。系统流畅优化的很好,操作界面简洁大方好上手。电池用量很满意,快充很不错。相机拍人拍物都美。总而言之一句话很喜欢的宝贝。"
    comment2 = "外观精美大小正合适,做工精细,线条流畅,拍照完美,吃鸡最高画质无压力。连续玩了三个小时掉电百分之二十,电池强劲持久,无明显发热,操作流畅,准备再买一台给老婆生日礼物!"
    comment3 = "大家千万不要在上当了,耗电特别快,手机激活后不支持7天无理由退货,请大家小心购买"

    # get access token
    token = fetch_token()

    # concat url
    url = COMMENT_TAG_URL + "?charset=UTF-8&access_token=" + token

    make_request(url, comment1)
    make_request(url, comment2)
    make_request(url, comment3)

运行代码

在命令行中运行python main.py

结果

若代码正确运行,命令行界面上会显示出运行结果:

---------------------------------------------------
评论文本:
    手机已经收到,非常完美超出自己的想象,外观惊艳 黑色高端加外形时尚融为一体比较喜欢的类型。系统流畅优化的很好,操作界面简洁大方好上手。电池用量很满意,快充很不错。相机拍人拍物都美。总而言之一句话很喜欢的宝贝。

评论观点:
    积极的评论观点: 外观惊艳
    积极的评论观点: 系统流畅
    积极的评论观点: 优化好
    积极的评论观点: 界面简洁
    积极的评论观点: 电池不错
    积极的评论观点: 相机不错
---------------------------------------------------
评论文本:
    外观精美大小正合适,做工精细,线条流畅,拍照完美,吃鸡最高画质无压力。连续玩了三个小时掉电百分之二十,电池强劲持久,无明显发热,操作流畅,准备再买一台给老婆生日礼物!

评论观点:
    积极的评论观点: 大小合适
    积极的评论观点: 外观精美
    积极的评论观点: 做工精细
    积极的评论观点: 线条流畅
    积极的评论观点: 拍照不错
    积极的评论观点: 电池持久
    积极的评论观点: 发热明显
    积极的评论观点: 操作流畅
---------------------------------------------------
评论文本:
    大家千万不要在上当了,耗电特别快,手机激活后不支持7天无理由退货,请大家小心购买

评论观点:
    消极的评论观点: 耗电快
    消极的评论观点: 手机一般

结果中还会返回情感搭配在句子中的起止位置,以及对应于该情感搭配的短句摘要,更多返回字段的解释您可以参照文档自然语言处理应用技术REST API文档

总结

通过评论观点抽取了解用户对商品的核心关注点,通过情感倾向分析了解用户对商品的喜好程度,通过聚类/分类能力进行系统化的观点标签总结,可以帮助商家更快速更全面的了解用户直观且典型的评价,来分析该款电商产品在用户心中的优缺点和用户满意度,生产商可根据客户评论制定新的策略。

上一篇
NLP评论分析案例
下一篇
了解更多