概述

自然语言处理(NLP)的正式定义:是一个使用计算机科学、人工智能(AI)和形式语言学概念来分析自然语言的研究领域。不太正式的定义表明:它是一组工具,用于从自然语言源(如web页面和文本文档)获取有意义和有用的信息。
NLP工具的实现一般是基于机器学习与深度学习、其它算法(Lucene Core);基于前两者的实现是比较流行且持续在探索演进。

NLP任务概述

分词

文本可以分解为许多不同类型的元素,如单词、句子和段落(称为词或词项),并可选地对这些词执行附加处理;这种额外的处理可以包括词干提取、词元化(也称为词形还原)、停用词删除、同义词扩展和文本转换为小写。而分词一般都是基于各种分词器;比如Lucene、基于机器学习与深度学习的框架。

文本断句

文本断句也可以理解为文本识别。即识别句子(即断句);此项功能是有用的,原因有很多。一些NLP任务,如词性标注和实体提取,是针对单个句子的。对话式的应用程序还需要识别单独的句子。为了使这些过程正确工作,必须正确地确定句子边界。
将文本分割成语句也称为语句边界消歧(Sentence Boundary Disambiguation,SBD)。文本断句的常用方法包括使用一组规则或训练一个模型来检测它们。

特征工程

即用特征表示文本。特征工程在NLP应用开发中起着至关重要的作用,这对于机器学习非常重要,特别是在基于预测的模型中。它是利用领域知识将原始数据转换成特征的过程,从而使机器学习算法能够工作。特征使我们能够更集中地查看原始数据。一旦确定了特征,就进行特征选择以减少数据的维数。常用的框架及算法:

  • n-gram
  • 词嵌入
  • Glove
  • word2Vec
  • 降维
  • 主成分分析
  • t-SNE

命名实体识别

识别人和事物的过程称为命名实体识别(NER)。实体(诸如人物和地点等)与具有名称的类别相关联,而这些名称识别了它们是什么。
NER过程涉及两个任务:

  • 实体检测
  • 实体分类

检测是指在文本中找到实体的位置。一旦找到它,确定被发现的实体是什么类型非常重要。这两个任务完成后,其结果可以用来解决其他任务,如搜索和确定文本的含义。例如,任务可能包括从电影或书评识别名字,并帮助找到可能感兴趣的其他电影或书籍。提取位置信息有助于对附近的服务提供参考。

词性标注

标注是将描述分配给词项或部分文本的过程。此描述称为标签。词性标注是将词性标签分配给词项的过程。这个过程是检测词性的核心。
一般的标注过程包括标记文本、确定可能的标签和解决歧义标签。算法用于进行词性标识(标注)。一般有两种方法。

  • 基于规则:基于规则的标注器使用一组规则、单词词典和可能的标签。当一个单词有多个标签时可以使用这些规则。规则通常使用单词的上下文来选择标签。
  • 基于随机域:基于随机域的标注器要么是基于马尔可夫模型,要么是基于线索的,使用决策树或最大熵。马尔可夫模型是有限状态机,其中每个状态都有两个概率分布。其目的是为句子找到最优的标签序列。还可以使用隐马尔可夫模型(Hidden Markov Model,HMM)。在这些模型中,状态转换是不可见的。

对句子进行适当的标注可以提高后续处理任务的质量,可用于许多后续任务,如问题分析、文本情感分析等。

分类

分类涉及为文本或文档中找到的信息分配标签。当过程发生时,这些标签可能已知,也可能未知。当标签已知时,这个过程称为分类。当标签未知时,该过程称为聚集。
文本分类用于多种目的:垃圾邮件检测、著作权归属、情感分析、年龄和性别识别、确定文档的主题、语言识别等。
有两种基本的文本分类技术:

  • 基于规则的分类
  • 有监督的机器学习

基于规则的分类使用单词和其他属性的组合,这些属性是根据专家精心设计的规则组织起来的。这些方法非常有效,但是创建它们是一个非常耗时的过程。有监督的机器学习(Supervised machine learning,SML)采用一组带注释的训练文档来创建模型。该模型通常称为分类器。有许多不同的机器学习技术,包括朴素贝叶斯、支持向量机(Support Vector Machine,SVM)和k近邻算法等。

关系提取

关系提取是标识文本中存在的关系的过程。
实体之间(例如句子的主语和它的宾语、其他实体,或者它的行为之间)存在各种关系。我们可能还想确定关系并以结构化的形式呈现它们。我们可以使用这些信息来显示结果,以供人们立即使用,或者格式化关系,以便更好地将它们用于后续任务。
提取的关系可以用于多种目的,包括:

  • 建立知识库
  • 创建目录
  • 产品搜索
  • 专利分析
  • 股票分析
  • 情报分析

有许多可用的技术来提取关系。可分为如下几种:

  • 手工方式
  • 监督方法
  • 半监督方法或无监督方法
  • 引导方法
  • 远程监督方法
  • 无监督的方法

参考

《Java自然语言处理(原书第2版)》

聊聊自然语言处理NLP的更多相关文章

  1. 自然语言处理NLP快速入门

    自然语言处理NLP快速入门 https://mp.weixin.qq.com/s/J-vndnycZgwVrSlDCefHZA [导读]自然语言处理已经成为人工智能领域一个重要的分支,它研究能实现人与 ...

  2. 国内知名的自然语言处理(NLP)团队

    工业界 腾讯人工智能实验室(Tencent AI Lab) 百度自然语言处理(Baidu NLP):对外提供了百度AI开放平台,王海峰(现任百度副总裁,AI技术平台体系AIG总负责人) 微软亚洲研究院 ...

  3. 自然语言处理(NLP)

    苹果语音助手Siri的工作流程: 听 懂 思考 组织语言 回答 这其中每一步骤涉及的流程为: 语音识别 自然语言处理 - 语义分析 逻辑分析 - 结合业务场景与上下文 自然语言处理 - 分析结果生成自 ...

  4. 自然语言处理(NLP) - 数学基础(1) - 总述

    正如我在<2019年总结>里说提到的, 我将开始一系列自然语言处理(NLP)的笔记. 很多人都说, AI并不难啊, 调现有库和云的API就可以啦. 然而实际上并不是这样的. 首先, AI这 ...

  5. 自然语言处理(NLP) - 数学基础(1) - 排列组合

    正如我在<自然语言处理(NLP) - 数学基础(1) - 总述>一文中所提到的NLP所关联的概率论(Probability Theory)知识点是如此的多, 饭只能一口一口地吃了, 我们先 ...

  6. 自然语言处理NLP学习笔记一:概念与模型初探

    前言 先来看一些demo,来一些直观的了解. 自然语言处理: 可以做中文分词,词性分析,文本摘要等,为后面的知识图谱做准备. http://xiaosi.trs.cn/demo/rs/demo 知识图 ...

  7. 国内外自然语言处理(NLP)研究组

     国内外自然语言处理(NLP)研究组 *博客地址 http://blog.csdn.net/wangxinginnlp/article/details/44890553 *排名不分先后.收集不全,欢迎 ...

  8. 曼孚科技:AI自然语言处理(NLP)领域常用的16个术语

    ​自然语言处理(NLP)是人工智能领域一个十分重要的研究方向.NLP研究的是实现人与计算机之间用自然语言进行有效沟通的各种理论与方法. 本文整理了NLP领域常用的16个术语,希望可以帮助大家更好地理解 ...

  9. Java自然语言处理NLP工具包

    1. Java自然语言处理 LingPipe LingPipe是一个自然语言处理的Java开源工具包.LingPipe目前已有很丰富的功能,包括主题分类(Top Classification).命名实 ...

  10. word2vec 在 非 自然语言处理 (NLP) 领域的应用

    word2vec 本来就是用来解决自然语言处理问题的,它在 NLP 中的应用是显然的. 比如,你可以直接用它来寻找相关词.发现新词.命名实体识别.信息索引.情感分析等:你也可以将词向量作为其他模型的输 ...

随机推荐

  1. 快速上手Linux核心命令(十一):Linux用户相关命令

    目录 前言 useradd 创建用户 usermod 修改用户信息 userdel 删除用户 groupadd 创建新的用户组 groupdel 删除用户组 passwd 修改用户密码 chage 修 ...

  2. 【Python基础】 什么是函数

    函数是一段可重用的代码块,它接受输入参数并返回输出.函数在程序设计中具有很多优点,如: 代码重用:在程序中可以重复调用相同的代码块,使程序更加简洁.高效. 模块化设计:函数是模块化设计的基本单元,可以 ...

  3. 2020-08-22:I/O多路复用中select/poll/epoll的区别?

    福哥答案2020-08-22: select,poll,epoll 都是 操作系统实现 IO 多路复用的机制. 我们知道,I/O 多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是 ...

  4. react中useRef的应用

    何为useRef useRef是随着react函数式组件发展而来的,是react众多官方hook中的一个,调用useRef可以返回一个伴随这组件整个声明周期不发生改变的对象,这个对象常见的用途有两个: ...

  5. 文心一言 VS 讯飞星火 VS chatgpt (28)-- 算法导论5.1 3题

    三.假设你希望以1/2的概率输出0与 1.你可以自由使用一个输出0或1的过程 BIASED-RANDOM.它以某概率 p 输出1,概率 1-p 输出0,其中 0<p<1 ,但是 p 的值未 ...

  6. 为什么说 Go 语言字符串是不可变的?

    原文链接: 为什么说 Go 语言字符串是不可变的? 最近有读者留言说,平时在写代码的过程中,是会对字符串进行修改的,但网上都说 Go 语言字符串是不可变的,这是为什么呢? 这个问题本身并不困难,但对于 ...

  7. 我们浏览 GitHub 时,经常看到 "WIP" 的分支,即 Work In Progress,正在开发过程中(尚不能独立的运行)的代码。这部分的代码在 Github/Gitlab 中将禁用“合......

    本文分享自微信公众号 - 生信科技爱好者(bioitee).如有侵权,请联系 support@oschina.cn 删除.本文参与"OSC源创计划",欢迎正在阅读的你也加入,一起分 ...

  8. 一致性hash算法原理及实践

    大家好,我是蓝胖子,想起之前学算法的时候,常常只知表面,不得精髓,这个算法到底有哪些应用场景,如何应用在工作中,后来随着工作的深入,一些不懂的问题才慢慢被抽丝剥茧分解出来. 今天我们就来看看工作和面试 ...

  9. ProtocolBuffers的国际化和本地化支持

    目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 5. 优化与改进 34.< Protocol Buffers 的国际化和本地化支持> 本文将介绍 ...

  10. WPF 项目使用 Grpc.Tools

    1 WPF 项目使用 Grpc.Tools 1.1 方法一 把 proto 文件和 Grpc.Tools 单独建一个类库项目,WPF 项目引用这个类库项目. 解决 Grpc.Tools 自动生成的 C ...