2021-04-12

2023-10-27

NLP=自然语言处理

和CV相比,nlp最大的特点是特征是离散的,不像cv中是一幅图,nlp是一个个的句子

 

简单说几点nlp的难点

       1、相同意思的句子表达有多种:我爱踢足球;足球是我的爱好;我的爱好之一是足球

       2、相同词在不同语境中意思不同:我喜欢苹果;我喜欢用苹果公司的产品

       3、词的先后顺序直接影响语意:我爱你;你爱我

       4、多加一个字直接影响语意:我爱吃西瓜;我不爱吃西瓜

       5、语句中噪声多,真正影响语意的可能只有几个词:哈哈哈哈哈哈哈哈哈哈我爱吃西瓜,哈哈哈哈

 

 

从应用场景入手,逐步讲解不同的模型

 

  1. 文本分类

顾名思义,就是让机器根本文本内容自动打上相应的标签

样本一:“这个东西好难用啊,我被坑了”---负面评价

样本二:“这家面霜太好用了,强烈推荐”---正面评价

一般情况下需要事先定义好标签的种类,也就是业务上需要的标签有哪几种,这个需要分析业务的数据。有两种方法去实现文本分类;

一:运用常用的关键词,也可以叫正则。可以用“难用|被坑”,如果文本中包含这些关键词,可认为是负面评价;“好用|强烈推荐”,如果文本中包含这几个,可认为是正面评价。缺点:只使用关键词,而没有使用全部句子的信息,准确率低;如样本“很多人觉得这个东西难用,但是我不这样认为”,使用关键词很容易分错。

二:模型:text-cnn、lstm、bert。也就是生成整个句子的语意向量,然后再判断这个向量属于哪个标签。下图是text-cnn

第一步:每个字的向量,假设是一个1*6的向量;

第二步:每个字之间的关联操作;

第三步:1*4的向量就是能表达整个句子语意的向量

第四步:全联接操作判断这个句子属于哪一个标签;如二分类的话,就是一个1*2的向量[0.8,0.2],表示是标签1的概率是0.8,标签2的概率是0.2,这个时候我们就可以认为这个句子属于标签1。

从上图可以知道模型的大致流程了,实际上除了第一步和最后一步,中间步可以当作一个黑盒,仔细看上图textcnn那个黄色的框[video,and,do],发现没有?就是把上下1个词集中做一个处理,这个就是一个窗口,这也是textcnn的特点,这就相当于只使用一个字上下各一个字的信息。

为什么后面又有LSTM了呢?上面提到了cnn只使用字的一个窗口内的信息,但是文本有一个很大的特点,当前字的信息很可能受距离很远的字影响,就像“我不喜欢苹果,因为我觉得他们这家公司不好”,“苹果”的语意和“公司”是相关的,这样可以确定是苹果公司而不是水果苹果。Lstm的操作就是解决信息长距离依赖的问题(https://blog.csdn.net/cuipanguo/article/details/103703763?spm=1001.2014.3001.5502

简单点来说也就是在计算第5个字的语意时,把它之前4个字的语意信息有选择性的加进来(你不需要甚解,知道就行了)

为什么又有bert了呢?bert内的主要结构是注意力机制,通俗点说,我们在看下面这张图时,是不是对狗狗的关注度更高,因为图中的狗狗是重点!同样的,句子中也会有某些词是重点,让机器更加关注这些词,从而更好地降低噪声的影响(之前说过,文本中的噪声很多)

 

 

  1. 情感分析

情感分析实际上也是一个分类任务;情感分析是一种有趣的NLP和数据挖掘任务,用于衡量人们的观点倾向。例如,我们可以对电影评论或由该电影引起的情绪状态进行分析。情感分析有助于检查顾客对商品或服务是否满意。传统的民意调查早已淡出人们的视线。即使是那些想要支持品牌或政治候选人的人也不总是愿意花时间填写问卷。然而,人们愿意在社交网络上分享他们的观点。搜索负面文本和识别主要的投诉可以显著地帮助改变概念、改进产品和广告,并减少不满的程度。反过来,明确的正面评论会提高收视率和需求。

常用分类模型:text-cnn、lstm、bert、robert(比bert更快)

  1. 机器翻译

上面提到了黑盒这个东西,如下图bert模型,把左边中间全部都当作黑盒,输入一句话,输出一个向量,然后根据这个向量做分类判断属于哪一个字(假设字典是10000个字,就相当于有10000个标签),得到第一个字之后,这个字向量再输入模型得到第二个,以此类推

常用分类模型: bert、GPT

 

  1. 问答系统

一问一答,首先要知道问的是什么问题,也就是意图分类,和上面的分类是一个意思,知道了意图,要么有固定答案,这个直接配置就可以;如果要从别的文本中抽取答案,有两种方式:一根据意图种类规则地从不同文本抽取答案;二根据问题文本和存在答案的文本作为模型的输入,最后输入每个字位置的向量,然后判断哪两个字之间的文本是答案,也相当于分类,与之前的区别是现在是根据字向量,之前是根据整个句子的语意向量(这个和实体识别是有点像的)

常用分类模型: bert、robert(比bert更快)

 

 

  1. 自动摘要

简单点来说就是把长文本变成段文本,且短文本能够表达长文本的重要意思。上图的指针网络只是一种实现方式,相当于从长文本中抽取重要的短语组成一句话,但是这些短语都是文本中存在的。还有一种方法类似于机器翻译,生成摘要,而不是完全从长文本中抽取

常用分类模型:指针网络(大部分结构和bert差不多)、 bert、robert(比bert更快)

  1. 聊天机器人

类似于天猫精灵、微软小冰等等,他不像问答系统限定在某些固定意图种类,聊天的话会出现各种各样的意图,不可能定义全部的,所以就需要根据对话,自动生成回复语。实现方式一:训练集就是各种各样的对话数据,类似于机器翻译的模式,可以让模型根据输入生成相应的回复;方式二:沉淀大的对话预料库,根据对方的输入,找到对话预料库中与其语意最相似的句子,把这个句子的回复当作输入的回复

常用分类模型:text-cnn、lstm、bert、robert(比bert更快)

  1. 市场预测

营销人员还使用NLP来搜索有可能或明确打算购物的人。Internet上的行为,维护社交网络上的页面以及对搜索引擎的查询提供了许多有用的非结构化客户数据。Google可以充分利用这些数据来向互联网用户销售合适的广告。每当访问者点击广告时,广告客户就要向Google付费。点击的成本从几美分到超过50美元不等。

  1. 实体挖掘

所谓实体,可以是姓名,公司名称,也可以是水果种类、汽车种类等等,根据业务需求进行定义。人工挖掘的成本是很高的,用关键词挖掘就像上面提到的歧义,还有就是不可能列举所有的关键词。

崔胖是一个大帅哥,毕业于武汉大学,专业是信息与信号处理,爱好足球”。这些里面“崔胖”是姓名实体,“武汉大学”是学校实体,“信息与信号处理”是专业实体,“足球”是运动实体,实现方法类似于上面提过的指针网络,就是判断哪两个字之间的文本属于某一个实体种类,就像分类出来“崔”是姓名实体的开始,“胖”是姓名实体的结尾;“武”是学校实体的开始,“学”是学校实体的结尾。常用模型图如下

常用分类模型: lstm+crf、bert+crf(或者bert+mrc)

  1. 关系抽取

简单点说就是判断文本中两个实体是否存在关系,或者存在什么关系,这个关系种类一半都是事先定义好的,举个例子:崔胖是贾胖的男朋友,他俩经常打架;那么实体“崔胖”和实体“贾胖”之间的关系就是情侣关系。“A是B的爸爸”,实体A和实体B的关系就是“父亲”, 实体B和实体A的关系就是“子女”,所以实体之间的先后顺序和上下文是很影响这个关系的,所以一般操作就是取两个实体的上下文向量,拼接成一个分类向量,再判断这个关系,实体的上下文向量怎么获取呢?我们上面提过可以得到每个字的向量,实体上下文的向量可以用这个实体上下各两个字的向量加权求和当作实体的上下文向量。

常用分类模型: lstm、bert

看了上面那么多,是不是发觉有点问题,为什么这么多任务都可以用bert来解决?那是因为在自然语言理解这个场景下,只要很好的表征了每个字的语意(如篮球和足球在语意上面是距离较近的,而篮球和铁锅在语意上应该是距离较远的),那么就可以根据不同任务去使用这个语意,而bert就是这个作用,它的预训练就是很好地表征了每个字的语意。

实体识别是根据每个字的语意向量判断这个字是一个实体的开始还是结尾,或者不是实体;

文本分类根据整个文本的语意向量(bert中是在输入开头加入CLS这个标示符,这个标示符的向量就可以当作整个句子的语意向量)来做分类;

问答系统输入的是问题+存在答案的文本,然后根据每个字向量判断是否属于答案的开头或者结尾;

聊天机器人就是输入对方的输入,逐字生成回复;

关系抽取就是把实体向量拼接做分类

自动摘要:摘要抽取和上面的问答系统的答案抽取类似,只不过输入只有长文本,没有对方的输入;摘要生成和聊天机器人类似,就是逐字生成摘要

 

另外补充一点:前些年预训练很火,这也是bert很在很多场景下达到最优效果的原因之一,预训练就是有一个不需要标注的语料库,让模型自己训练,举个例子“崔胖是一个大帅哥”,让模型根据“是”的上下文“崔胖”“一个”去预测当前位置是“是”的概率,语料库大的话,每个字的语意都可以很好的表示,所以在使用bert的时候一般都使用bert的预训练模型,然后再根据具体的业务场景进行微调。

 

再补充一点:如果我们很好地表征了每个字的语意信息,那么多可以用的场景就会更多,例如给定100个负面关键词,找到语意相近的新的负面关键词,如“生气”,可以新挖掘出来“愤怒”“恼怒”“气愤”等等新的关键词供业务使用;或者句子中“A打了B,C在一边吃饭”,这是一个斗殴事件,要判断C是不是和斗殴相关;

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021-04-12 的相关文章

  • Python 3 和 NLTK 与 WordNet 2.1 - 这可能吗?

    我将 Python 3 和 NLTK 3 0 0 与 WordNet 3 0 结合使用 我想用该数据 semval2007 https github com alvations pywsd tree master pywsd data se
  • 使用 nltk 中的meteor_score模块评估模型时如何实现meteor分数?

    我目前有 2 个文件 reference txt 和 model txt 这两个文本文件包含原始字幕和训练后生成的字幕 我可以简单地执行以下操作来获取流星分数 score nltk translate meteor score meteor
  • word2vec gensim 多种语言

    这个问题完全超出了我的想象 我正在使用 gensim 训练 Word2Vec 模型 我提供了多种语言的数据 即英语和印地语 当我试图找到最接近 人 的词时 我得到的是 model wv most similar positive man O
  • 日语/字符的编程技巧[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个想法 可以编写一些网络应用程序来帮助我 也许还有其他人 更好地学习日语 因为我正在学习日语 我的问题是该网站主要是英文的 所以
  • 在哪里可以找到英语短语列表? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我的任务是搜索文本中陈词滥调和常见短语的用法 这些短语与您在财富之轮的短语谜题中可能看到的短语类似 这
  • 使用 Hadoop MapReduce 的计算语言学项目构想

    我需要做一个关于计算语言学课程的项目 是否有任何有趣的 语言 问题 其数据密集程度足以使用 Hadoop MapReduce 来解决 解决方案或算法应尝试分析并提供 语言 领域的一些见解 但是它应该适用于大型数据集 以便我可以使用 hado
  • 如何调整 NLTK 句子标记器

    我正在使用 NLTK 来分析一些经典文本 但我在按句子标记文本时遇到了麻烦 例如 这是我从以下内容中得到的片段莫比迪克 http www gutenberg org cache epub 2701 pg2701 txt import nlt
  • SpaCy 的相似度是如何计算的?

    初学者 NLP 问题在这里 similarity 方法如何运作 哇 spaCy 太棒了 它的tfidf模型可以更容易预处理 但w2v只有一行代码 token vector 惊人的 In his spaCy 上的 10 行教程 https g
  • 这个 NLP 问题层次结构描述中的最大池化是什么类型

    我正在尝试实现这个描述以及我所做的 我生成了形状的 uni gram bi gram tri gram 15 512 使用填充 然后对于每个单词 我连接三个特征向量 3 512 然后我向他们申请 Globalmaxpooling1D 我不知
  • 如何训练斯坦福 NLP 情感分析工具

    地狱大家 我正在使用斯坦福核心 NLP 包 我的目标是对推文直播进行情感分析 按原样使用情感分析工具对文本 态度 的分析非常差 许多积极因素被标记为中性 许多消极因素被评为积极 我已经在文本文件中获取了超过一百万条推文 但我不知道如何实际获
  • 如何确保用户只提交英文文本

    我正在构建一个涉及自然语言处理的项目 由于nlp模块目前只处理英文文本 所以我必须确保用户提交的内容 不长 只有几个单词 是英文的 是否有既定的方法来实现这一目标 首选 Python 或 Javascript 方式 如果内容足够长我会推荐一
  • 使用正则表达式标记化进行 NLP 词干提取和词形还原

    定义一个函数 名为performStemAndLemma 它需要一个参数 第一个参数 textcontent 是一个字符串 编辑器中给出了函数定义代码存根 执行以下指定任务 1 对给出的所有单词进行分词textcontent 该单词应包含字
  • NLTK 中的 wordnet lemmatizer 不适用于副词 [重复]

    这个问题在这里已经有答案了 from nltk stem import WordNetLemmatizer x WordNetLemmatizer x lemmatize angrily pos r Out 41 angrily 这是 nl
  • AttributeError:类型对象“Word2Vec”没有属性“load_word2vec_format”

    我正在尝试实现 word2vec 模型并收到属性错误 AttributeError 类型对象 Word2Vec 没有属性 load word2vec format 下面是代码 wv Word2Vec load word2vec format
  • 缩短文本并仅保留重要句子

    德国网站 nandoo net 提供了缩短新闻文章的可能性 如果使用滑块更改百分比值 文本会发生变化并且某些句子会被遗漏 您可以在这里看到它的实际效果 http www nandoo net read article 299925 http
  • 如何提取句子中的主语及其各自的从属短语?

    我正在尝试在句子中进行主题提取 以便我能够根据主题获得情感 我在用nltk在 python2 7 中用于此目的 以下面的句子为例 Donald Trump is the worst president of USA but Hillary
  • Fine-Tuning DistilBertForSequenceClassification:不是学习,为什么loss没有变化?权重没有更新?

    我对 PyTorch 和 Huggingface transformers 比较陌生 并对此尝试了 DistillBertForSequenceClassificationKaggle 数据集 https www kaggle com c
  • 除非 POS 显式,否则 WordNetLemmatizer 不会返回正确的引理 - Python NLTK

    我正在对 Ted 数据集成绩单进行词形还原 我注意到一些奇怪的事情 并非所有单词都被词形还原 要说的是 selected gt select 哪个是对的 然而 involved gt involve and horsing gt horse
  • 使用 SciKit-learn 和大型数据集进行文本分类

    首先 我昨天开始学习Python 我正在尝试使用 SciKit 和大型数据集 250 000 条推文 进行文本分类 对于该算法 每条推文都将表示为 4000 x 1 向量 因此这意味着输入为 250 000 行和 4000 列 当我尝试在
  • Lucene 标准分析器与 Snowball

    刚刚开始使用 Lucene Net 我使用标准分析器索引了 100 000 行 运行了一些测试查询 并注意到如果原始术语是单数 则复数查询不会返回结果 我知道雪球分析器增加了词干支持 这听起来不错 不过 我想知道 超过标准的雪球锣是否有任何

随机推荐

  • 科学认识手机充电问题

    目录 导语 关于手机充电 一 纠正几点认知 二 最常见的不良充电习惯 三 正确的充电方式 四 名词解释 导语 关于手机充电 手机电量越来越不耐用 坏的充电习惯会对手机电池产生诸多不良影响 生活中处处皆学问 记录一下 印象深刻 一 纠正几点认
  • pytorch1.7教程实验——分类器训练

    近来想大致总结一下自己知识学习的脉络 发现自己除了大量的工程经验外 对模型算法的研究还是不够深入 而且大多都是关于目标检测方向 锚框或非锚框以及transformer 其他的涉猎不足 认识不够清晰 而且目标检测网络现在要自己单独构建写一个出
  • VMware 安装 win7、win10、MAC 和网络模式VMnet0、VMnet1、VMnet8解释

    VMware 虚拟机安装ghost win7系统方法 http www xitongcheng com jiaocheng xtazjc article 15314 html VMWare 安装Mac OS系统 https blog csd
  • [TRPO] Trust Region Policy Optimization

    论文链接 http proceedings mlr press v37 schulman15 引用 Schulman J Levine S Abbeel P et al Trust region policy optimization C
  • git 保护分支

    问题描述 推送dev分支报错 该分支受保护 git push Enumerating objects 9 done Counting objects 100 9 9 done Delta compression using up to 8
  • 数字技术的优点

    数字技术之所以能够广泛应用 主要因为数字电路与模拟电路相比 有许多优点 抗干扰能力强 数字电路能够在相同的输入条件下精确地产生相同的结果 而模拟电路容易受到温度 电源电压 噪声 辐射和元器件老化等因素的影响 在相同的输入条件下输出结果可能会
  • google翻译的一个错误

    如图 音标标着yi朗读却是ai
  • 需要多表连接查询时该怎么弄(一对多的情况)

    第一步 一对多时应该在 一的类中 添加 多的类 的集合变量 例 通过部门号来查询特定的部门 以及该部门中所有的职工 这时需要在dept类中新增一个集合变量 第二步 开始写具体代码 方法一 通过连接查询 左外连接 一次到位 方法二 分步查询
  • ReactNative ListView + 上拉加载更多 + 下拉刷新

    ListView 上拉加载更多 下拉刷新 一 内容简介 ListView列表在添加了上拉加载更多功能之后再添加下拉刷新 二 代码实现 1 引入原生组件 RefreshControl import ListView View Text Act
  • mysql表的约束

    目录 一 表的约束分类 1 not null 非空 输入的数据内容不能为空 2 unique key 唯一键 输入的数据可以为null或者跳过赋予他的值 但是如果输入数据不能相同 3 primary key 主键 每个表中必须有唯一的主键
  • matlab编写dbscan聚类

    在Matlab中编写DBSCAN聚类的方法有很多种 一种常用的方法是手动编写代码 下面是一个简单的DBSCAN示例 function labels nClusters dbscan data eps MinPts data 数据点 eps
  • Qt 使用QInputDialog弹出输入框获取用户输入数据

    简要说明 在开发Qt程序的过程中 我们可能会需要在程序中弹出输入框 并且获取用户输入的数据 一种比较麻烦的做法就是新建一个对话框类 然后在主界面中调用对话框类 获取返回值 使用QInputDialog对话框类可以通过访问不同的接口函数 弹出
  • php导出数据xlsx

    lists 二维数组 public function xlsx lists 生成文件名 date date Y m d H i s time fileName XXXX date xlsx 头部标题 xlsx header array 序号
  • Java Springboot--swagger配置

    文章转载自 第一步 配置pom xml文件
  • 视线估计(Gaze Estimation)简介概述

    PaperWeekly 原创 作者 俞雨 单位 瑞士洛桑联邦理工学院博士 研究方向 视线估计 头部姿态估计 本文七个篇章总计涵盖 29 篇论文 总结了自深度学习以来 视线估计领域近五年的发展 概述 1 1 问题定义 广义的 Gaze Est
  • [Unity]Lua本地时间、倒计时和正计时。

    惯例 直接上代码 正计时开始时的时间戳 self begin time os time 倒计时时长 01 30 00 self countdown time 5400 是否开始计时 self is update local time tru
  • 一文搞定在Ubuntu安装tldr

    目录 第一步 执行安装命令 第二步 更新tldr数据库 第三步 测试tldr功能 补充 未成功返回的错误类型 在安装之前你得先在Ubuntu上登入你自己的账户 当然你肯定在刚安装好Ubuntu的时候就注册自己的账户并且登录了 第一步 执行安
  • 大页内存(HugePages)在通用程序优化中的应用

    今天给大家介绍一种比较新奇的程序性能优化方法 大页内存 HugePages 简单来说就是通过增大操作系统页的大小来减小页表 从而避免快表缺失 这方面的资料比较贫乏 而且网上绝大多数资料都是介绍它在Oracle数据库中的应用 这会让人产生一种
  • 2021-01-17

    静态路由实验 实验目的 1 全网所有网段全部基于192 168 1 0 24划分所得 2 R1 R4每台设备均有两个环回 3 全网可达 4 尽量减少路由条目 且防止环路 5 R5的环回5 5 5 5 24不能出现在其他的设备路由表中 6 按
  • 2021-04-12

    NLP 自然语言处理 和CV相比 nlp最大的特点是特征是离散的 不像cv中是一幅图 nlp是一个个的句子 简单说几点nlp的难点 1 相同意思的句子表达有多种 我爱踢足球 足球是我的爱好 我的爱好之一是足球 2 相同词在不同语境中意思不同