聊聊自然语言处理NLP
概述
自然语言处理(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的更多相关文章
- 自然语言处理NLP快速入门
自然语言处理NLP快速入门 https://mp.weixin.qq.com/s/J-vndnycZgwVrSlDCefHZA [导读]自然语言处理已经成为人工智能领域一个重要的分支,它研究能实现人与 ...
- 国内知名的自然语言处理(NLP)团队
工业界 腾讯人工智能实验室(Tencent AI Lab) 百度自然语言处理(Baidu NLP):对外提供了百度AI开放平台,王海峰(现任百度副总裁,AI技术平台体系AIG总负责人) 微软亚洲研究院 ...
- 自然语言处理(NLP)
苹果语音助手Siri的工作流程: 听 懂 思考 组织语言 回答 这其中每一步骤涉及的流程为: 语音识别 自然语言处理 - 语义分析 逻辑分析 - 结合业务场景与上下文 自然语言处理 - 分析结果生成自 ...
- 自然语言处理(NLP) - 数学基础(1) - 总述
正如我在<2019年总结>里说提到的, 我将开始一系列自然语言处理(NLP)的笔记. 很多人都说, AI并不难啊, 调现有库和云的API就可以啦. 然而实际上并不是这样的. 首先, AI这 ...
- 自然语言处理(NLP) - 数学基础(1) - 排列组合
正如我在<自然语言处理(NLP) - 数学基础(1) - 总述>一文中所提到的NLP所关联的概率论(Probability Theory)知识点是如此的多, 饭只能一口一口地吃了, 我们先 ...
- 自然语言处理NLP学习笔记一:概念与模型初探
前言 先来看一些demo,来一些直观的了解. 自然语言处理: 可以做中文分词,词性分析,文本摘要等,为后面的知识图谱做准备. http://xiaosi.trs.cn/demo/rs/demo 知识图 ...
- 国内外自然语言处理(NLP)研究组
国内外自然语言处理(NLP)研究组 *博客地址 http://blog.csdn.net/wangxinginnlp/article/details/44890553 *排名不分先后.收集不全,欢迎 ...
- 曼孚科技:AI自然语言处理(NLP)领域常用的16个术语
自然语言处理(NLP)是人工智能领域一个十分重要的研究方向.NLP研究的是实现人与计算机之间用自然语言进行有效沟通的各种理论与方法. 本文整理了NLP领域常用的16个术语,希望可以帮助大家更好地理解 ...
- Java自然语言处理NLP工具包
1. Java自然语言处理 LingPipe LingPipe是一个自然语言处理的Java开源工具包.LingPipe目前已有很丰富的功能,包括主题分类(Top Classification).命名实 ...
- word2vec 在 非 自然语言处理 (NLP) 领域的应用
word2vec 本来就是用来解决自然语言处理问题的,它在 NLP 中的应用是显然的. 比如,你可以直接用它来寻找相关词.发现新词.命名实体识别.信息索引.情感分析等:你也可以将词向量作为其他模型的输 ...
随机推荐
- 关于PM系统以及OA系统的工作基本心态
这个系统的目的是什么? 这个系统的初衷是好的,是一个信息化管理的数据科学系统,目的是更好的累计公司的业务数据. 但实际操作过程中,包括推广过程中,你能看到上层人员对于这个系统的态度,更像是一个个人企业 ...
- Golang每日一库之regex
本文地址: https://www.cnblogs.com/zichliang/p/17387436.html Golang日库合集:https://www.cnblogs.com/zichliang ...
- 文心一言 VS chatgpt (7)-- 算法导论2.3 3~4题
三.使用数学归纳法证明:当n刚好是2的幂时,以下递归式的解是 T(n)=nlgn.若n=2,T(n)=2:若n=2^k,k>1,T(n)=2T(n/2)+n. 文心一言: chatgpt: 首先 ...
- 2022-09-20:以下go语言代码输出什么?A:8 8;B:8 16;C:16 16;D:16 8。 package main import ( “unsafe“ “fmt“ )
2022-09-20:以下go语言代码输出什么?A:8 8:B:8 16:C:16 16:D:16 8. package main import ( "unsafe" " ...
- 2022-06-14:数组的最大与和。 给你一个长度为 n 的整数数组 nums 和一个整数 numSlots ,满足2 * numSlots >= n 。总共有 numSlots 个篮子,编号为 1
2022-06-14:数组的最大与和. 给你一个长度为 n 的整数数组 nums 和一个整数 numSlots ,满足2 * numSlots >= n .总共有 numSlots 个篮子,编号 ...
- 2021-08-15:给定一个字符串Str,返回Str的所有子序列中有多少不同的字面值。
2021-08-15:给定一个字符串Str,返回Str的所有子序列中有多少不同的字面值. 福大大 答案2021-08-15: 返回值=上+新-修正. 时间复杂度:O(N) 空间复杂度:O(N). 代码 ...
- ODOO升级模块后到系统进入不了,报错500
有时候安装后者升级odoo相关模块后会导致系统进入不了,报错500,此时我们可以通过Odoo命令行卸载相关模块 此方法适用于在安装或升级某个模块后导致崩库,进不去桌面的情况下使用.原理是通过odoo- ...
- 通过实例了解vue3.3更新的特征
开场白 5月份,vue团队发布了 vue3.3. 这次小版本的发布主要解决了-- Vue 与 TypeScript 一起使用时的许多长期存在的痛点. 下面我们一起来学习一下vue3.3新特征 准备新新 ...
- C++ 单例模式的各种坑及最佳实践
单例模式是设计模式中最简单.常见的一种.其主要目的是确保整个进程中,只有一个类的实例,并且提供一个统一的访问接口.常用于 Logger 类.通信接口类等. 基本原理 限制用户直接访问类的构造函数,提供 ...
- 【leetcode】#647 回文子串 Rust Solution
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串.具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串. 示例 1:输入:"abc"输出:3解释 ...