当前位置: 首页 > news >正文

自然语言处理应用程序设计

原文地址:https://zhanghan.xyz/posts/22426/

文章目录

  • 一、摘要
  • 二、数据集
  • 三、相关环境
  • 四、功能展示
      • 1.系统主界面
      • 2.中文分词
      • 3.命名实体识别
      • 4.文本分类
      • 5.文本聚类
      • 6.其他界面
  • 五、源码链接

一、摘要

将自然语言处理课程设计中实现的模型集成到自然语言处理应用程序中,作为系统的功能模块。集成的模型包括分词、命名实体识别、文本分类、文本聚类等方面的内容。该综合程序使用PyQT5和Qt Designer进行界面开发。PyQT5是Python语言的Qt框架的Python绑定库,可以快速、方便地开发GUI应用程序。Qt Designer是Qt的可视化界面设计工具,可以帮助开发人员快速创建用户界面。

二、数据集

训练数据:我们使用MSR语料库,以及搜狗文本分类语料库,人民日报1998语料库等。
测试数据:使用搜狗实验室的新闻数据集。

三、相关环境

Python3.7和JDK1.8
Pyqt5 + Qtdesigner

四、功能展示

1.系统主界面

在这里插入图片描述
系统主界面主要由三部分构成:
① 功能选择区:有四个功能选择按钮,可以点击选择功能,包括分词、命名实体识别、文本分类、文本聚类四个功能,选择功能后子界面区也会跟随功能变化。
② 子界面区:子界面区和功能一一对应,包括分词、命名实体识别、文本分类、文本聚类四个子界面,子界面根据功能不同布局和组件也各不相同,后续会详细介绍。
③ 日志输出区:这里会显示部分操作日志,用来提示使用者。

2.中文分词

这里我们使用的是隐马尔可夫模型进行中文分词,隐马尔可夫模型是马尔可夫链的一种,它的状态不能直接观察到,但能通过观测向量序列观察到,每个观测向量都是通过某些概率密度分布表现为各种状态,每一个观测向量是由一个具有相应概率密度分布的状态序列产生。所以,隐马尔可夫模型是一个双重随机过程----具有一定状态数的隐马尔可夫链和显示随机函数集。
点击选择中文分词界面之后,系统界面如下所示:
在这里插入图片描述
可以在字体设置中选择下方显示的字体类型,在输入框输入需要进行分词的文本之后,点击运行按钮,运行完成之后可以在下方分词结果的输出框中进行查看。
在这里插入图片描述

3.命名实体识别

这部分我们一共部署了以下三种模型:
① 基于隐马尔可夫模型序列标注的命名实体识别
基于隐马尔可夫模型(Hidden Markov Model,HMM)序列标注的命名实体识别是一种常见的命名实体识别方法。HMM本质上是一种生成式模型,可以通过对文本序列的统计分析来学习实体的上下文信息,并通过序列标注方法对实体进行识别。
② 基于感知机序列标注的命名实体识别
基于感知机序列标注的命名实体识别是一种常见的命名实体识别方法,其主要思想是通过机器学习算法学习实体的特征,并根据这些特征对文本中的实体进行识别。感知机是一种二分类模型,可以用于处理输入向量和输出标签之间的关系,它可以通过迭代算法不断调整权值和阈值,最终得到一个最优的分类模型。
③ 基于条件随机场序列标注的命名实体识别
基于条件随机场(Conditional Random Field, CRF)序列标注的命名实体识别是一种常见的命名实体识别方法。CRF是一种判别式模型,可以利用输入特征和输出标签之间的关系来学习实体的上下文信息,从而实现对文本中实体的识别和标注。
点击选择命名实体识别界面之后,系统界面如下所示:
在这里插入图片描述
可以在子界面中选择使用的模型,在输入框输入需要进行命名实体识别的文本之后,点击运行按钮,运行完成之后可以在下方命名实体识别结果的输出框中进行查看。
在这里插入图片描述

4.文本分类

这部分我们一共部署了以下两种模型:
① 朴素贝叶斯分类器
在各种各样的分类器中,朴素贝叶斯法( naive Bayes)可算是最简单常用的一种生成式模型。朴素贝叶斯法基于贝叶斯定理将联合概率转化为条件概率,然后利用特征条件独立假设简化条件概率的计算。
② 线性支持向量机进行文本分类
支持向量机( Support Vector Machine, SVM)是一种二分类模型,其学习策略在于如何找出一个决策边界,使得边界到正负样本的最小距离都最远。这种策略使得支持向量机有别于感知机,能够找到一个更加稳健的决策边界。支持向量机最简单的形式为线性支持向量机,其决策边界为一个超平面,适用于线性可分数据集。
点击选择文本分类界面之后,系统界面如下所示:
在这里插入图片描述
可以在子界面中选择使用的模型,在输入框输入需要进行文本分类的文本之后,点击运行按钮,运行完成之后,下方的文本分类结果块会变成绿色,测试结果如下所示。在这里插入图片描述

5.文本聚类

这部分我们一共部署了以下两种算法:
① k-means实现文本聚类
首先加载停用词表和文本数据,然后使用jieba库对每个文本进行分词,并去除停用词和低频词。接着,它使用sklearn库中的TfidfVectorizer类对每个文本的词袋进行向量化,得到一个 TF-IDF 矩阵。最后,它使用sklearn库中的KMeans类对 TF-IDF 矩阵进行聚类,得到每个文本所属的聚类,并输出结果。
② 基于层次聚类算法(Agglomerative Clustering)
基于层次聚类算法使用了sklearn库中的Agglomerative
Clustering类来实现层次聚类算法。它的参数n_clusters指定聚类数目,linkage指定链接方式,这里使用的是 ‘ward’ 链接方式,是一种基于方差的链接方式。
点击选择文本聚类界面之后,系统界面如下所示:
在这里插入图片描述
可以在子界面中选择使用的分类器,在输入聚类数量之后,点击上传文件,选择需要进行文本聚类的txt文件,txt文件中包含多条文本数据,点击运行按钮进行聚类,运行完成之后,右上方会显示多个聚类结果的txt文件列表,点击文件名称可以在下方进行查看,左下方会显示不同类别的关键词,运行示例如下:
在这里插入图片描述

6.其他界面

在这里插入图片描述
在这里插入图片描述

五、源码链接

https://gitee.com/zhgn2020814/nlp-Applications.git

相关文章:

自然语言处理应用程序设计

原文地址:https://zhanghan.xyz/posts/22426/ 文章目录 一、摘要二、数据集三、相关环境四、功能展示1.系统主界面2.中文分词3.命名实体识别4.文本分类5.文本聚类6.其他界面 五、源码链接 一、摘要 将自然语言处理课程设计中实现的模型集成到自然语言处理应用程序…...

LeetCode 436. Find Right Interval【排序,二分;双指针,莫队】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

正则表达式 —— Sed

Sed Sed 类似于vim就是一个文本编辑器,按行来进行编辑和排序 Sed的原理:读取,执行,显示 读取:读取文本内容之后,读取到的内容存放到临时的缓冲区—模式空间 执行:在模式空间,根据…...

TypeScript中数组,元组 和 枚举类型

数组 方式一 let arr: number[] [1, 2, 3, 4]方式二&#xff0c;使用泛型定义 let arr: Array<number> [1, 2, 3, 4]方式三&#xff0c;使用any let arr: any[] [12, string, true] console.log(arr[1]) // string元组 可以定义不同类型定义类型顺序需保持一直 …...

MyBatis-Plus-Join 多表查询的扩展

文章目录 网站使用方法安装使用Lambda形式用法&#xff08;MPJLambdaWrapper&#xff09;简单的连表查询一对多查询 网站 官方网站&#xff1a;https://mybatisplusjoin.com/Github地址&#xff1a;https://github.com/yulichang/mybatis-plus-joinGitee地址&#xff1a;https…...

认清现实重新理解游戏的本质

认清现实重新理解游戏的本质 OVERVIEW 认清现实重新理解游戏的本质现实两条小路的启发四个动机1.当前的学习任务或工作任务太艰巨2.完美主义3.对未来太过于自信/无知4.大脑小看未来的收益 四个方法1.让未来的收益足够巨大2.让未来的收益感觉就在眼前3.玩游戏有恶劣的结果4.玩游…...

LeetCode 2050. Parallel Courses III【记忆化搜索,动态规划,拓扑排序】困难

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

ETHERNET/IP转RS485/RS232网关什么是EtherNet/IP?

网络数据传输遇到的协议不同、数据互通麻烦等问题&#xff0c;一直困扰着大家。然而&#xff0c;现在有一种神器——捷米JM-EIP-RS485/232&#xff0c;它将ETHERNET/IP网络和RS485/RS232总线连接在一起&#xff0c;让数据传输更加便捷高效。 那么&#xff0c;它是如何实现这一功…...

使用node内置test runner,和 Jest say 拜拜

参考 https://nodejs.org/dist/latest-v20.x/docs/api/test.html#test-runner 在之前&#xff0c;我们写单元测试&#xff0c;必须安装第三方依赖包&#xff0c;而从node 20.0.0 版本之后&#xff0c;可以告别繁琐的第三方依赖包啦&#xff0c;可直接使用node的内置test runner…...

《面试1v1》Kafka的架构设计是什么样子

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…...

比较常见CPU的区别:Intel、ARM、AMD

一、开发公司不同 1、Intel&#xff1a;是英特尔公司开发的中央处理器&#xff0c;有移动、台式、服务器三个系列。 2、ARM&#xff1a;是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。 3、AMD&#xff1a;由AMD公司生产的处理器。 二、技术不同 1、Intel&…...

CAN转EtherNet/IP网关can协议是什么意思

你是否曾经遇到过不同的总线协议难以互相通信的问题&#xff1f;远创智控的YC-EIP-CAN网关为你解决了这个烦恼&#xff01; 远创智控YC-EIP-CAN通讯网关是一款自主研发的设备&#xff0c;它能够将各种CAN总线和ETHERNET/IP网络连接起来&#xff0c;解决不同总线协议之间的通信…...

java可变字符序列:StringBuffer、StringBuilder

文章目录 StringBuffer与StringBuilder的理解StringBuilder、StringBuffer的API StringBuffer与StringBuilder的理解 因为String对象是不可变对象&#xff0c;虽然可以共享常量对象&#xff0c;但是对于频繁字符串的修改和拼接操作&#xff0c;效率极低&#xff0c;空间消耗也…...

Mac/win开发快捷键、vs插件、库源码、开发中的专业名词

目录 触控板手势&#xff08;2/3指&#xff09; 鼠标右键 快捷键 鼠标选择后shift⬅️→改变选择 mac command⬅️&#xff1a;删除←边的全部内容 commadtab显示下栏 commandshiftz向后撤回 commandc/v复制粘贴 command ⬅️→回到行首/末 commandshift3/4截图 飞…...

linux 系统编程

C标准函数与系统函数的区别 什么是系统调用 由操作系统实现并提供给外部应用程序的编程接口。(Application Programming Interface&#xff0c;API)。是应用程序同系统之间数据交互的桥梁。 一个helloworld如何打印到屏幕。 每一个FILE文件流&#xff08;标准C库函数&#xff…...

Python策略模式介绍、使用方法

一、Python策略模式介绍 Python策略模式&#xff08;Strategy Pattern&#xff09;是一种软件设计模式&#xff0c;用于通过将算法封装为独立的对象&#xff0c;而使得它们可以在运行时动态地相互替换。该模式使得算法的变化独立于使用它们的客户端&#xff0c;从而达到代码的…...

城市气象数据可视化:洞察气候变化,构建智慧城市

随着城市化进程的加速&#xff0c;城市气象数据的采集和分析变得越来越重要。气象数据不仅影响着人们的生活和出行&#xff0c;还与城市的发展和规划息息相关。在数字化时代&#xff0c;如何将城市中各个气象数据进行可视化&#xff0c;让复杂的数据变得简单易懂&#xff0c;成…...

Rust-IO

use std::io::Write; fn main() {/*std::io::stdin() 返回标准输入流stdin的句柄。read_line() stdin的句柄的一个方法&#xff0c;从标准输入流中读取一行数据返回一个Result枚举。会自动删除行尾的换行符\n。unwrap() 是一个帮助的方法&#xff0c;简化恢复错误的处理。返回R…...

cp -r 源目录 目标目录

在Linux中&#xff0c;要复制目录可以使用cp命令。cp命令用于复制文件和目录。要复制整个目录及其内容&#xff0c;可以使用 -r 或 --recursive 参数来递归地复制目录。以下是示例命令&#xff1a;bash cp -r 源目录 目标目录其中&#xff1a; 源目录是要复制的目录的路径。目…...

redis之Bitmap

位图数据结构其实并不是一个全新的玩意&#xff0c;我们可以简单的认为就是个数组&#xff0c;只是里面的内容只能为0或1而已(二进制位数组)。 GETBIT用于返回位数组在偏移量上的二进制位的值。值得我们注意的是&#xff0c;GETBIT的时间复杂度是O(1)。 GETBIT命令的执行过程如…...

建设数据中台到底有啥用?

最近专注在数据和人工智能领域&#xff0c;从数据仓库、商业智能、主数据管理到大数据平台的建设&#xff0c;经过很多项目的沉淀和总结&#xff0c;最后我和团队一起总结了精益数据创新的体系。一直战斗在企业信息化一线。 企业为什么要建设数据中台&#xff0c;数据中台对于…...

[运维|系统] Centos设置本地编码

以下是在CentOS上更改系统编码的一般步骤&#xff1a; 使用locale命令查看当前的系统编码&#xff1a; locale如果需要更改系统编码&#xff0c;可以使用类似下面的命令来生成相应的locale设置&#xff08;以UTF-8为例&#xff09;&#xff1a; sudo localedef -i en_US -f …...

深入探索Python中的os.listdir函数

深入探索Python中的os.listdir函数 1. 引言 在Python中&#xff0c;文件和目录操作是常见的任务之一。而os.listdir()函数是Python中用于获取指定目录下所有文件和子目录的函数之一。本篇博客将深入探索os.listdir()函数的用法和注意事项。 2. os模块简介 Python的os模块是…...

ROS1ROS2之CmakeList.txt和package.xml用法详解

前言&#xff1a;目前还在学习ROS无人机框架中&#xff0c;&#xff0c;&#xff0c; 更多更新文章详见我的个人博客主页【前往】 文章目录 1. CMakeLists.txt与package.xml的作用2. 生成CMakeLists.txt2.1 ROS12.2 ROS2 3. CMakeLists.txt编写3.1 ROS13.2 ROS2 4. package.xml…...

C#设计模式之---适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09; 适配器模式&#xff08;Adapter Pattern&#xff09;也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。适配器模式是一种结构型模式&#xff0c;一个适配使得因接口不兼容而不能在一起工作的类工作在一起…...

串口设备驱动

文章目录 一、串口简介二、Linux下串口驱动框架uart_driver 结构体uart_port 的添加与移除三、Linux下串口驱动工作流程四、Linux下串口应用开发终端工作模式多线程例程一、串口简介 串口全称叫做串行接口,通常也叫做 COM 接口,串行接口指的是数据一个一个的顺序传输,通信线…...

Nginx实现反向代理和负载均衡

Nginx安装 本文章主要介绍下&#xff0c;如何使用Nginx来实现反向代理和负载均衡&#xff0c;Nginx安装和基础知识&#xff0c;可参考我的这篇文章 Nginx安装。 Nginx实现反向代理 实现反向代理需要准备两台Nginx服务器。一台Nginx服务器A&#xff0c;ip为 192.168.206.140&…...

小米手机MIUI优化的影响

1. 小/红米手机的MIUI优化选项 2. MIUI优化选项的影响 2.1 MIUI优化会影响应用信息展示 MIUI优化选项会影响到应用信息的内容展示&#xff0c;具体如下图所示&#xff1a; 如果我们需要在应用信息里展示自启动入口&#xff0c;那我们就需要开启MIUI优化。 2.2 MIUI优化会影…...

【图论】kruskal算法

一.介绍 Kruskal&#xff08;克鲁斯卡尔&#xff09;算法是一种用于解决最小生成树问题的贪心算法。最小生成树是指在一个连通无向图中&#xff0c;选择一棵包含所有顶点且边权重之和最小的树。 下面是Kruskal算法的基本步骤&#xff1a; 将图中的所有边按照权重从小到大进行…...

Django框架:使用channels实现websocket,配置和项目实际使用

一、基本配置 依赖包&#xff1a; Django3.2 django-cors-headers3.5.0 redis4.6.0 #操作redis数据库的 channels3.0.0 #websocket channels-redis4.1.0 #通道层需要&#xff0c;依赖redis包项目目录结构&#xff1a; study_websocket --study_websocket --__init__.py --s…...