自然语言处理预训练模型简历抽取(中文)服务 Java SDK示例

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 自然语言处理(Natural Language Processing,简称NLP),是为各类企业及开发者提供的用于文本分析及挖掘的核心工具,旨在帮助用户高效的处理文本,已经广泛应用在电商、文娱、司法、公安、金融、医疗、电力等行业客户的多项业务中,取得了良好的效果。可用于搭建内容搜索、内容推荐、舆情识别及分析、文本结构化、对话机器人等智能产品。NLP自学习平台提供了一些预训练的特定领域模型服务。例如:商品评价解析服务、新闻层次分类服务、中文简历抽取、英文简历抽取等。本文将使用Java SDK演示简历抽取(中文)服务以及响应返回json字符串中unicode编码转为中文字符的调用以供参考。

使用前提:服务开通与资源包购买

操作步骤:

1.添加pom依赖

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>4.5.14</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-nlp-automl</artifactId>
        <version>0.0.8</version>
    </dependency>

2.Code Sample

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.nlp_automl.model.v20191111.RunPreTrainServiceRequest;
import com.aliyuncs.nlp_automl.model.v20191111.RunPreTrainServiceResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;


//  自然语言处理预训练模型 简历抽取服务

public class JianLi {

    public static void main(String[] args) throws ClientException {

        DefaultProfile defaultProfile = DefaultProfile.getProfile("cn-hangzhou","XXXXXXXXXX","XXXXXXXXXX");
        IAcsClient client = new DefaultAcsClient(defaultProfile);
        String content = "张某 ID:61111111\n" +
                "186123333333\u0003\n" +
                "zhang@126.com\n" +
                "男|29 岁 (1990/07/27)|现居住南京-玄武区|8年工作经验\n" +
                "职位: 软件测试工程师";
        RunPreTrainServiceRequest request = new RunPreTrainServiceRequest();
        request.setServiceName("ResumeExtractorZH");
        request.setPredictContent(content);
        RunPreTrainServiceResponse response = client.getAcsResponse(request);
        System.out.println(response.getPredictResult());

       /* Gson gson=new GsonBuilder().disableHtmlEscaping().create();
        System.out.println(gson.toJson(response.getPredictResult()));*/

       String s=decodeUnicode(response.getPredictResult());
        System.out.println(s);

    }
    public static String decodeUnicode(String theString) {
        char aChar;
        int len = theString.length();
        StringBuffer outBuffer = new StringBuffer(len);
        for (int x = 0; x < len;) {
            aChar = theString.charAt(x++);
            if (aChar == '\\') {
                aChar = theString.charAt(x++);
                if (aChar == 'u') {
                    // Read the xxxx
                    int value = 0;
                    for (int i = 0; i < 4; i++) {
                        aChar = theString.charAt(x++);
                        switch (aChar) {
                            case '0':
                            case '1':
                            case '2':
                            case '3':
                            case '4':
                            case '5':
                            case '6':
                            case '7':
                            case '8':
                            case '9':
                                value = (value << 4) + aChar - '0';
                                break;
                            case 'a':
                            case 'b':
                            case 'c':
                            case 'd':
                            case 'e':
                            case 'f':
                                value = (value << 4) + 10 + aChar - 'a';
                                break;
                            case 'A':
                            case 'B':
                            case 'C':
                            case 'D':
                            case 'E':
                            case 'F':
                                value = (value << 4) + 10 + aChar - 'A';
                                break;
                            default:
                                throw new IllegalArgumentException(
                                        "Malformed   \\uxxxx   encoding.");
                        }
                    }
                    outBuffer.append((char) value);
                } else {
                    if (aChar == 't')
                        aChar = '\t';
                    else if (aChar == 'r')
                        aChar = '\r';
                    else if (aChar == 'n')
                        aChar = '\n';
                    else if (aChar == 'f')
                        aChar = '\f';
                    outBuffer.append(aChar);
                }
            } else
                outBuffer.append(aChar);
        }
        return outBuffer.toString();
    }
}

3.测试结果

{"result": [{"tags": [{"class": "\u59d3\u540d", "source": "rule", "span": "\u5f20\u67d0"}], "id": 0, "sent_offsets": 0, "sentence": "\u5f20\u67d0 ID:61111111"}, {"tags": [{"start": 0, "end": 12, "conf": 0, "span": "186123333333", "source": "model", "class": "\u624b\u673a\u53f7"}], "id": 0, "sent_offsets": 1, "sentence": "186123333333\u0003"}, {"tags": [{"class": "\u7535\u5b50\u90ae\u7bb1", "source": "rule", "span": "zhang@126.com"}], "id": 0, "sent_offsets": 2, "sentence": "zhang@126.com"}, {"tags": [{"start": 8, "end": 18, "conf": 0, "span": "1990/07/27", "source": "model", "class": "\u51fa\u751f\u65e5\u671f"}, {"class": "\u6027\u522b", "source": "rule", "span": "\u7537"}], "id": 0, "sent_offsets": 3, "sentence": "\u7537|29 \u5c81 (1990/07/27)|\u73b0\u5c45\u4f4f\u5357\u4eac-\u7384\u6b66\u533a|8\u5e74\u5de5\u4f5c\u7ecf\u9a8c"}, {"tags": [{"start": 4, "end": 11, "conf": 0, "span": "\u8f6f\u4ef6\u6d4b\u8bd5\u5de5\u7a0b\u5e08", "source": "model", "class": "\u5c97\u4f4d\u540d\u79f0"}], "id": 0, "sent_offsets": 4, "sentence": "\u804c\u4f4d\uff1a \u8f6f\u4ef6\u6d4b\u8bd5\u5de5\u7a0b\u5e08"}], "message": "", "time": 22, "ret_code": 0}
{"result": [{"tags": [{"class": "姓名", "source": "rule", "span": "张某"}], "id": 0, "sent_offsets": 0, "sentence": "张某 ID:61111111"}, {"tags": [{"start": 0, "end": 12, "conf": 0, "span": "186123333333", "source": "model", "class": "手机号"}], "id": 0, "sent_offsets": 1, "sentence": "186123333333"}, {"tags": [{"class": "电子邮箱", "source": "rule", "span": "zhang@126.com"}], "id": 0, "sent_offsets": 2, "sentence": "zhang@126.com"}, {"tags": [{"start": 8, "end": 18, "conf": 0, "span": "1990/07/27", "source": "model", "class": "出生日期"}, {"class": "性别", "source": "rule", "span": "男"}], "id": 0, "sent_offsets": 3, "sentence": "男|29 岁 (1990/07/27)|现居住南京-玄武区|8年工作经验"}, {"tags": [{"start": 4, "end": 11, "conf": 0, "span": "软件测试工程师", "source": "model", "class": "岗位名称"}], "id": 0, "sent_offsets": 4, "sentence": "职位: 软件测试工程师"}], "message": "", "time": 22, "ret_code": 0}

更多参考

响应返回JSON数据时出现的unicode编码问题
预训练模型使用教程
简历抽取(中文)服务

目录
相关文章
|
3月前
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
118 1
|
4月前
|
存储 Java
Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。
【10月更文挑战第19天】本文详细介绍了Java中的HashMap和TreeMap,通过具体示例展示了它们在处理复杂数据结构问题时的应用。HashMap以其高效的插入、查找和删除操作著称,而TreeMap则擅长于保持元素的自然排序或自定义排序,两者各具优势,适用于不同的开发场景。
67 1
|
2月前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
287 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
3月前
|
Java
在Java中实现接口的具体代码示例
可以根据具体的需求,创建更多的类来实现这个接口,以满足不同形状的计算需求。希望这个示例对你理解在 Java 中如何实现接口有所帮助。
121 38
|
4月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
142 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
4月前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
77 9
|
4月前
|
Java API 网络安全
Java 发送邮件示例
本示例展示了如何使用Java编程语言发送电子邮件。通过利用JavaMail API,这段代码实现了从配置SMTP服务器,设置邮件属性,到发送邮件的全过程,为开发者提供了实用的参考。
360 11
|
4月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
41 1
|
5月前
|
Kubernetes API 开发工具
【Azure Developer】通过SDK(for python)获取Azure服务生命周期信息
需要通过Python SDK获取Azure服务的一些通知信息,如:K8S版本需要更新到指定的版本,Azure服务的维护通知,服务处于不健康状态时的通知,及相关的操作建议等内容。
72 18
|
5月前
|
JavaScript 前端开发 Java
Java 8 新特性详解及应用示例
Java 8 新特性详解及应用示例
141 3

热门文章

最新文章

  • 1
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 2
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    Data Formulator:微软开源的数据可视化 AI 工具,通过自然语言交互快速创建复杂的数据图表
  • 4
    【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
  • 5
    ACE++:输入想法就能完成图像创作和编辑!阿里通义推出新版自然语言驱动的图像生成与编辑工具
  • 6
    如何结合NLP(自然语言处理)技术提升OCR系统的语义理解和上下文感知能力?
  • 7
    自然语言处理的未来:让机器“听懂”人类语言的奥秘
  • 8
    【AI程序员】通义灵码 AI 程序员全面上线JAVA使用体验
  • 9
    微信小程序与Java后端实现微信授权登录功能
  • 10
    接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡