自然语言处理--基于HMM+维特比算法的词性标注

自然语言处理作业2--基于HMM+维特比算法的词性标注

一、理论描述

词性标注是一种自然语言处理技术,用于识别文本中每个词的词性,例如名词、动词、形容词等;

词性标注也被称为语法标注或词类消疑,是语料库语言学中将语料库内单词的词性按其含义和上下文内容进行标记的文本数据处理技术;

词性标注可以由人工或特定算法完成,使用机器学习方法实现词性标注是自然语言处理的研究内容。常见的词性标注算法包括隐马尔可夫模型条件随机场等;

词性标注是对文本进行语言学分析的重要工具,可以帮助计算机理解和处理自然语言文本。通过词性标注,计算机可以更准确地理解句子的结构和含义,从而实现诸如信息抽取、文本分类、句法分析等自然语言处理任务。它主要被应用于文本挖掘和NLP领域,是各类基于文本的机器学习任务(如语义分析、指代消解)的预处理步骤,是自然语言处理中一项非常重要的基础性工作。

二、算法描述

本文实现HMM+维特比算法,具体算法描述如下:

维特比算法是一种动态规划算法,通过计算每个观测节点的不同隐状态的最大概率,并记录路径,最终返回最大概率的路径

函数的输入参数包括观测序列的长度(observation_len)、隐含序列的长度(hidden_len)、初始概率(init_p)、转移概率矩阵(trans_p)和发射概率矩阵(emit_p)

函数首先创建两个二维数组max_probabilities和paths,用于存储每个观测节点的不同隐状态的最大概率和路径

然后,函数通过遍历第一个观测节点的每个隐状态,计算其最大概率,并记录路径。接着,函数遍历后续的每个观测节点,根据维特比算法的公式计算累计概率,得到每个隐状态的最大概率,并更新路径

最后,函数返回最大概率的路径

三、详细描述

以“Bear is move”为例,使用HMM+维特比算法进行词性标注的详细描述如下:

观测序列:['Bear', 'is', 'move']

隐序列:['AT', 'BEZ', 'IN', 'NN', 'VB', 'PERIOD']

输出:Bear/VB is/BEZ move/NN

初始概率:

AT

BEZ

IN

NN

VB

PERIOD

0.2

0.1

0.1

0.3

0.2

0.1

转移概率矩阵(已经进行数据平滑): 由当前词性转移到下一个词性的概率

AT

BEZ

IN

NN

VB

PERIOD

AT

2.05503381e-05

2.05503381e-05

2.05503381e-05

9.99506792e-01

2.05503381e-05

4.11006761e-04

BEZ

7.50570342e-01

3.80228137e-04

1.62357414e-01

7.14828897e-02

3.80228137e-04

1.48288973e-02

IN

6.97049170e-01

1.60895868e-05

2.13347921e-02

2.78591196e-01

1.60895868e-05

2.99266315e-03

NN

1.31783520e-02

4.59144641e-02

5.24061598e-01

1.45282693e-01

7.58865773e-03

2.63974236e-01

VB

4.33630846e-01

3.07033202e-03

3.39807212e-01

1.05462335e-01

9.28239914e-03

1.08746876e-01

PERIOD

5.33187018e-01

5.05453578e-03

3.09723331e-01

8.84543762e-02

6.35142325e-02

6.65070497e-05

发射概率矩阵(已进行数据平滑):由隐序列到观测序列的概率

Bear

is

move

AT

1.44877144e-05

1.44877144e-05

1.44877144e-05

BEZ

9.92752904e-05

9.99305073e-01

9.92752904e-05

IN

1.82083030e-04

1.82083030e-04

1.82083030e-04

NN

2.02205882e-02

1.83823529e-03

6.80147059e-02

VB

2.34042553e-01

5.31914894e-03

7.12765957e-01

PERIOD

2.04846672e-05

2.04846672e-05

2.04846672e-05

最大概率矩阵:

V0​(j)=init(jbj​(o0​) (init为初始概率,b发射概率矩阵)

Vt​(j)=max(Vt−1​(iaij​)×bj​(ot​) (a为转移概率矩阵,b为发射概率矩阵)

使用paths更新并保存j(观测状态)条路径取到最大概率时的i(隐状态),用于回溯

根据最大概率矩阵 max_probabilities,找到最后一个观测状态 "move" 对应的最大概率的隐状态,作为最终的词性标注结果

四、软件演示

五、问题和总结

  • 模型参数的选择会影响标注结果的准确性
  • 数据集较小,模型训练效果可能不够理想

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

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

相关文章

【Java-框架-SpringSecurity】单点登录(认证和授权)- 随笔

项目文件&#xff1b; 【1】 预览 文件 文件01 名称 pom.xml&#xff1b; 内容 &#xff08;01&#xff09;总的 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http:…

RFID标签是什么?该技术有哪些应用领域?

射频识别&#xff08;RFID&#xff09;技术利用电磁场&#xff0c;自动识别和跟踪附在物体上的标签&#xff0c;其中&#xff0c;近场通信&#xff08;NFC&#xff09;是一种基于短距离RFID高频技术的标准&#xff0c;支持13.56 MHz的频率。 NFC技术在现今的产品中应用广泛&am…

一文掌握全方位构建 ECS 安全体系的最佳方法

云布道师 2024 开年伊始&#xff0c;阿里云弹性计算团队全新推出新一季【ECS 安全季】&#xff0c;通过分享云上安全体系相关产品与最佳实践&#xff0c;让用户快速上手构建业务的安全防护能力。 首节课程《如何全方位构建 ECS 的安全体系》由阿里云弹性计算高级产品专家马小…

Python一些可能用的到的函数系列122 ATimer2

说明 由于时间处理在算网中起到了更重要的作用&#xff1a;不仅是进行时间计算&#xff0c;而是成为架构规范的一部分&#xff0c;因此需要对ATimer进行升级&#xff0c;成为一个基础依赖对象。 内容 1 设计 ATimer的作用更多的是进行即时计算&#xff0c;ATimer2将拓展为基…

关于软件0X00000007B的问题

对于0x0000007B问题相信大家一定都很头疼,编译好的软件在自己电脑上可以正常运行,更换一台电脑或许就无法正常运行.那么我们改怎么处理呢? 情况一:vs版本不一致导致的打不开软件 1方法一Windows日志查看软件运行失败的原因,一般都是dll版本不兼容引起的无法调用,解决方法 “”…

穿越网络边界:深入了解 FRP 内网穿透机制

前言 在当今互联网时代&#xff0c;内网穿透成为了解决内部网络服务对外难以访问的问题的一种重要方式。Fast Reverse Proxy&#xff08;FRP&#xff09;作为一款强大的反向代理工具&#xff0c;为用户提供了一种高效、灵活的内网穿透解决方案。本文将深入介绍 FRP 的原理和使…

java基础学习: 什么是泛型的类型擦除

文章目录 一、什么是泛型2、泛型编译前和编译后对比3、泛型的优点&#xff08;1&#xff09;提高了代码的复用性和可读性&#xff08;2&#xff09;提高了代码的安全性 二、泛型的定义1、泛型类2、泛型接口3、泛型方法 三、泛型通配符1、&#xff1f;和T有什么区别2、通配符的分…

喝汽水问题(c语言)

喝汽水&#xff0c;1瓶汽水1元&#xff0c;2个空瓶可以换一瓶汽水&#xff0c;给20元&#xff0c;可以喝多少汽水&#xff0c;这里用c语言来解释 可以先用列举法来说明&#xff0c;20可以买20个汽水&#xff0c;两个空瓶换一瓶就可以获得10个汽水&#xff0c;同理10个空瓶个可…

IDEA常用插件(本人常用,不全)

文章目录 一、图标提示类插件1、Lombok插件&#xff08;用户配合lombok依赖的工具&#xff09;2、MybatisX插件3、GitToolBox4、VUE.js5、ESLint 二、代码自动生成插件1、EasyCode插件&#xff1a;自动生成代码神器2、GsonFormat 三、常用工具类1、IDE Eval Reset 插件&#xf…

vector函数介绍与实现(迭代器失效)

目录 一、介绍vector 1.vector是什么 2.vector的特点 1.随机访问 2.缓存命中 3.vector的结构 二、vector的函数 1.构造函数&#xff08;创建&#xff09;​编辑 2.Iterator&#xff08;迭代器&#xff09; 3.Capacity&#xff08;容量&#xff09; 三、迭代器失效 …

数据库性能优化的解决方案

目录​​​​​​​ 1、什么是数据库性能优化 1.1 数据库性能优化的概念 1.2 为何需要进行数据库性能优化 1.3 数据库性能优化的好处 2、数据库性能优化的基本原理 2.1 数据库查询优化 2.2 数据库索引优化 2.3 数据库表结构优化 2.4 数据库硬件优化 3、数据库查询优化…

一个好用的服务器控制面板

简介 它是一个免费开源的管理面板工具&#xff0c;可以帮助你集中管理多个服务器和网站。Ajenti 支持 Linux、BSD、Mac OS X和Windows 等多个操作系统&#xff0c;并且可以通过一个直观的 Web 界面来完成各种系统管理任务。 相比于其他管理面板&#xff0c;Ajenti有以下几个优…

go语言数组和切片

1. 数组Array Golang Array和以往认知的数组有很大不同。 1. 数组&#xff1a;是同一种数据类型的固定长度的序列。2. 数组定义&#xff1a;var a [len]int&#xff0c;比如&#xff1a;var a [5]int&#xff0c;数组长度必须是常量&#xff0c;且是类型的组成部分。一旦定义&…

数字主持人有多少种应用方式?

在数字经济时代下&#xff0c;越来越多企业、品牌以数字人进行新闻资讯报道、主持互动、人机交互等多形式&#xff0c;提升企业、品牌的影响力和认知度。 *图片源于网络 如山东广播电视台数字主持人“海蓝”&#xff0c;不仅可以用大会活动现场&#xff0c;用多国语言与主持人、…

从零开始c++精讲:第四篇——模板初阶

文章目录 一、泛型编程二、函数模板2.1函数模板概念2.2函数模板格式2.3函数模板原理2.4函数模板实例化2.5函数模板匹配原则 三、类模板3.1类模板的定义格式3.2类模板的实例化 一、泛型编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int& left, int& righ…

ios适配虚拟home键

在H5开发过程中遇到一个兼容性问题。iphone手机的虚拟home键会对屏幕底部的内容造成遮挡。要处理此问题&#xff0c;需要清楚安全区域这个概念。 安全区域 根据刘海和虚拟Home键&#xff0c;Apple为其设备提供了屏幕安全区域的视觉规范 竖屏&#xff1a;竖屏的时候&#xff…

基于springboot在线学习平台源码和论文

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括学习平台的网络应用&#xff0c;在外国学习平台已经是很普遍的方式&#xff0c;不过国内的管理平台可能还处于起步阶段。学习平台具有学习信息管理功能的选择。学习平台采用ja…

PWN入门Protostar靶场Stack系列

Protostar靶场地址 https://exploit.education/protostar/溢出 源码分析 #include <stdlib.h> #include <unistd.h> #include <stdio.h>int main(int argc, char **argv) {volatile int modified; //定义一个变量char buffer[64]; //给…

C++:优先队列-Priority_queue

目录 1.关于优先队列 2.priority_queue的使用 1.构造方法 2.empty();判空 3.size(); 4.top(); 5.push(val); 6.pop(); 3.优先队列模拟实现 4.用优先队列解决数组中第K个大的元素 1.关于优先队列 在C中&#xff0c;可以使用STL&#xff08;标准模板库&#xff09;中的p…

软件测试的调用接口怎么调用,逻辑是什么?

一、什么是接口测试&#xff1f; 接口测试是测试系统组件之间接口的测试。接口主要用于检测外部系统和内部子系统之间的交互点。测试的重点是检查数据交换、传输、控制和管理过程&#xff0c;以及系统之间的相互逻辑依赖。 二、为什么要做接口测试&#xff1f; 在淘宝系统的…