自然语言处理基本任务综述

news2024/11/14 17:10:49

文章目录

    • 1.多语言分词
    • 2.词性标注
    • 3.命名实体识别
    • 4.中心词提取
    • 5.依存句法分析
    • 6.文本纠错
    • 7.文本摘要
    • 8.文本相似度
    • 9.情感分析
    • 10.文本分类
    • 11.词向量

image-20230420171422863

1.多语言分词

​ 在自然语言处理中,分词(Tokenization)是指将自然语言文本中的连续字符序列划分为一个个有意义的符号(token)的过程。分词是文本预处理中的一项基础任务,它是自然语言处理中的一环,而且是非常重要的一环。

​ 在英文中,单词之间通常由空格隔开,因此英文单词的分词比较容易实现。但是,在中文等没有空格的语言中,分词就变得更加困难和复杂。中文分词需要考虑语句结构、上下文语境和词性等因素,因此很多算法都被提出来用于解决中文分词的问题。

​ 分词对于自然语言处理很重要,它是句子理解和语义分析的基础。分词能够将一段文本拆分成有意义的单元,进而为后续的文本处理打下基础。例如,在语音识别、机器翻译、信息检索、文本分类和情感分析等应用中,都需要进行分词。

例:“请输入文本”

{
  "result": [
    {
      "id": "0",
      "word": "请",
      "tags": [
        "基本词-中文"
      ]
    },
    {
      "id": "1",
      "word": "输入",
      "tags": [
        "基本词-中文",
        "产品类型修饰词"
      ]
    },
    {
      "id": "2",
      "word": "文本",
      "tags": [
        "基本词-中文",
        "产品类型修饰词"
      ]
    }
  ],
  "success": true
}

2.词性标注

​ 该能力可以为自然语言文本中的每个词汇赋予一个词性,如名词、动词、介词

例:“请输入文本”

pos:词性 word:词

{
  "result": [
    {
      "pos": "VV",
      "word": "请"
    },
    {
      "pos": "VV",
      "word": "输入"
    },
    {
      "pos": "NN",
      "word": "文本"
    }
  ],
  "success": true
}

3.命名实体识别

​ 中文命名实体识别是一种自然语言处理技术,用于从中文文本中识别出具有特定意义的实体,如人名、地名、组织机构名等。这种技术通常利用机器学习算法和语料库进行训练,并可以应用于信息提取、知识图谱构建、智能问答等多个领域。常见的中文命名实体识别工具包括Stanford NER、LTP、THULAC等。

例:“请输入文本”

{
  "result": [
    {
      "synonym": "",
      "weight": "0.100000",
      "tag": "普通词",
      "word": "请"
    },
    {
      "synonym": "",
      "weight": "0.100000",
      "tag": "普通词",
      "word": "输入"
    },
    {
      "synonym": "",
      "weight": "1.000000",
      "tag": "品类",
      "word": "文本"
    }
  ],
  "success": true
}

4.中心词提取

​ 在自然语言处理(NLP)中,中心词提取通过给每个词计算一个相关性分数来衡量每个词与句子的相关性程度,进而识别并提取出句子的中心词。

​ 这些关键词或短语可以用于文本分类、信息检索、文本摘要等任务。常见的中心词提取算法包括基于词频的方法如TF-IDF、基于图论的方法如TextRank,以及主题模型如LDA等。其中,深度学习也提供了一些新的方法和技术,如Word2Vec、BERT等预训练模型。

5.依存句法分析

​ 通过分析句子中词与词之间的依存关系,从而捕捉到词语的句法结构信息(如主谓、动宾、定中等结构关系),并使用树状结构来表示句子的句法结构信息(如主谓宾、定状补等)

百度中文依存句法分析工具DDParser重磅开源_百度大脑-CSDN博客
  • 基于规则的方法:手动编写语言学规则,捕捉词汇之间的关系。
  • 基于统计学习的方法:使用大量标注好的句子数据,通过机器学习算法自动学习依存关系模式。
  • 混合方法:结合基于规则和基于统计学习的方法,既能利用专家知识,又能充分利用大量语料库。
  • 神经网络方法:利用深度学习技术,输入是句子中的每个词及其上下文信息,输出是每个词与其它词之间的依存关系

例:“小明爱中国”

{
  "result": [
    {
      "head": 2,
      "pos": "NR",
      "id": 1,
      "label": "SBV",
      "word": "小明"
    },
    {
      "head": 0,
      "pos": "VV",
      "id": 2,
      "label": "ROOT",
      "word": "爱"
    },
    {
      "head": 2,
      "pos": "NR",
      "id": 3,
      "label": "VOB",
      "word": "中国"
    }
  ],
  "success": true
}
  • id:词语序号,从1开始
  • word:词语
  • pos:当前词语的词性
  • head:词语的核心词
  • label:依存关系类型,SBV、VOB表示不同的关系,对此不再赘述

6.文本纠错

​ 准确识别输入文本中出现的拼写错别字及其段落位置信息,并针对性给出正确的建议文本内容

  • 基于规则的方法:通过预定义的规则来检测和纠正文本中的错误,例如拼写检查器。
  • 基于统计的方法:使用语言模型和概率算法来识别和修复文本中的错误,例如n-gram模型、编辑距离算法等。
  • 基于深度学习的方法:使用神经网络等深度学习技术来训练自动纠错模型,例如seq2seq模型、BERT等。
  • 基于集成的方法:将多种方法结合起来,利用它们各自的优点来提高文本纠错的准确性和鲁棒性。

例:我今天吃苹果,明天吃香姣

{
  "result": {
    "edits": [
      {
        "confidence": 0.8385,
        "pos": 11,
        "src": "姣",
        "tgt": "蕉",
        "type": "SpellingError"
      }
    ],
    "source": "我今天吃苹果,明天吃香姣",
    "target": "我今天吃苹果,明天吃香蕉"
  },
  "success": true
}

7.文本摘要

​ 文本摘要是将一篇长文本压缩为几个关键信息点的过程。常用的文本摘要方法包括:

  1. 抽取式摘要:从原始文本中抽取最重要的句子或短语来生成摘要,不涉及对语言的理解和生成。
  2. 生成式摘要:通过对原始文本进行语义理解和生成,自动生成新的、更简洁的文本。

8.文本相似度

​ 提供不同文本之间相似度的计算,并输出一个介于0到1之间的分数,分数越大则文本之间的相似度越高。建议分数不要用于直接判断,可以作为特征,并按照范围进行分桶。

​ 常用的文本相似度方法包括:

  • 余弦相似度:通过计算两个向量之间的夹角余弦值来表示它们的相似程度。

  • 编辑距离:通过计算将一个字符串转换成另一个字符串所需的最少编辑操作数来表示它们的相似程度。

  • Jaccard 相似度:通过计算两个集合的交集与并集之比来表示它们的相似程度。

    Jaccard 相似度是一种常用于衡量文本相似性的指标,它可以基于文本中词语的集合来计算两个文本之间的相似度。其计算方式与数学中集合的 Jaccard 相似系数类似,具体定义为两个文本共同包含的词语数量除以它们所有包含的词语的数量之和。

    如果设文本 A 和 B 中涉及的词语分别为 AA 和 BB,则 Jaccard 相似度计算公式为:
    J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ ∗ J ∗ ( ∗ A ∗ , ∗ B ∗ ) = ∣ ∗ A ∗ ∪ ∗ B ∗ ∣ ∣ ∗ A ∗ ∩ ∗ B ∗ ∣ J(A,B) = \frac{|A \cap B|}{|A \cup B|}*J*(*A*,*B*)=∣*A*∪*B*∣∣*A*∩*B*∣ J(A,B)=ABABJ(A,B)=∣AB∣∣AB

    其中, ∩ ∩ 表示交集, ∪ ∪ 表示并集, ∣ . ∣ ∣ . ∣ 表示集合中元素的个数。 其中,\cap∩ 表示交集,\cup∪ 表示并集,|.|∣.∣ 表示集合中元素的个数。 其中,表示交集,表示并集,∣.∣.表示集合中元素的个数。

    举个例子,假设有两句话:“我喜欢吃苹果”和“他也喜欢吃苹果”,则它们的 Jaccard 相似度可以如下计算:

    • 句子 1 包含的词语集合 A = {我, 喜欢, 吃, 苹果}A={我,喜欢,吃,苹果}

    • 句子 2 包含的词语集合 B = {他, 也, 喜欢, 吃, 苹果}B={他,也,喜欢,吃,苹果}

    • AA 与 BB 的交集为 {喜欢, 吃, 苹果}{喜欢,吃,苹果}

    • AA 与 BB 的并集为 {我, 他, 喜欢, 吃, 苹果, 也}{我,他,喜欢,吃,苹果,也}

    • 因此,句子 1 和句子 2 的 Jaccard 相似度为
      3 6 = 0.563 = 0.5 \frac{3}{6} = 0.563=0.5 63=0.563=0.5

  • 词向量模型:通过将文本中的单词映射到一个向量空间中,然后基于向量之间的距离或余弦相似度来计算文本相似度。

  • 预训练语言模型:使用预先训练好的神经网络来生成文本的表示,并根据这些表示来计算文本之间的相似度。

句子A:一条红色连衣裙

句子B:一条蓝色衣服

{
  "result": [
    {
      "score": "0.16925383",
      "flag": true
    }
  ],
  "success": true
}

9.情感分析

​ 针对带有主观描述的自然语言文本,可自动判断该文本的情感正负倾向并给出相应的结果

10.文本分类

​ 对用户输入的一段文本,映射到具体的类目上。以新闻资讯领域为例,可以将一段文本分为以下几个类目:港澳台、房产、军事、社会、财经、文娱、汽车、国际、教育、健康、美食、时政、法治、旅游、体育、数码科技、健康、动漫、反腐前沿。

11.词向量

有一篇文章讲的非常好,大家可以跳转观看:自然语言处理3:词向量 - 知乎 (zhihu.com)

【白话NLP】什么是词向量 - 知乎 (zhihu.com)

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

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

相关文章

前端性能优化点--防抖节流

防抖debounce 防抖函数指的是某个函数在某段时间内,无论触发了多少次回调,都只执行最后一次。 假如我们设置了一个等待时间 3 秒的函数,在这 3 秒内如果遇到函数调用请求就重新计时 3 秒,直至新的 3 秒内没有函数调用请求&#x…

关于package.json中版本锁定的方法和问题解决

前置知识:先了解一下package.json和package-lock.json的关系和区别,请看这篇文章 然后我们来说一下改怎么锁定版本? 首先肯定是要把package.json中的 ^ 这个符号去掉,但是如果你只去掉package.json中的 ^那就太天真了&#xff0…

ESP32的VSPI和HSPI

说明 SPI共有4根线,MOSI、MISO、CS、CLK,在ESP32中对应规则如下表: ESP32共有4个SPI,但是用户能够使用的只有2个SPI,分为VSPI和HSPI。 引脚接口 在ESP32的数据手册中,说明了VSPI和HSPI对应的引脚&…

薪资结构重铸: Zebec将业务范围扩大到Web2薪资管理领域

通过收购美国支付公司PayBridge,Zebec的流支付技术正在扩展到企业级薪酬发放平台。 近日,流支付协议Zebec Protocol宣布,其通过美国投资机构Payroll Growth Partners(PGP)收购了Web2薪酬管理公司PayBridge。PayBridge总…

和月薪5W的阿里程序员聊过后,才知道自己一直在打杂...

前几天和一个朋友聊面试,他说上个月同时拿到了腾讯和阿里的offer,最后选择了阿里。 阿里内部将员工一共分为了14个等级,P6是资深工程师,P7是技术专家。 其中P6和P7就是一个分水岭了,P6是最接近P7的不持股员工&#x…

完整的生产车间管理流程是怎样的?六大步骤分享

阅读本文您将了解:1.生产车间管理的特征;2.生产车间管理流程具体步骤;3.生产车间管理流程规范的重要性。 一、生产车间管理的特征 车间管理是指对车间所从事的各项生产经营活动进行计划、组织、指挥、协调和控制的一系列管理工作。生产车间…

FE_TA不知道的CSS 换行系列【2】word-break word-wrap

从这个名字可以知道,这个属性是控制单词如何被拆分换行的。它有三个值:normal | break-all | keep-all。 1 word-break:keep-all 所有“单词”一律不拆分换行,注意,我这里的“单词”包括连续的中文字符(还有日文、韩…

Web 学习笔记 - 网络安全

前言 Web 安全方面的基本知识是有很必要的,未必就要深入理解。本文主要介绍常见的网络攻击类型,不作深入探讨。 正文 网络攻击的形式种类繁多,从简单的网站敏感文件扫描、弱口令暴力破解,到 SQL 注入,再到复杂的网络…

2023-04-24 Nginx基本使用

Nginx 文章目录 Nginx1.Nginx安装2.Nginx命令3.静态资源3.2 解决403问题3.3 root与alias区别 4.反向代理/负载均衡4.1 正向代理4.2 反向代理4.3 负载均衡策略 5.动静分离 1.Nginx安装 1.上传解压Nginx压缩包 2.先安装所需依赖包 yum -y install pcre-develyum -y install ope…

Flink+Pulsar、Kafka问题分析及方案

背景 消息队列如Kafka、Pulsar利用事务特性所提供的exactly once语义,只能在特定使用场景 consume-transform-produce 下保证,即一个事务同时包含了生产和消费,利用事务的原子性,事务中的操作包含sink端的生产和source端的offset提…

从STL的视角,了解下Map、Set、Tuple和Initializer_List的区别

📖作者介绍:22级树莓人(计算机专业),热爱编程<目前在c++阶段>——目标Windows,MySQL,Qt,数据结构与算法,Linux,多线程&…

React-Native启动页

本文将从 Android 和 IOS 两端分别详细介绍APP是如何设置名称、图标以及启动页的。 首先我们到 图标工厂 上传一张 1024x1024 的图标,然后一键生成所有尺寸的图标,下载下来供两端使用。 IOS端 设置名称 在 Xcode 中点击你的项目修改右侧 Display Name …

深入浅出MySQL——MySQL基础

文章目录 数据库基础数据库概念主流数据库服务器,数据库,表关系基本使用MySQL架构SQL语句分类存储引擎 库的操作创建数据库创建数据库案例字符集和校验规则操纵数据库 表的操作创建表查看表结构修改表删除表 数据类型数据类型分类数值类型字符串类型 表的…

【华为机考】专题突破 第一周:单调栈 739 、503 、901、84

刷题顺序参考于 《2023华为机考刷题指南:八周机考速通车》 前言 单调栈:分为单调递增和单调递减栈。(栈内元素成递增或者递减性): 单调递增栈:从栈底到栈顶数据是从大到小,即 栈内的元素从栈顶 到栈底 是递增的&#x…

react-10 函数式写法rsc,配合HOOKS钩子函数

性能优化:useMemo :用于组件性能优化(缓存计算属性,变化才执行)是通过缓存值的方式实现性能优化 useMemo(callback, array):性能优化,利用了闭包的特性,会返回一个记忆值, 通过 记…

3D线光谱共焦位移传感器在医疗领域的应用

随着社会的发展,越来越多的行业对微观物体表面形貌的观察提出了越来越高的要求。与生命健康息息相关的医疗行业就是其中之一。但是传统的显微镜只能达到聚焦区域的图像清晰,非聚焦区域图像模糊。因此,普通显微镜无法在相同景深下实现对物体表…

两大消息爆出,币圈正在响应全球“去美元化”行动

为了维持美元霸权、对全球进行收割,美联储连续加息反而拉爆了自家银行。欧美银行危机事件,让人们觉得把钱放在银行里并不安全,加密货币的去中心化本质,令币圈逆风翻盘。数据显示,比特币今年上涨了近72%,这可…

《编码——隐藏在计算机软硬件背后的语言》精炼——第12章(二进制加法器)

“I hear and I forget. I see and I remember. I do and I understand”——Confucius 人类计算二进制数的方法 我们先计算本位的结果,称为加法位;再计算是否进位,称为进位位。 搭建二进制加法器 我们用逻辑门来搭建二进制加法器。它的思想…

CHAPTER 8: 《DESIGN A URL SHORTENER》第8章 《设计一个url伸缩器》

CHAPTER 8: DESIGN A URL SHORTENER 在这一章中,我们将解决一个有趣而经典的系统设计面试问题:设计一个像tinyurl这样的网址缩短服务。 步骤1 -理解问题并确定设计范围 系统设计面试的问题是故意留下开放式的。精心设计系统中,提出澄清性问题是至关重…

HDCTF 2023 复盘

web yamiyami 当时考虑直接读的/proc/self/environ 读到flag是not_flag 就没考虑过/proc/1/environ了 然后不知道py3URL二次编码的特性,读不到源码,无从下手 做flask算pin码的题做多了,还以为pid是1的就是self,难顶 上面那种是非预期 预期是yaml反序列化 先读源码 /read?u…