更新时间:2024-03-22 GMT+08:00
分享

属性级情感分析(高级版)

功能介绍

属性情感分析高级版,本产品适用于评论文本的属性级正负面分析,文本长度不超过4096字,编码方式UTF-8。建议对数据预处理,对于文本为空的内容进行过滤。

具体Endpoint请参见终端节点

调用华为云NLP服务会产生费用,本API以定制版API定价按需计费,不支持使用套餐包,使用时请在自然语言处理价格计算器 按需计费-自然语言处理定制版API中查看费用详情。

本API调用限制为20次/秒。

调试

您可以在API Explorer中调试该接口。

前提条件

在使用本API之前,需要您完成服务申请和认证鉴权,具体操作流程请参见申请服务认证鉴权章节。

用户首次使用需要先申请开通。服务只需要开通一次即可,后面使用时无需再次申请。如未开通服务,调用服务时会提示ModelArts.4204报错,请在调用服务前先进入控制台开通服务,并注意开通服务区域与调用服务的区域保持一致。

URI

  • URI格式
    POST /v1/{project_id}/nlu/aspect-sentiment/advance
  • 参数说明
    表1 URI参数说明

    名称

    是否必选

    说明

    project_id

    项目ID。获取方法请参见获取项目ID

请求消息

请求参数如表2所示。

表2 请求参数

名称

是否必选

参数类型

说明

content

String

待分析文本。文本编码要求为utf-8,仅支持中文。 限定4096个字符以内,建议文本长度300个字符以内。

type

integer

情感分析适用领域,取值如下。

  • “1”: 手机领域
  • “2” :汽车领域

响应消息

响应参数如表3所示。

表3 响应参数

名称

参数类型

说明

content

String

待分析文本。

label

integer

该文本的整体情感标签,取值如下。

  • “0 ” :负向
  • “1 ” :正向

confidence

float

该文本整体情感label的置信度,小数点精确到3位。

aspect_opinions

Array of aspectOpinion

属性情感挖掘列表。

请参见表4

error_code

string

调用失败时的错误码。具体参见错误码

调用成功时无此字段。

error_msg

string

调用失败时的错误信息。

调用成功时无此字段。

表4 aspectOpinion字段数据结构说明

名称

参数类型

说明

aspect_category

String

属性类别。

目前支持属性类别:

  • “汽车领域”:【'动力','外观','内饰','空间','操控', '舒适性', '性价比','能耗'】
  • “手机领域”:【'整体','内存','外形设计','屏幕','性价比','拍照','散热','电池','信号','指纹识别','音质','握持手感','活动配件赠品','防水','客服','物流派送','包装'】

label

integer

文本关于属性类别的情感标签。

  • “0 ” :负向
  • “1 ” :正向

confidence

float

属性类别情感标签对应的置信度。

aspect_term

String

属性描述词,预留参数,暂不支持。

opinion_term

String

观点描述词,预留参数,暂不支持。

tag

string

观点标签,预留参数,暂不支持。

span

integer列表

包含一个或多个描述属性类别的片段的起始位置和终止位置,预留参数,暂不支持。

请求示例

  • 请求示例(分析汽车领域用户评论的属性级情感)
    POST https://nlp-ext.cn-north-4.myhuaweicloud.com/v1/{{project_id}}/nlu/aspect-sentiment/advance
    Request Header: 
    Content-Type: application/json 
    X-Auth-Token:MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... 
    Request Body: 
    { 
      "content":"1、2档动力很肉,会抖。2、2档难挂,最怕半坡等红绿灯熄火。3、方向盘打死会有很大的异响,倒车最明显。4、踩油门很硬,而且踩下去很难走动,必须要用力大脚踩进去才把转速提上来。5、后备箱不能遥控开启。6、内饰接缝很是不整齐,而且用料很差。7、车内的音响设备太落后了,中控的cd机既然还不带usb播放功能。8、钥匙不好看太小气。9、锁车不会自动升车窗。先喷这么多,以后想起来再喷。",
      "type":2
    }
  • Python3语言请求代码示例(分析手机领域用户评论为“运行很快,快充也不错。”的属性级情感)
    # -*- coding: utf-8 -*-
    # 此demo仅供测试使用,建议使用sdk。需提前安装requests,执行pip install requests
    import requests
    import json
    
    def nlp_demo():
        url = 'https://{endpoint}/v1/{project_id}/nlu/aspect-sentiment/advance'  # endpoint和project_id需替换
        token = '用户对应region的token'
        header = {
            'Content-Type': 'application/json',
            'X-Auth-Token': token
        }
        body = {
            'content': '运行很快,快充也不错。',
            'type': 1
        }
        resp = requests.post(url, data=json.dumps(body), headers=header)
        print(resp.json())
    
    if __name__ == '__main__':
        nlp_demo()
  • Java语言请求代码示例(分析手机领域用户评论为“运行很快,快充也不错。”的属性级情感)
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    /**
     * 此demo仅供测试使用,建议使用sdk
     */
    public class NLPDemo {
        public void nlpDemo() {
            try {
                //endpoint和projectId需要替换成实际信息。
                URL url = new URL("https://{endpoint}/v1/{project_id}/nlu/aspect-sentiment/advance");
                String token = "对应region的token";
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setRequestMethod("POST");
                connection.setDoInput(true);
                connection.setDoOutput(true);
                connection.addRequestProperty("Content-Type", "application/json");
                connection.addRequestProperty("X-Auth-Token", token);
    
                //输入参数
                String content = "运行很快,快充也不错。";
                String body = "{\"content\":\"" + content + "\" ,\"type\":1}";
    
                OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
                osw.append(body);
                osw.flush();
                InputStream is = connection.getInputStream();
                BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
                while (br.ready()) {
                    System.out.println(br.readLine());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            NLPDemo nlpDemo = new NLPDemo();
            nlpDemo.nlpDemo();
        }
    }

响应示例

  • 成功响应示例
    {
        "content": "1、2档动力很肉,会抖。2、2档难挂,最怕半坡等红绿灯熄火。3、方向盘打死会有很大的异响,倒车最明显。4、踩油门很硬,而且踩下去很难走动,必须要用力大脚踩进去才把转速提上来。5、后备箱不能遥控开启。6、内饰接缝很是不整齐,而且用料很差。7、车内的音响设备太落后了,中控的cd机既然还不带usb播放功能。8、钥匙不好看太小气。9、锁车不会自动升车窗。先喷这么多,以后想起来再喷。",
        "label": 0,
        "confidence": 0.997282,
        "aspect_opinions": [
            {
                "aspect_category": "动力",
                "label": 0,
                "confidence": 0.988097
            },
            {
                "aspect_category": "内饰",
                "label": 0,
                "confidence": 0.988097
            },
            {
                "aspect_category": "操控",
                "label": 0,
                "confidence": 0.989935
            },
            {
                "aspect_category": "舒适性",
                "label": 0,
                "confidence": 0.964776
            }
        ]
    }
    
  • 失败响应示例
    {
        "error_code": "NLPF.0301",
        "error_msg": "argument valid error:content.must not be null;content.must not be blank;"
    }

状态码

状态码请参见状态码

错误码

错误码请参见错误码

相关文档