对接科大讯飞NLP

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 对接科大讯飞NLP

“未知苦处,不信神佛。”——Priest《杀破狼》

这里对接的是文本纠错

git仓库:

https://gitee.com/VampireAchao/simple-kdxf-nlp.git

api文档:

https://www.xfyun.cn/doc/nlp/textCorrection/API.html#接口说明

引入maven依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.4</version>
</dependency>

然后在 resources目录下添加 app.setting配置文件(也可以用 spring配置文件或者硬编码,随便你)

编写配置文件

# -------------------------------------------------------------
# ----- Setting File with UTF8-----
# ----- 服务接口认证信息配置文件 -----
# -------------------------------------------------------------
HOST_URL = 
            https://api.xf-yun.com/v1/private/s9a87e3ec
APP_ID = XXX
API_SECRET = XXX
API_KEY = XXX

接下来是编写代码:

package org.example;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Console;
import cn.hutool.core.lang.Opt;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.text.StrPool;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.URLUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.hutool.log.StaticLog;
import cn.hutool.setting.Setting;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.stream.Collectors;
import static cn.hutool.core.text.CharSequenceUtil.format;
/**
 * 文本纠错
 *
 * @author VampireAchao
 */
public class TextCorrection {
    /**
     * 地址与鉴权信息,配置文件中
     */
    public static final String HOST_URL;
    public static final String APP_ID;
    public static final String API_SECRET;
    public static final String API_KEY;
    static {
        // 加载配置文件
        Setting setting = new Setting("app.setting");
        HOST_URL = setting.get("HOST_URL");
        APP_ID = setting.get("APP_ID");
        API_SECRET = setting.get("API_SECRET");
        API_KEY = setting.get("API_KEY");
        setting.clear();
    }
    public static void main(String[] args) {
        Map<String, Object> inspect = inspect("Hutool似一个小而全的Java工具类库,通过静态万法封装,降低相咲API的学习城本,提蒿工作效率,使Java拥有函数式语言般的尤雅,让Java语言也何以“甜甜的”。");
        Console.log(inspect);
    }
    public static JSONObject inspect(String words) {
        String authUrl = getAuthUrl(HOST_URL, API_KEY, API_SECRET);
        String json = getRequestJson(words);
        String backResult = HttpUtil.post(authUrl, json);
        StaticLog.debug("文本纠错返回结果:" + backResult);
        JSONObject result = JSONUtil.parseObj(backResult);
        if (Opt.ofNullable(result.getJSONObject("header"))
                .map(header -> header.getInt("code"))
                .filter(code -> code.equals(0))
                .isEmpty()) {
            throw new IllegalStateException(CharSequenceUtil.format("文本纠错失败:{}", backResult));
        }
        String text = result.getJSONObject("payload").getJSONObject("result").getStr("text");
        String base64Decode = Base64.decodeStr(text);
        StaticLog.debug("text字段base64解码后纠错信息:" + base64Decode);
        return JSONUtil.parseObj(base64Decode);
    }
    public static String getAuthUrl(String hostUrl, String apiKey, String apiSecret) {
        URL url = URLUtil.url(hostUrl);
        String date = DateUtil.formatHttpDate(DateUtil.date());
        String signatureTemplate = "host: {}\ndate: {}\nPOST {} HTTP/1.1";
        String signatureBeforeSha = format(signatureTemplate, url.getHost(), date, url.getPath());
        String signature = SecureUtil.hmacSha256(apiSecret).digestBase64(signatureBeforeSha, false);
        String authorization = MapUtil.builder(new LinkedHashMap<>())
                .put("api_key", apiKey)
                .put("algorithm", "hmac-sha256")
                .put("headers", "host date request-line")
                .put("signature", signature)
                .build()
                .entrySet().stream().map(entry -> format("{}=\"{}\"", entry.getKey(), entry.getValue()))
                .collect(Collectors.joining(StrPool.COMMA + StrPool.C_SPACE));
        String queryString = HttpUtil.toParams(MapUtil.<String, Object>builder(new LinkedHashMap<>())
                .put("authorization", Base64.encode(authorization))
                .put("date", date)
                .put("host", url.getHost())
                .build(), StandardCharsets.UTF_8, true);
        return HttpUtil.urlWithForm(hostUrl, queryString, CharsetUtil.CHARSET_UTF_8, false);
    }
    public static String getRequestJson(String text) {
        return JSONUtil.toJsonStr(MapUtil.builder(new LinkedHashMap<>())
                .put("header", MapUtil.builder(new LinkedHashMap<>())
                        .put("app_id", APP_ID)
                        .put("status", 3)
                        .build())
                .put("parameter", MapUtil.builder(new LinkedHashMap<>())
                        .put("s9a87e3ec", MapUtil.builder(new LinkedHashMap<>())
                                .put("result", MapUtil.builder(new LinkedHashMap<>())
                                        .put("encoding", "utf8")
                                        .put("compress", "raw")
                                        .put("format", "json")
                                        .build())
                                .build())
                        .build())
                .put("payload", MapUtil.builder(new LinkedHashMap<>())
                        .put("input", MapUtil.builder(new LinkedHashMap<>())
                                .put("encoding", "utf8")
                                .put("compress", "raw")
                                .put("format", "plain")
                                .put("status", 3)
                                .put("text", Base64.encode(text))
                                .build())
                        .build())
                .build());
    }
}

执行结果:

相关文章
|
机器学习/深度学习 人工智能 自然语言处理
讯飞星火大模型:AI语言模型的巅峰之作
今年,我们不得不提的一个热门话题就是ChatGPT,这是一款基于语言模型的人机对话系统。它在工作和生活中给我们带来了极大的便利。作为一名从事IT行业的人,我深切体会到了它在技术和文本处理方面的重要性。
331 0
讯飞星火大模型:AI语言模型的巅峰之作
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
AppFlow:玩转科大讯飞星火大模型
讯飞大模型是科大讯飞开发的先进人工智能系统,利用深度学习和自然语言处理技术,提供高效准确的语言理解与生成能力,在语音识别、语义理解、机器翻译及智能对话等领域表现出色。AppFlow全面支持该模型,并提供公共配置模版,用户只需填写简单参数即可在钉钉群中配置讯飞模型机器人。
|
算法 程序员 测试技术
|
机器学习/深度学习 人工智能 自然语言处理
2022科大讯飞AI开发者大赛,来了!
6月9日,第四届(2018~2022)科大讯飞AI开发者大赛,正式启动! 科大讯飞联合优质企业、知名高校、融投资机构等53家合作伙伴, 围绕十大新兴产业开启算法、应用、编程赛、虚拟形象选拔、辩论赛、创意集市创意赛等108个赛道方向,覆盖了智能语音、视觉、自然语言、图文识别等人工智能热门技术,涵盖了元宇宙、农业养殖、遗址文化、生物与环保、医疗健康、地理遥感、企业数字化、智能家居、电商销售等多领域。
|
语音技术 开发工具 图形学
Unity 接入科大讯飞语音识别及语音合成
Unity 接入科大讯飞语音识别及语音合成
1298 1
Unity 接入科大讯飞语音识别及语音合成
|
机器学习/深度学习 自然语言处理 搜索推荐
大厂技术实现 | 爱奇艺文娱知识图谱的构建与应用实践 @自然语言处理系列
知识图谱是一种用图模型来描述知识和建模世界万物之间关联关系的技术方法。本文研究的是爱奇艺奇搜知识图谱的构建流程与应用场景,了解这一文娱行业知识图谱是如何帮助用户精确找到想要的内容、回答用户问题、以及理解用户搜索意图的。
4184 7
大厂技术实现 | 爱奇艺文娱知识图谱的构建与应用实践 @自然语言处理系列
|
人工智能 自然语言处理 搜索推荐
科大讯飞也推AI智能硬件,K12“知识图谱型”AI教育“真香”?
一次性推出5款新硬件产品,公众认知中一向ToB的“明星企业”科大讯飞前两天的发布会让人“意外”,ToC转型似乎说来就来。
科大讯飞也推AI智能硬件,K12“知识图谱型”AI教育“真香”?
|
机器学习/深度学习 人工智能 自然语言处理
CVPR 2020 | 京东AI研究院对视觉与语言的思考:从自洽、交互到共生
纵观视觉与语言在这六年间的飞速发展史,它就仿佛是两种不同文化(计算机视觉与自然语言处理)的碰撞与交融。这里每一种文化最初的进化都是自洽的,即独立地演化形成一套完备的视觉理解或语言建模体系;演化至今,我们当前所迎来的则是两种文化间的交互,自此视觉理解和语言建模不再是简单串联的两个模块,而是通过互相的信息传递成为共同促进的一个整体;对于视觉与语言的未来,则一定是聚焦于两者更为本质和紧密的共生,它所渴望的,将是挣脱开数据标注的桎梏,在海量的弱监督甚至于无监督数据上找寻两者间最为本质的联系,并以之为起源,如「道生一,一生二,二生三,三生万物」一般,赋予模型在各种视觉与语言任务上的生命力。
308 0
CVPR 2020 | 京东AI研究院对视觉与语言的思考:从自洽、交互到共生
|
机器学习/深度学习 自然语言处理 文字识别
KBP2016 冠军背后,科大讯飞 NLP 实力几何?
美国当地时间 2016 年 11 月 15 日,NIST 揭晓 KBP2016 EDL 大赛结果。其中,科大讯飞包揽了本届 EDL 比赛的冠亚军。 机器之心第一时间采访了科大讯飞研究院研究员刘丹,从 KBP2016 比赛情况、KBP 任务难点、以及讯飞的 NLP 方向进展展开话题。
291 0
KBP2016 冠军背后,科大讯飞 NLP 实力几何?
|
机器学习/深度学习 新零售 人工智能
「阿里语音AI」十篇论文入选语音顶会INTERSPEECH2020
「阿里语音AI」十篇论文入选语音顶会INTERSPEECH2020,论文研究方向包含语音识别,语音合成,说话人识别,语音增强和信号处理
「阿里语音AI」十篇论文入选语音顶会INTERSPEECH2020