java调用阿里云NLP自然语言处理模型

由于SDK调用需要收费,所以采用API调用,每天有50万次免费额度,直接复制就能用

一.开通账号服务

1.百度搜索阿里巴巴自然语言处理开放平台

2.登录后页面

 

3.获取AccessKey和Secret,()找到右上角头像后点击AccessKey管理)

4.自行开通需要的版本

二.代码部分

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import sun.misc.BASE64Encoder;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.net.URI;
import java.net.URLEncoder;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;

public class TestCloud {

    static String key = "xxx"; // 你自己账号对应的AccessKey
    static String secret = "xxx"; // 你自己账号对应的secret
    static String url = "http://alinlp.cn-hangzhou.aliyuncs.com/?";

    public static void main(String[] args) throws Exception {
        //根据自己的region更换
        String sortStr = buildSortedUrl(null);
        String sign = getSign(sortStr);
        String targetUrl = url  + sortStr + "&" + "Signature=" + sign ;

        // 创建Httpclient对象
        CloseableHttpClient httpclient = HttpClients.createDefault();

        String resultString = "";
        CloseableHttpResponse response = null;
        URIBuilder builder = new URIBuilder(targetUrl);
        URI uri = builder.build();

        // 创建http GET请求
        HttpGet httpGet = new HttpGet(uri);

        // 执行请求
        response = httpclient.execute(httpGet);
        // 判断返回状态是否为200
        if (response.getStatusLine().getStatusCode() == 200) {
            resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
        }
//        JSONObject jsonObject = restTemplate.getForObject(URLDecoder.decode(targetUrl), JSONObject.class);
        System.out.println(resultString);
    }

    public static byte[] HmacSHA1Encrypt(String encryptText, String encryptKey) throws Exception {
        String MAC_NAME = "HmacSHA1";
        String ENCODING = "UTF-8";
        byte[] data=encryptKey.getBytes(ENCODING);
        //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
        SecretKey secretKey = new SecretKeySpec(data, MAC_NAME);
        //生成一个指定 Mac 算法 的 Mac 对象
        Mac mac = Mac.getInstance(MAC_NAME);
        //用给定密钥初始化 Mac 对象
        mac.init(secretKey);
        byte[] text = encryptText.getBytes(ENCODING);
        //完成 Mac 操作
        return mac.doFinal(text);
    }

    public static String encryptBASE64(byte[] key) {
        return (new BASE64Encoder()).encodeBuffer(key);
    }


    public static String getISO8601Timestamp(Date date){
        TimeZone tz = TimeZone.getTimeZone("UTC");
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
        df.setTimeZone(tz);
        String nowAsISO = df.format(date);
        return nowAsISO;
    }

    public static String getSign(String sortUrl) throws Exception {
        String StringToSign = "GET&%2F&" + java.net.URLEncoder.encode(sortUrl);
        byte[] rlt = HmacSHA1Encrypt(StringToSign, secret + "&");
        String sig = encryptBASE64(rlt);
        sig = sig.replace("\r", "").replace("\n", "");
        sig = URLEncoder.encode(sig);
        return sig;
    }

    public static String buildSortedUrl(String nextPageToken){
        Map<String, String> map = new HashMap<>();
        map.put("Format","json");
        map.put("Version","2020-06-29");
        map.put("AccessKeyId",key);
        map.put("SignatureMethod","HMAC-SHA1");
        map.put("Timestamp", getISO8601Timestamp(new Date()));
        map.put("SignatureVersion", "1.0");
        map.put("SignatureNonce", UUID.randomUUID().toString().replace("-",""));
        map.put("Text", "深圳洗剪吹");
        map.put("TokenizerId", "GENERAL_CHN");
        /**
         * xxxx替换为你想要的处理方式
         * 中文分词: GetWsChGeneral
         * 词性标注: GetPosChGeneral
         * 命名实体类别: GetNerChEcom
         * 情感分析: GetSaChGeneral
         * 关键词提取: GetKeywordChEcom
         * 文本分类: GetTcChGeneral
        */
        map.put("Action", "xxxx");
        map.put("ServiceCode", "alinlp");
        List<String> sortList = new ArrayList<>();
        for (String key : map.keySet()) {
            sortList.add(key);
        }
        sortList.sort(Comparator.naturalOrder());
        String sortStr = null;
        for(String key : sortList){
            String temp = URLEncoder.encode(key) + "=" + URLEncoder.encode(map.get(key));
            if(sortStr == null){
                sortStr = temp;
            }else{
                sortStr += "&" + temp;
            }
        }
        sortStr.replace("+","%20").replace("*","%2A").replace("%7E","~");
        return sortStr;
    }

}

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OpenAI是一个人工智能领域内的知名组织,其提供了各种领先的AI技术和应用程序,包括自然语言处理、语音识别、机器学习等。Java作为一种广泛应用的编程语言,可以通过API或SDK等方式实现调用OpenAI的服务。 一般来说,要实现Java调用OpenAI,需要完成以下几个步骤: 1.了解OpenAI提供的技术和服务,比如GPT-3等自然语言处理技术。 2.注册OpenAI的开发者账号并获取API密钥。 3.在Java中导入OpenAI提供的API或SDK,并使用API密钥进行身份认证。 4.调用OpenAI的服务接口,获取和处理服务返回的数据。 需要注意的是,Java调用OpenAI服务的具体步骤和方法可能因OpenAI版本和服务类型等而有所不同,因此需要参考OpenAI官方文档或其他相关资料进行具体操作。 Java调用OpenAI服务的优势在于其稳定性和安全性较高,而且有丰富的第三方库和工具支持。同时,Java的跨平台性也使其能够灵活适应不同的开发需求和环境。 总的来说,Java调用OpenAI是一项具有挑战性的任务,需要开发者掌握相关技术和工具,并注意服务调用时可能出现的错误和异常情况,以保证应用程序的正常运行。 ### 回答2: Java是一种面向对象的编程语言,开发工具和框架众多,同时也能很好地与其他技术集成。OpenAI是人工智能领域的一个重要组织,提供了各种先进的自然语言处理和机器学习模型,为开发人员提供了许多便利。将Java调用OpenAI能够使Java应用程序也具备自然语言处理和机器学习的能力,提高Java程序的智能化水平。 Java调用OpenAI的方法主要有两种:API方式和SDK方式。 API方式:OpenAI提供了各种API接口,Java应用程序可以通过HttpURLConnection等Http客户端工具向OpenAI提供的API服务发送请求,获取相应结果。Java程序可以基于Open AI平台提供的API进行开发,例如对话系统、语音识别、翻译等。 SDK方式:OpenAI也提供了多种语言的SDK,Java开发人员可以通过使用Java版本的SDK,轻松地在Java应用程序中调用OpenAI提供的各种服务。Java SDK提供了各种自然语言处理、机器学习、翻译等开发工具,便于Java开发人员使用OpenAI开发具有高度智能化的应用程序。 举个例子来说,假如我们要通过Java调用OpenAI的自然语言处理服务,我们可以通过API方式利用Http客户端工具向OpenAI的自然语言处理API服务发送请求,获取相应的处理结果,再使用Java程序进行后续处理。当然,我们也可以使用SDK方式调用OpenAI提供的Java SDK,轻松地在Java应用程序中使用OpenAI自然语言处理工具。 总之,Java调用OpenAI可以给予Java应用程序智能化的能力,使得Java开发人员能够轻松地开发出更具有创新性和实用性的应用程序,为用户提供更好的服务。 ### 回答3: Java调用OpenAI包括三个主要步骤: 第一步,准备API key和API endpoint。 在调用OpenAI时,需要先获取API key和API endpoint。API key是用于身份验证的凭据,API endpoint是用于访问OpenAI的地址。这些信息需要通过OpenAI的开发者网站来获取。具体而言,需要登录到OpenAI的网站,创建一个API key之后,就可以得到API endpoint和API key。 第二步,使用Java的HTTP工具调用OpenAI。 在调用OpenAI时,可以使用Java的HTTP工具,如Java URLConnection类或Apache HttpComponents库来发送HTTP请求并接收响应。要调用OpenAI API的特定端点,需要使用所需的HTTP请求方法(如POST或GET),并将API key添加到请求头中。OpenAI API发送的响应是一个包含结果的JSON格式。获取响应后,需要将其解析为Java对象以供进一步处理。 第三步,根据需求解析响应。 OpenAI API响应包含所请求的信息。在获取响应后,需要根据需求解析得到的结果。解析响应将响应转换为Java对象,使结果能够被Java应用程序使用。要解析响应,可以使用Java的JSON解析库,例如Jackson或GSON。解析响应可能需要将响应转换为Java对象或Java集合。根据OpenAI API端点,解析响应通常需要自定义Java类来表示API返回的数据结构。 最终,通过以上三个步骤,Java就可以成功调用OpenAI API实现各种功能,例如自然语言处理、图像识别等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值