情感分析

介绍

本接口将文本的情感分为负面和非负面两类。

本引擎用微博、新闻、汽车、餐饮等不同行业语料进行标注和机器学习,调用时请通过 URL 参数选择特定的模型,以获得最佳的情感判断准确率。

URL
http://api.bosonnlp.com/sentiment/analysis
HTTP Method
POST
HTTP Header
Content-Type
application/json
Accept
application/json
X-Token
YOUR_API_TOKEN (需要替换成您自己的 Token)
HTTP query string 参数

传递模型名选择用特定行业语料进行训练的模型。可选参数,默认为 general

模型名 行业 URL
general 通用 http://api.bosonnlp.com/sentiment/analysis
auto 汽车 http://api.bosonnlp.com/sentiment/analysis?auto
kitchen 厨具 http://api.bosonnlp.com/sentiment/analysis?kitchen
food 餐饮 http://api.bosonnlp.com/sentiment/analysis?food
news 新闻 http://api.bosonnlp.com/sentiment/analysis?news
weibo 微博 http://api.bosonnlp.com/sentiment/analysis?weibo
HTTP 请求 Body

JSON 格式的需要做情感判定的文本或者文本组成的列表。比如: ["\u4ed6\u662f\u4e2a\u50bb\u903c", "\u7f8e\u597d\u7684\u4e16\u754c"]

Note

我们限定了一次传入的文章数目不能超过 100 篇。

HTTP 返回 Body
JSON 格式的 [double, double] 类型组成的列表。每个元素分别表示请求的列表对应位置的文本的情感判断结果;第一个值为非负面概率,第二个值为负面概率,两个值相加和为 1

CURL 调用示例

$ curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "X-Token: YOUR_API_TOKEN" \
    --data "[\"\u4ed6\u662f\u4e2a\u50bb\u903c\", \"\u7f8e\u597d\u7684\u4e16\u754c\"]" \
    http://api.bosonnlp.com/sentiment/analysis

Python 调用示例

# -*- encoding: utf-8 -*-
from __future__ import print_function, unicode_literals
import json
import requests


SENTIMENT_URL = 'http://api.bosonnlp.com/sentiment/analysis'
# 注意:在测试时请更换为您的API Token
headers = {'X-Token': 'YOUR_API_TOKEN'}

s = ['他是个傻逼', '美好的世界']
data = json.dumps(s)
resp = requests.post(SENTIMENT_URL, headers=headers, data=data.encode('utf-8'))

print(resp.text)

Python SDK 调用示例

# -*- encoding: utf-8 -*-
from __future__ import print_function, unicode_literals

from bosonnlp import BosonNLP

# 注意:在测试时请更换为您的API Token
nlp = BosonNLP('YOUR_API_TOKEN')

s = ['他是个傻逼', '美好的世界']

result = nlp.sentiment(s)

print(result)

详细的 Python SDK 情感分析文档请看 这里

PHP 调用示例

本示例使用 PHP 的 cURL 扩展 调用 BosonNLP 的 HTTP 接口。

示例里的两条文本是某家餐馆的点评网品论,所以我们传递 food URL 参数来选择针对餐饮行业优化的模型。

<?php
$API_TOKEN = "YOUR_API_TOKEN";
$SENTIMENT_URL = 'http://api.bosonnlp.com/sentiment/analysis?food';
$data = array('这家味道还不错', '菜品太少了而且还不新鲜');

$ch = curl_init();
curl_setopt_array($ch, array(
  CURLOPT_URL => $SENTIMENT_URL,
  CURLOPT_HTTPHEADER => array(
   "Accept:application/json",
   "Content-Type: application/json",
   "X-Token: $API_TOKEN",
  ),
  CURLOPT_POST => true,
  CURLOPT_POSTFIELDS => json_encode($data, JSON_UNESCAPED_UNICODE),
  CURLOPT_RETURNTRANSFER => true,
));

$result = curl_exec($ch);
var_dump(json_decode($result));

curl_close($ch);

运行

$ php sentiment.php
array(2) {
  [0]=>
  array(2) {
    [0]=>
    float(0.99943896320364)
    [1]=>
    float(0.00056103679636458)
  }
  [1]=>
  array(2) {
    [0]=>
    float(0.00017390916533533)
    [1]=>
    float(0.99982609083466)
  }
}

PHP cURL Class 是一个 PHP cURL 扩展的面向对象封装,提供更加易于理解和使用的 API。上面的示例代码使用 PHP cURL Class 写出来是这样:

<?php
require 'vendor/autoload.php';

$API_TOKEN = "YOUR_API_TOKEN";
$SENTIMENT_URL = 'http://api.bosonnlp.com/sentiment/analysis?food';
$data = array('这家味道还不错', '菜品太少了而且还不新鲜');

use \Curl\Curl;

$curl = new Curl();
$curl->setHeader('Accept', 'application/json');
$curl->setHeader('Content-Type', 'application/json');
$curl->setHeader('X-Token', "$API_TOKEN");

$curl->post($SENTIMENT_URL, json_encode($data, JSON_UNESCAPED_UNICODE));

var_dump($curl->response);

Java 调用示例

下面是 Java 的 Unirest 库 (Github) 调用 Bosondata 的 Sentiment API 的示例。

Tip

完整的示例代码可以从 这里 下载。

package net.bosondata.sentiment_api_example;

import org.json.JSONArray;
import org.json.JSONException;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;

public class SentimentApiExample
{
    public static final String SENTIMENT_URL =
        "http://api.bosonnlp.com/sentiment/analysis";

    public static void main(String[] args) throws JSONException, UnirestException,
                                                  java.io.IOException
    {
        String body = new JSONArray(new String[]{"他是个傻逼", "美好的世界"}).toString();
        HttpResponse<JsonNode> jsonResponse = Unirest.post(SENTIMENT_URL)
            .header("Accept", "application/json")
            .header("X-Token", "YOUR_API_TOKEN")
            .body(body)
            .asJson();

        System.out.println(jsonResponse.getBody());

        // Unirest starts a background event loop and your Java
        // application won't be able to exit until you manually
        // shutdown all the threads
        Unirest.shutdown();
    }
}

构建

$ mvn clean compile assembly:single

运行

$ java -cp target/sentiment-api-example-1.0-SNAPSHOT-jar-with-dependencies.jar \
    net.bosondata.sentiment_api_example.SentimentApiExample

应用场景示例

请看 找出最负面的消费者评价