开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
语言处理技术

    案例实现步骤

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

    实现步骤

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

    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评论分析案例
    下一篇
    了解更多