Hanlp自然语言处理如何再Spring Boot中使用

一、HanLP

HanLP (Hankcs' NLP) 是一个自然语言处理工具包,具有功能强大、性能高效、易于使用的特点。HanLP 主要支持中文文本处理,包括分词、词性标注、命名实体识别、依存句法分析、关键词提取、文本分类、情感分析等多种功能。 HanLP 可以在 Java、Python、Go 等多种编程语言中使用,也提供了各种语言的 API 接口,方便用户进行二次开发。HanLP 采用了深度学习和传统机器学习相结合的方法,具有较高的准确度和通用性。

二、java中用HanLP做情感分词场景

首先,下载HanLP jar包。可以从官方网站(https://github.com/hankcs/HanLP/releases)下载或者使用Maven配置。

<dependency>
    <groupId>com.hankcs</groupId>
    <artifactId>hanlp</artifactId>
    <version>portable-1.7.8</version>
</dependency>

引入完成后,在代码中调用HanLP工具类的方法,例如:

import com.hankcs.hanlp.HanLP;

public class TestHanLP {
    public static void main(String[] args) {
        String text = "中华人民共和国成立了!";
        System.out.println(HanLP.segment(text));
    }
}

运行以上代码,可以得到分词结果:

[中华人民共和国, 成立, 了, !]

除了分词外,HanLP还提供了许多其他功能,例如实体识别、关键词提取、自动摘要等。可以通过调用不同的方法来实现这些功能,具体可参考HanLP官方文档(https://github.com/hankcs/HanLP)。

需要注意的是,HanLP默认使用的是繁体中文模型,如果需要使用简体中文模型,可以在代码中添加以下语句:

HanLP.Config.enableDebug();
HanLP.Config.Normalization = true;

这样就可以使用简体中文模型进行处理了。

三、SpringBoot中如何使用Hanlp进行文本情感分析

        第一步:

                在pom.xml文件中添加Hanlp的依赖

<dependency>
    <groupId>com.hankcs</groupId>
    <artifactId>hanlp</artifactId>
    <version>portable-1.7.8</version>
</dependency>

        第二步:

                创建一个SpringBoot的Controller,用于接收文本数据,并进行情感分析

@RestController
public class SentimentAnalysisController {

    @PostMapping("/sentimentAnalysis")
    public String sentimentAnalysis(@RequestBody String text) {
        String[] sentences = HanLP.extractSentence(text);
        int positiveCount = 0;
        int negativeCount = 0;
        for (String sentence : sentences) {
            List<String> keywords = HanLP.extractKeyword(sentence, 5);
            for (String keyword : keywords) {
                if (SentimentUtil.isPositive(keyword)) {
                    positiveCount++;
                } else if (SentimentUtil.isNegative(keyword)) {
                    negativeCount++;
                }
            }
        }
        if (positiveCount > negativeCount) {
            return "Positive";
        } else if (positiveCount < negativeCount) {
            return "Negative";
        } else {
            return "Neutral";
        }
    }
}

        第三步:

                上述代码中用到了SentimentUtil类,可以参考以下实现,用于判断一个词语的情感倾向

public class SentimentUtil {

    private static final Set<String> POSITIVE_WORDS = new HashSet<>(Arrays.asList("好", "美", "乐", "棒", "赞", "爱", "优秀", "高兴", "满意", "友好", "感动"));

    private static final Set<String> NEGATIVE_WORDS = new HashSet<>(Arrays.asList("坏", "丑", "难受", "差", "批评", "悲", "痛苦", "愤怒", "失望", "憎恶", "恐惧", "忧郁", "抱怨"));

    public static boolean isPositive(String word) {
        return POSITIVE_WORDS.contains(word);
    }

    public static boolean isNegative(String word) {
        return NEGATIVE_WORDS.contains(word);
    }
}

最后:

启动SpringBoot应用,可以使用curl或其他工具,向http://localhost:8080/sentimentAnalysis发送POST请求,请求体为要进行情感分析的文本数据。返回结果可以是Positive、Negative或Neutral。

注意:上述代码仅仅是示例代码,可以根据具体的需求进行修改和优化。在实际使用中,也需要根据具体情况对Hanlp的功能进行扩展和调整。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Liunx Centos 防火墙操作

liunx centos 防火墙 查看防火墙状态 systemctl status firewalld查看已经开放的端口 firewall-cmd --list-ports添加端口3306 firewall-cmd --zonepublic --add-port3306/tcp --permanent重启防火墙 firewall-cmd --reload数据库开放账号可以外网登陆 mysql -u root -p …

2023-12-07 LeetCode每日一题(重新规划路线)

2023-12-07每日一题 一、题目编号 1466. 重新规划路线二、题目链接 点击跳转到题目位置 三、题目描述 n 座城市&#xff0c;从 0 到 n-1 编号&#xff0c;其间共有 n-1 条路线。因此&#xff0c;要想在两座不同城市之间旅行只有唯一一条路线可供选择&#xff08;路线网形成…

Leetcode2008. 出租车的最大盈利

Every day a Leetcode 题目来源&#xff1a;2008. 出租车的最大盈利 解法1&#xff1a;排序 二分查找 动态规划 将数组 rides 按照 endi 从小到大进行排序&#xff0c;记 m 为 rides 的大小&#xff0c;dp1 表示只接区间 [0,i] 内的乘客的最大盈利&#xff0c;显然 dp0 …

Retrofit嵌套请求与适配器

一、前言&#xff1a; 1. retrofit嵌套请求 在实际开发中&#xff0c;可能会存在&#xff1a;需要先请求A接口&#xff0c;在请求B接口的情况&#xff0c;比如进入“玩android”网页请求获取收藏文章列表&#xff0c;但是需要先登录拿到Cookie才能请求搜藏文章几口&am…

细讲结构体

结构体是一些值的集合&#xff0c;这些值就是成员变量&#xff0c;这些变量可以是不同类型的。 当我们存放一个学生的信息是&#xff0c;包括性别&#xff0c;姓名&#xff0c;学号&#xff0c;年龄等内容&#xff0c;这些值是不同类型的&#xff0c;这是我们就可以使用结构体来…

深度解析 Kafka 消息保证机制

Kafka作为分布式流处理平台的重要组成部分&#xff0c;其消息保证机制是保障数据可靠性、一致性和顺序性的核心。在本文中&#xff0c;将深入探讨Kafka的消息保证机制&#xff0c;并通过丰富的示例代码展示其在实际应用中的强大功能。 生产者端消息保证 1 At Most Once &quo…

力扣78. 子集(java 回溯解法)

Problem: 78. 子集 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 我们易知&#xff0c;本题目涉及到对元素的穷举&#xff0c;即我们可以使用回溯来实现。对于本题目我们应该较为注重回溯中的决策阶段&#xff1a; 由于涉及到对数组中元素的穷举&#xff0c;即在每…

HDFS Java API 基本操作实验

文章目录 一、实验环境二、实验内容&#xff08;一&#xff09;数据准备&#xff08;二&#xff09;编程环境准备&#xff08;三&#xff09;使用Hadoop API操作HDFS文件系统&#xff08;四&#xff09;使用Hadoop API Java IO流操作HDFS文件系统 三、实验步骤&#xff08;一&…

EG网关串口连接威纶通触摸屏应用案例

EG网关串口连接威纶通触摸屏应用案例 威纶通触摸屏广泛应于工业控制领域&#xff0c;是一款性能高&#xff0c;运行稳定的人机交互设备。此次我们要把威纶通的触摸屏通过Modbus-RTU协议连接EG系列网关&#xff0c;实现电脑Web页面和手机APP对威纶通触摸屏的远程数据采集和读取…

【开源】基于Vue.js的毕业生追踪系统

文末获取源码&#xff0c;项目编号&#xff1a; S 087 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S087。} 文末获取源码&#xff0c;项目编号&#xff1a;S087。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登陆注册模块2.2 学生基本配置模块2…

全光谱台灯对孩子眼睛好吗?备考护眼台灯推荐

全光谱台灯通常被认为对孩子的眼睛更好&#xff0c;因为它们能够提供更接近自然光的光谱。与传统的白炽灯或荧光灯相比&#xff0c;全光谱台灯能够提供更均匀、真实的光线&#xff0c;减少眼睛的疲劳和视觉疲劳。此外&#xff0c;全光谱台灯还可以提供更好的颜色还原&#xff0…

有爱的冬天不再冷——壹基金儿童温暖包抵达富平

12月6日&#xff0c;富平县帮帮乐公益协会组织志愿者在协会楼下分装了由爱心企业、个人捐赠的144个壹基金儿童温暖包&#xff0c;争取在下周寒流来临前送到困境儿童手中&#xff0c;温暖他们的整个冬天。 壹基金温暖包项目是针对6—12岁困境儿童、留守儿童设计的暖冬应急生活物…

Docker本地部署Drupal内容管理框架并实现公网远程访问

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址7. 结语 前言 Dupal是一个强大的CMS&#xff0c;适用于各种不同的网站项目&#xff0c;从小型个人博客到大型企业级门户网站。它…

Linux——进程状态

我们都知道进程信息被放到了PCB&#xff08;task_struct&#xff09;中&#xff0c;可以理解为进程属性的集合。 PCB中包含了进程的ID&#xff0c;时间片&#xff0c;pc指针&#xff0c;所有的寄存器&#xff0c;进程状态、优先级、I/O状态信息等等...有兴趣的可以去看看源码&…

vuepress路径问题,导致图片不显示

图片不显示&#xff0c;报 Uncaught SyntaxError: Unexpected token <错误 很可能就是&#xff1a;路径配置原因 1.当设置为 / 时&#xff0c;VuePress 会假设你的站点将部署到服务器的根路径&#xff0c; 例如 https://yourdomain.com/。 2.生成的页面链接和资源引用将以…

Linux内核上游提交完整流程及示例

参考博客文章&#xff1a; 向linux内核提交代码 - 知乎 一、下载Linux内核源码 通过git下载Linux内核源码&#xff0c;具体命令如下&#xff1a; git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 实际命令及结果如下&#xff1a; penghaoDin…

LLM之RAG实战(二):使用LlamaIndex + Metaphor实现知识工作自动化

最先进的大型语言模型&#xff08;LLM&#xff09;&#xff0c;如ChatGPT、GPT-4、Claude 2&#xff0c;具有令人难以置信的推理能力&#xff0c;可以解锁各种用例——从洞察力提取到问答&#xff0c;再到通用工作流自动化。然而&#xff0c;他们检索上下文相关信息的能力有限。…

使用Caliper对Fabric地basic链码进行性能测试

如果你需要对fabric网络中地合约进行吞吐量、延迟等性能进行评估&#xff0c;可以使用Caliper来实现&#xff0c;会返回给你一份网页版的直观测试报告。下面是对test-network网络地basic链码地测试过程。 目录 1. 建立caliper-workspace文件夹2. 安装npm等3. calipe安装4. 创建…

从线程间通信聊到阻塞队列

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 很多Java新手都对Reent…

C#科学绘图库ScottPlot

文章目录 安装和准备初步使用简单的设置 安装和准备 ScottPlot是基于.Net的一款开源免费的交互式可视化库&#xff0c;支持Winform和WPF等UI框架&#xff0c;本文示例在WPF环境中运行。在VS的菜单栏->工具->NuGet包管理器->管理解决方案的NuGet程序包->在浏览选项…