SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析

这篇具有很好参考价值的文章主要介绍了SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

. # 📑前言
本文主要是SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析,如果有什么需要改进的地方还请大佬指出⛺️

🎬作者简介:大家好,我是青衿🥇
☁️博客首页:CSDN主页放风讲故事
🌄每日一句:努力一点,优秀一点

SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析,spring boot,自然语言处理,easyui

目录


一、说明

自然语言处理已经进入大模型时代,然而从业人员必须了解整个知识体系、发展过程、知识结构,应用范围等一系列知识。本篇将报道此类概况。

二、自然语言处理简介

自然语言处理,或简称NLP,是处理和转换文本的计算机科学学科。它由几个任务组成,这些任务从标记化开始,将文本分成单独的意义单位,应用句法和语义分析来生成抽象的知识表示,然后再次将该表示转换为文本,用于翻译、问答或对话等目的。
SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析,spring boot,自然语言处理,easyui

三、Hanlp文本分类与情感分析基本概念

语料库

本文语料库特指文本分类语料库,对应IDataSet接口。而文本分类语料库包含两个概念:文档和类目。一个文档只属于一个类目,一个类目可能含有多个文档。

用Map描述

这种关系可以用Java的Map<String, String[]>来描述,其key代表类目,value代表该类目下的所有文档。用户可以利用自己的文本读取模块构造一个Map<String, String[]>形式的中间语料库,然后利用IDataSet#add(java.util.Map<java.lang.String,java.lang.String[]>)接口将其加入到训练语料库中。

用文件夹描述

这种树形结构也很适合用文件夹描述,即:

/**
 * 加载数据集
 *
 * @param folderPath  分类语料的根目录.目录必须满足如下结构:<br>
 *                    根目录<br>
 *                    ├── 分类A<br>
 *                    │   └── 1.txt<br>
 *                    │   └── 2.txt<br>
 *                    │   └── 3.txt<br>
 *                    ├── 分类B<br>
 *                    │   └── 1.txt<br>
 *                    │   └── ...<br>
 *                    └── ...<br>
 *

每个分类里面都是一些文本文档。任何满足此格式的语料库都可以直接加载。

数据集实现

考虑到大规模训练的时候,文本数量达到千万级,无法全部加载到内存中,所以本系统实现了基于文件系统的FileDataSet。同时,在服务器资源许可的情况下,可以使用基于内存的MemoryDataSet,提高加载速度。两者的继承关系如下:

SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析,spring boot,自然语言处理,easyui

训练

训练指的是,利用给定训练集寻找一个能描述这种语言现象的模型的过程。开发者只需调用train接口即可,但在实现中,有许多细节。

分词

目前,本系统中的分词器接口一共有两种实现: SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析,spring boot,自然语言处理,easyui

但文本分类是否一定需要分词?答案是否定的。 ​ 我们可以顺序选取文中相邻的两个字,作为一个“词”(术语叫bigram)。这两个字在数量很多的时候可以反映文章的主题(参考清华大学2016年的一篇论文《Zhipeng Guo, Yu Zhao, Yabin Zheng, Xiance Si, Zhiyuan Liu, Maosong Sun. THUCTC: An Efficient Chinese Text Classifier. 2016》)。这在代码中对应BigramTokenizer. ​ 当然,也可以采用传统的分词器,如HanLPTokenizer。 ​ 另外,用户也可以通过实现ITokenizer来实现自己的分词器,并通过IDataSet#setTokenizer来使其生效。

特征提取

特征提取指的是从所有词中,选取最有助于分类决策的词语。理想状态下所有词语都有助于分类决策,但现实情况是,如果将所有词语都纳入计算,则训练速度将非常慢,内存开销非常大且最终模型的体积非常大。
本系统采取的是卡方检测,通过卡方检测去掉卡方值低于一个阈值的特征,并且限定最终特征数不超过100万。

调参调参

对于贝叶斯模型,没有超参数需要调节。

训练

本系统实现的训练算法是朴素贝叶斯法,无需用户关心内部细节。另有一个子项目实现了支持向量机文本分类器,可供参考。由于依赖了第三方库,所以没有集成在本项目中。

模型

训练之后,我们就得到了一个模型,可以通过IClassifier#getModel获取到模型的引用。该接口返回一个AbstractModel对象,该对象实现了Serializable接口,可以序列化到任何地方以供部署。 ​ 反序列化后的模型可以通过如下方式加载并构造分类器: ​

NaiveBayesModel model = (NaiveBayesModel) IOUtil.readObjectFrom(MODEL_PATH);
NaiveBayesClassifier naiveBayesClassifier = new NaiveBayesClassifier(model); 

分类

通过加载模型,我们可以得到一个分类器,利用该分类器,我们就可以进行文本分类了。

IClassifier classifier = new NaiveBayesClassifier(model); 

目前分类器接口中与文本分类有关的接口有如下三种: ​

/**
 * 预测分类
 *
 * @param text 文本
 * @return 所有分类对应的分值(或概率, 需要enableProbability)
 * @throws IllegalArgumentException 参数错误
 * @throws IllegalStateException    未训练模型
 */
Map<String, Double> predict(String text) throws IllegalArgumentException, IllegalStateException;

/**
 * 预测分类
 * @param document
 * @return
 */
Map<String, Double> predict(Document document) throws IllegalArgumentException, IllegalStateException;

/**
 * 预测分类
 * @param document
 * @return
 * @throws IllegalArgumentException
 * @throws IllegalStateException
 */
double[] categorize(Document document) throws IllegalArgumentException, IllegalStateException;

/**
 * 预测最可能的分类
 * @param document
 * @return
 * @throws IllegalArgumentException
 * @throws IllegalStateException
 */
int label(Document document) throws IllegalArgumentException, IllegalStateException;

/**
 * 预测最可能的分类
 * @param text 文本
 * @return 最可能的分类
 * @throws IllegalArgumentException
 * @throws IllegalStateException
 */
String classify(String text) throws IllegalArgumentException, IllegalStateException;

/**
 * 预测最可能的分类
 * @param document 一个结构化的文档(注意!这是一个底层数据结构,请谨慎操作)
 * @return 最可能的分类
 * @throws IllegalArgumentException
 * @throws IllegalStateException
 */
String classify(Document document) throws IllegalArgumentException, IllegalStateException; 

classify方法直接返回最可能的类别的String形式,而predict方法返回所有类别的得分(是一个Map形式,键是类目,值是分数或概率),categorize方法返回所有类目的得分(是一个double数组,分类得分按照分类名称的字典序排列),label方法返回最可能类目的字典序。

情感分析

可以利用文本分类在情感极性语料上训练的模型做浅层情感分析。目前公开的情感分析语料库有:中文情感挖掘语料-ChnSentiCorp,语料发布者为谭松波。

接口与文本分类完全一致,请参考com.hankcs.demo.DemoSentimentAnalysis

四、具体流程

特征提取

本系统采取的是卡方检测,通过卡方检测去掉卡方值低于一个阈值的特征,并且限定最终特征数不超过100万。

SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析,spring boot,自然语言处理,easyui

SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析,spring boot,自然语言处理,easyui

训练

SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析,spring boot,自然语言处理,easyui

测试结果

SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析,spring boot,自然语言处理,easyui
HanLP Github地址:https://github.com/hankcs/HanLP

HanLP文档地址:https://hanlp.hankcs.com/docs/api/hanlp/pretrained/index.html

📑文章末尾

SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析,spring boot,自然语言处理,easyui文章来源地址https://www.toymoban.com/news/detail-752346.html

到了这里,关于SpringBoot进行自然语言处理,利用Hanlp进行文本情感分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【自然语言处理】利用 TextRank 算法提取关键词

    TextRank 是一种基于 PageRank 的算法,常用于提取和文本摘要。在本文中,我将通过一个提取示例帮助您了解 TextRank 如何工作,并展示 Python 的实现。 使用 TextRank、NER 等进行提取 关于 PageRank 的文章有很多,我只简单介绍一下 PageRank。这将有助于我们稍后理

    2024年02月05日
    浏览(62)
  • 自然语言处理入门:使用Python和NLTK进行文本预处理

    文章标题:自然语言处理入门:使用Python和NLTK进行文本预处理 简介 自然语言处理(NLP)是人工智能领域的一个重要分支,它致力于使计算机能够理解、分析和生成人类语言。本文将介绍如何使用Python编程语言和NLTK(Natural Language Toolkit)库进行文本预处理,为后续的文本分析

    2024年02月19日
    浏览(55)
  • R语言对医学中的自然语言(NLP)进行机器学习处理(1)

    什么是自然语言(NLP),就是网络中的一些书面文本。对于医疗方面,例如医疗记录、病人反馈、医生业绩评估和社交媒体评论,可以成为帮助临床决策和提高质量的丰富数据来源。如互联网上有基于文本的数据(例如,对医疗保健提供者的社交媒体评论),这些数据我们可以直接下载

    2024年02月04日
    浏览(46)
  • 用AI提升客户满意度:如何利用自然语言处理和人工智能技术改善客户服务流程

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着互联网技术的飞速发展,客户服务行业也在不断地变革和升级。为了提高客户满意度,降低客户流失率,很多企业开始关注客户服务流程的优化。 1.2. 文章目的 本文旨在介绍如何利用自然语言处理和人工智能技术来改善

    2024年02月07日
    浏览(77)
  • 自然语言处理:提取长文本进行文本主要内容(文本意思)概括 (两种方法,但效果都一般)

    本文主要针对长文本进行文本提取和中心思想概括,原文档放在了附件里面:科大讯飞公告 -----------------------------------方法一:jieba分词提取文本(句子赋分法)------------------------- 1、首先导入相关库并读取文档内容: 这里仅作演示所以只读取了文档的第一条数据文本,如果

    2024年02月10日
    浏览(48)
  • 自然语言处理实战项目19-基于ALBERT模型进行微调的项目-文本分类中的合同类型描述的分类

    大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目19-基于ALBERT模型进行微调的项目-文本分类中的合同类型描述的分类。本文中,我主要将探讨如何使用预训练的ALBERT模型进行微调,以解决文本分类问题,特别是对合同类型的分类。在ALBERT这个模型中,Google研究

    2024年02月07日
    浏览(70)
  • 【自然语言处理】自然语言处理 --- NLP入门指南

    NLP的全称是 Natuarl Language Processing ,中文意思是自然语言处理,是人工智能领域的一个重要方向 自然语言处理(NLP)的一个最伟大的方面是跨越多个领域的计算研究,从人工智能到计算语言学的多个计算研究领域都在研究计算机与人类语言之间的相互作用。它主要关注计算机

    2024年02月03日
    浏览(65)
  • [自然语言处理] 自然语言处理库spaCy使用指北

    spaCy是一个基于Python编写的开源自然语言处理库。基于自然处理领域的最新研究,spaCy提供了一系列高效且易用的工具,用于文本预处理、文本解析、命名实体识别、词性标注、句法分析和文本分类等任务。 spaCy的官方仓库地址为:spaCy-github。本文主要参考其官方网站的文档,

    2024年02月15日
    浏览(100)
  • 自然语言处理从入门到应用——自然语言处理的常见任务

    分类目录:《自然语言处理从入门到应用》总目录 语言模型(Language Model,LM)(也称统计语言模型)是描述自然语言概率分布的模型,是一个非常基础和重要的自然语言处理任务。利用语言模型,可以计算一个词序列或一句话的概率,也可以在给定上文的条件下对接下来可

    2024年02月07日
    浏览(66)
  • 自然语言编程系列(二):自然语言处理(NLP)、编程语言处理(PPL)和GitHub Copilot X

           编程语言处理的核心是计算机如何理解和执行预定义的人工语言(编程语言),而自然语言处理则是研究如何使计算机理解并生成非正式、多样化的自然语言。GPT-4.0作为自然语言处理技术的最新迭代,其编程语言处理能力相较于前代模型有了显著提升。Copilot X 构建于

    2024年02月20日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包