java实现NER模型识别问题中的实体

news2024/11/29 0:55:30

代码如下:

String question = "飞毛腿hw4x精品电池适用于哪些机型?";
        //1、NER模型识别问题中的实体
        List<String> list1 = com.colorbin.rpa.c_magic_ai.c02_nlp.nlpUtil.getPerson(new String[]{question});
        List<String> list2 = com.colorbin.rpa.c_magic_ai.c02_nlp.nlpUtil.getPlace(new String[]{question});
        List<String> list3 = com.colorbin.rpa.c_magic_ai.c02_nlp.nlpUtil.getJG(new String[]{question});
        List<String> list4 = com.colorbin.rpa.c_magic_ai.c02_nlp.nlpUtil.getTranslatedName(new String[]{question});
        List<String> list5 = com.colorbin.rpa.c_magic_ai.c02_nlp.nlpUtil.getCRF(new String[]{question});
        Set<String> stringSet = new HashSet<>();
        stringSet.addAll(list1);
        stringSet.addAll(list2);
        stringSet.addAll(list3);
        stringSet.addAll(list4);
        stringSet.addAll(list5);
        List<String> list7 = new ArrayList<>(stringSet);
        //去除停用词
        List<String> list6 = com.colorbin.rpa.c_magic_ai.c02_nlp.nlpUtil.removeStopWords(list7);
        for (String str1 : list6) {
            System.out.println(str1);
        }

原理:

要在java中实现命名实体识别(ner)模型,可以使用开源的自然语言处理库stanford corenlp。以下是使用stanford corenlp实现ner的步骤:

1.安装和配置stanford corenlp:下载stanford corenlp并解压缩文件。配置java类路径以包含corenlp库,并启动corenlp服务器。

2.预处理文本:对输入文本进行预处理,如拆分成句子和标记化。这可以通过corenlp服务器上的rest api完成,或者通过编写java代码使用stanford corenlp提供的函数来实现。

3.训练ner模型:可以从头开始制作ner模型,但是stanford corenlp提供了预先训练好的模型,您可以直接使用它们。如果需要自定义模型,可以提供一个培训集合和一个xml配置文件,其中指定了要使用哪些特征和算法。

4.运行模型:使用corenlp服务器上的rest api或调用corenlp提供的java函数运行模型,并将结果输出到新文件或同一文件的新列中。

5.评估模型:评估模型的精度并根据需要对其进行微调,以达到所需的准确性水平。

以上是使用stanford corenlp实现ner的基本步骤。此外,还可以考虑使用其他开源工具,如opennlp或nltk。

在这里插入图片描述
hannlp是一个由中国清华大学自然语言处理与社会人文计算实验室开发的中文自然语言处理工具包。它旨在帮助用户快速进行各种自然语言处理任务,如中文分词、命名实体识别、依存句法分析、情感分析等等。

hannlp提供了基于java语言的api接口,可以方便地嵌入到java应用程序中。它还提供了python api和命令行界面,因此也可以方便地在python环境或终端上使用。

hannlp的主要特点包括:

1.高质量的中文自然语言处理:hannlp在中文自然语言处理方面表现出色,可以有效地解决复杂的自然语言处理问题。

2.广泛的自然语言处理功能:hannlp支持许多自然语言处理任务,包括分词、词性标注、命名实体识别、依存句法分析、情感分析等。

3.易于使用的api:hannlp的java api非常易于使用,开发者可以轻松地将其集成到自己的java应用程序中。

4.可定制性强:hannlp的用户可以根据自己的需求对其进行定制,以达到更好的性能。

5.开源且持续更新:hannlp是完全开源的,由清华大学自然语言处理与社会人文计算实验室维护和更新。

总之,hannlp是一个功能强大、易于使用且高度可定制的中文自然语言处理工具包,值得开发者选择和尝试。

在这里插入代码片

> 使用HanLP中的NER模型进行实体识别可以按照以下步骤进行: 
 
1. 首先,需要导入HanLP和NER模型所需的依赖项。可以在以下网址下载模型文件和HanLP的jar包:https://github.com/hankcs/HanLP/releases 
 
2. 创建一个 CRFSegment 对象,并加载NER模型文件。代码如下:
import com.hankcs.hanlp.HanLP;
   import com.hankcs.hanlp.model.crf.CRFLexicalAnalyzer;
   import java.io.IOException;
   
   public class NER {
       public static void main(String[] args) throws IOException {
           String model = "D:/hanlp-model/ner/custom/ner-custom-model.crf"; // 下载的NER模型文件路径
           CRFLexicalAnalyzer analyzer = new CRFLexicalAnalyzer(model);
           String text = "据中国之声报道,10月22日,tiktok公司表示,他们正与美国政府就tiktok在美业务进行“建设性会谈”";
           System.out.println(analyzer.analyze(text));
           analyzer.close();
       }
   }
3. 其中, ner-custom-model.crf 是自定义的NER模型文件路径。在上述示例中,我们使用了一个带有自定义标签的NER模型。如果您使用的是HanLP内置的NER模型,可以使用以下代码:
import com.hankcs.hanlp.HanLP;
   import com.hankcs.hanlp.model.crf.CRFLexicalAnalyzer;
   import com.hankcs.hanlp.model.crf.NERecognizer;
   import java.io.IOException;
   
   public class NER {
       public static void main(String[] args) throws IOException {
           CRFLexicalAnalyzer analyzer = new CRFLexicalAnalyzer();
           String text = "据中国之声报道,10月22日,tiktok公司表示,他们正与美国政府就tiktok在美业务进行“建设性会谈”";
           NERecognizer recognizer = new NERecognizer(analyzer);
           String result = recognizer.recognize(text);
           System.out.println(result);
           analyzer.close();
       }
   }
在上述示例中,我们使用了内置的NER模型和 NERecognizer 对象。 
 
   在这两个示例中,我们将要识别的文本输入到 analyzer.analyze(text) 方法中,然后使用 System.out.println(result) 打印包含识别实体的文本。 
 
4. 运行代码,并查看输出结果。识别出的实体将被包含在括号中。对于上述示例,输出结果如下:
据 中国 之声 报道 , 1022 日 , tiktok 公司 表示 , 他们 正 与 美国 政府 就 tiktok 在 美 业务 进行 “ 建设性 会谈 ”
在此示例中,“中国之声”和“tiktok”被成功识别为组织实体。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/470648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

完整数据分析体系概述

一、建设的出发点 满足业务需求&#xff0c;是建设数据分析体系的出发点&#xff0c;也是最终目的和最高要求。要注意的是&#xff0c;“业务需求”并没有统一的标准。不同部门&#xff0c;不同身份的人&#xff0c;需求是不一样的。从大的方面看&#xff0c;可以分作三个层级…

用户界面对象的线程亲缘性第一篇: 窗口

不同的对象具有不同的线程亲缘性规则&#xff0c;但其基本原则来自古老的 16 位 Windows。 在 Windows 系统上&#xff0c;最重要的用户界面对象当然是窗口了。窗口对象有它自己的线程亲缘性。创建窗口的线程是与窗口具有不可分割关系的线程。非正式地说&#xff0c;线程”拥有…

Pytorch激活函数最全汇总

为了更清晰地学习Pytorch中的激活函数&#xff0c;并对比它们之间的不同&#xff0c;这里对最新版本的Pytorch中的激活函数进行了汇总&#xff0c;主要介绍激活函数的公式、图像以及使用方法&#xff0c;具体细节可查看官方文档。 目录 1、ELU 2、Hardshrink 3、Hardsigmoid…

分屏视图上线,详情数据秒切换

分屏视图 路径 表单 >> 表单设计 功能简介 新增「分屏视图」。分屏视图是一种对数据阅读提供沉浸式体验的视图组织形式&#xff0c;用户可通过分屏视图更快速的查看数据详情。 使用场景&#xff1a; 对于数据类型是「订单」数据的表单&#xff0c;管理人员往往会对…

pandas的使用

Pandas 的使用 **介绍:**pandas 是 python 语言的的一个关于数据分析的扩展库&#xff1b;pandas 可以对各种数据进行操作, pandas 依赖于 numpy &#xff0c;在常规的数据分析中&#xff0c;pandas 的使用范围是最宽广的; 参考文章:https://www.runoob.com/pandas/pandas-tu…

VScode安装问题

1、编译运行的时候会产生正在启动生成… D:\install\vscode\vscode&MinGW\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gcc.exe -fdiagnostics-coloralways -g D:\install\vscode\Folder\hello.c -o D:\install\vscode\Folder\hello.exe ‘D:\install\vscode\…

服务端实时推送技术之SSE(Server-Send Events)

文章目录 前言一、解决方案&#xff1a;1、传统实时处理方案&#xff1a;2、HTML5 标准引入的实时处理方案&#xff1a;3、第三方推送&#xff1a; 二、SSE&#xff1a;1、客户端&#xff1a;2、服务端&#xff1a; 三、业务实践&#xff1a;总结&#xff1a; 前言 服务端推送…

JavaWeb之过滤器Filter

今天开发遇到了&#xff0c;简单记录一下&#xff01; 简介&#xff1a;Filter是JavaWeb三大组件之一&#xff08;Servlet程序、Listener监听器、Filter过滤器&#xff09; 作用&#xff1a;既可以对请求进行拦截&#xff0c;也可以对响应进行处理。 1、Filter中的三个方法 …

人类 vs AI:玩梗大作战,看看谁是最后的赢家?

能解释人类玩梗的 AI 究竟能多大程度地理解人类的「梗」&#xff1f; 五一假期就在眼前&#xff0c;LigaAI 小编每天都在「调休好烦」和「快放假啦」两种情绪间反复横跳&#xff0c;还会忍不住思考「AI 能不能理解调休和放假的情绪差异&#xff1f;」&#xff08;一些精神世界高…

xilinx block design address editor 计算

xilinx block design address editor 计算 1k 0x000 ~ 0x3ff 10bit 1m 00000 ~ FFFFF 20bit 每个pcie 配置空间有4k 【11:0】 PCIe 配置空间 (PCIe Configuration Space) PCIe Spec中定义&#xff1a;每个PCIe Function都有 4096 Byte 的配置空间(Configuration Space)。前256…

基于机器学习的纠错系统技术 - 智能文本纠错 API

引言 在过去的几十年里&#xff0c;文本纠错技术已经取得了巨大的进展&#xff0c;从最初的基于规则的纠错系统到现在的基于机器学习的纠错系统&#xff0c;技术的发展已经帮助人们解决了大量的文本纠错问题&#xff0c;随着机器学习技术的发展&#xff0c;文本纠错技术也发生…

WINCC 趋势判断

项目函数 //状态: //稳定 2 //稳定 //递增 -1 //无序 0 //波动 //递减 1 int ordered(double *Trend_data, int Trend_len) {int Trend_out 0,Order 0;if (Trend_len 1){return 2;}Trend_out (Trend_data[0] < Trend_data[1]) - (Trend_data[0] > Trend_da…

input 各类事件汇总触发时机触发顺序

今天梳理了一下input框的各类事件&#xff0c;简单介绍一下吧 目录 1.click 2.focus 3.blur 4.change 5.input 6.keydown 7.keyup 8.select 1.click 点击事件&#xff0c;简单易理解&#xff0c;点击触发&#xff0c;等下跟focus事件一起比较 2.focus 获取焦点事件…

新能源行业雨水除铊,污水中铊超标的解决方法

锂电行业的发展会带动相关产业的发展&#xff0c;例如锂电池原材料和生产设备的制造、电池回收和处理等&#xff0c;这些产业的发展可能也会带来铊排放问题。除了锂电池生产过程中可能存在的铊污染外&#xff0c;企业的生活污水也可能含有铊&#xff0c;因为铊是一种广泛存在于…

Java面试题总结 | Java面试题总结6-MYSQL模块(持续更新)

Mysql 文章目录 Mysql关系型数据库和非关系型数据库的区别什么是ORM?-**mybatis**如何评估一个索引创建的是否合理&#xff1f;Count函数执行效果上&#xff1a;执行效率上&#xff1a;count(主键)和count(列名) 数据库的三大范式Mysql中char和varchar的区别数据库设计或者功能…

【科普知识】电机的10种工作制说明:S1~S10

如今&#xff0c;在我们的生活中&#xff0c;电机几乎无处不在&#xff0c;从国防、工农、运输、临床器械、通讯到生活中的洗衣机、风扇、吸尘器、电动机器人等&#xff0c;都在应用着各式各样的电动机。 电机作为一种能够将电能转换成机械能的装置&#xff0c;是现代工业生产和…

Elisp之检测函数运行时,在它之前执行别的程序(六)

公众号&#xff1a;Android系统攻城狮 简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&am…

OpenGLES 实验室之2D篇 第三弹 の 直播白板

本文字数&#xff1a;4555字 预计阅读时间&#xff1a;12分钟 笔者之前发表的音视频文章&#xff0c;有图像的处理&#xff0c;音频的重采样等等&#xff0c;都属于入门级别。通过阅读它们&#xff0c;读者能对音视频有了了解。可在 Gitee 上面回顾。 2023 年&#xff0c;笔者将…

如何使用depcheck检查vue和react的依赖,以后不用把时间浪费在依赖问题上了

当我们在开发 JavaScript 项目时&#xff0c;会引入各种依赖库。但是有些依赖库可能只用到了部分功能&#xff0c;或者已经不再需要了&#xff0c;但是却一直被保留在项目中。 这些未使用的依赖库会占据项目的空间&#xff0c;增加项目的复杂度&#xff0c;影响项目的性能。为…

Elasticsearch --- 索引库、文档操作

一、索引库操作 索引库就类似数据库表&#xff0c;mapping映射就类似表的结构。 我们要向es中存储数据&#xff0c;必须先创建“库”和“表”。 1.1、mapping映射属性 mapping是对索引库中文档的约束&#xff0c;常见的mapping属性包括&#xff1a; type&#xff1a;字段数据…