首页 > 其他分享 >NLP 基础知识

NLP 基础知识

时间:2022-09-18 10:24:42浏览次数:108  
标签:NLP 解析 NN 基础知识 JJ 识别 文本 NNP

NLP 基础知识

ñ 自然语言处理 (NLP) 是人工智能的一个子集,它处理计算机如何处理和理解自然语言或人类语言。它用于以语音或文本的形式处理人类语言,以便计算机可以使用它并对其进行分析以识别上下文和意图。它远非完美,在这个领域还有很多需要探索和改进的地方。然而,无论我们是否知道,它都被应用在我们的日常生活中。一些例子包括:

  1. 虚拟个人助理应用程序,例如 Siri、Alexa 和 OK Google
  2. 文字处理器,例如 Grammarly 和 Google Docs 语法检查
  3. 电子邮件过滤器可将垃圾邮件与重要电子邮件分开
  4. 谷歌翻译等翻译程序
  5. 用于多种应用的聊天机器人,例如自动化客户服务

这个怎么运作

对于人类来说,句子和段落很容易阅读,我们可以很快地从中提取意义。然而,对于计算机而言,人类语言的无数规则难以理解,使得从文本或语音中提取信息变得极其困难。

因此,计算机需要使用算法来 预处理数据 将其转化为易于理解的结构化形式,称为 语料库 .这包括使用诸如 标记化,去除停用词,词形还原 .

这样做之后,可以使用不同形式的语法分析句子/文本的结构或句法。 解析 .这包括 词性 (POS) 标记 , 浅解析或分块 , **** 和 依赖解析。

最后,可以使用各种不同的方法来分析文本的含义。但是,本文将重点介绍 命名实体识别。

值得庆幸的是,您不需要从头开始执行所有这些操作。 NLTK 和 spaCy 都是 Python 的优秀 NLP 库,但我将在本文中使用 NLTK。

预处理数据

代币化

标记化是将文本分成定义的单元(例如句子或单词)的过程。也可以丢弃标点符号等字符。这是开始将数据结构化为可用形式的有用步骤。这方面的一个例子是:

这输出:

 ['自然','语言','处理','nlp','is','a','子集','of','人工','智能','which','交易',' with','how','computers','process','and','understand','natural','language','or','human','language','it','is' , 'used', 'to', 'processes', 'human', 'language', 'in', 'the', 'form', 'of', 'speech', 'or', 'text', '所以','那个','it','can','be','used','by','the','computer','and','analyzed','to','recognize' , 'context', 'and', 'intent', 'it', 'is', 'far', 'from', 'perfect', 'and', 'there', 'is', 'still', ' much', 'to', 'be', 'explored', 'and', 'improved', 'in', 'this', 'field']

如您所见,我以本文的第一句话为例。每个单独的单词都被逐条列出,所有字符都小写,标点符号被删除。

去除停用词

去除停用词是一种从某些文本中去除脂肪的方法。停用词是不会给句子增加太多意义的词(例如“the”、“and”、“to”)。没有要删除的停用词列表,但通常使用预定义的停用词列表或自定义列表。以下是 NLTK 停用词列表的示例:

 {'我们自己','她的','之间','你自己','但是','再次','那里','关于','曾经','期间','出去','非常','拥有','与','他们','拥有','an','be','some','for','do','its','yours','such','into' , 'of', 'most', 'self', 'other', 'off', 'is', 's', 'am', 'or', 'who', 'as', 'from', '他”、“每个”、

这一步会减少无用的文本数量,我们只会关注句子的重要部分。使用之前的标记化文本,可以在此处看到一个示例:

这输出:

 ['自然','语言','处理','nlp','子集','人工','智能','交易','计算机','过程','理解','自然','语言','人类','语言','使用','过程','人类','语言','形式','语音','文本','使用','计算机','分析' , 'recognize', 'context', 'intent', 'far', 'perfect', 'still', 'much', 'explored', '改进', 'field']

如您所见,与初始文本相比,单词要少得多,因为从语料库中删除了诸如“is”和“and”之类的单词。

停用词的删除可能会带来问题,因为可以通过删除这些词来删除某些含义或上下文。因此,重要的是要注意选择要删除的单词。

词形还原

词形还原是将文本中的单词简化为由它们的词条或词根定义的项目的过程。例如,“frustrating”和“frustrated”的引理是“frustrate”。这种技术有助于将具有相似含义的相似词组织在一起,并进一步简化数据的内容。

但是,要做到这一点,需要指定被词形还原的词的词性以更好地进行词形还原。这将在稍后讨论。现在,这就是使用 POS 进行词形还原的样子:

导致:

 ['自然','语言','处理','nlp','子集','人工','智能','交易','计算机','过程','理解','自然','语言','人类','语言','使用','过程','人类','语言','形式','语音','文本','使用','计算机','分析' , 'recognize', 'context', 'intent', 'far', 'perfect', 'still', 'much', 'explore', '改进', 'field']

如您所见,复数词,例如“computers”变成了单数,而过去时的动词,例如“analyzed”、“explored”和“improved”,由于词形还原而变成了现在时。

解析

解析是将句子分成多个部分并理解它们的作用的过程。解析句子有许多不同的方法,包括词性 (POS) 标记、浅层解析或分块以及依赖解析。在所有这些方法中,算法用于识别文本元素并将其分离为这些单独的部分,并确定它们的含义。

词性标注

POS 标记将每个单词组织成它们的词性。以下是 NLTK 使用的一些重要 POS 标签的列表:

  • 神经网络: 名词,单数
  • 杰杰: 形容词
  • VB: 动词,基本形式
  • RB: 副词
  • PRP: 人称代词
  • 在: 介词/从属连词

这些类别可以进一步分为子类别。例如,JJ(形容词)可以分为JJR(比较形容词)和JJS(最高级形容词)。这一步使我们可以更有效地使用许多其他技术,例如词形还原。使用我们之前预处理的文本进行 POS 标记的示例:

这导致:

 [('natural', 'JJ'), ('language', 'NN'), ('processing', 'NN'), ('nlp', 'JJ'), ('subset', 'VBN') , ('人工', 'JJ'), ('智能', 'NN'), ('交易', 'NN'), ('计算机', 'NN'), ('进程', 'NN') , ('understand', 'JJ'), ('natural', 'JJ'), ('language', 'NN'), ('human', 'JJ'), ('language', 'NN') , ('use', 'NN'), ('process', 'NN'), ('human', 'JJ'), ('language', 'NN'), ('form', 'NN') , ('speech', 'NN'), ('text', 'NN'), ('use', 'NN'), ('computer', 'NN'), ('analyze', 'VBP') , ('recognize', 'VB'), ('context', 'JJ'), ('intent', 'NN'), ('far', 'RB'), ('perfect', 'JJ') , ('still', 'RB'), ('much', 'JJ'), ('explore', 'RBR'), ('improved', 'JJ'), ('field', 'NN') ]

浅解析

浅层解析类似于词性标注,但句子被分成短语的类别,例如名词短语,而不是词性。这样可以更好地理解句子结构。浅解析将导致文本被分成短语和词性,可以使用树形图进行可视化。

在这个例子中,我只使用给定的 POS 标签模式来解析和分类名词短语来识别它们。还有其他方法可以做到这一点,包括使用机器学习来识别不同类型的短语。

这是用于生成图表的代码:

依赖解析

依赖解析,顾名思义,就是确定句子中单词之间的关系和依赖关系。这可以帮助解码含义和上下文,并且在现实世界的应用程序中特别有用,因为即使语法不正确或词序错误,它也可以解码依赖关系。依赖关系也可以用解析树表示:

命名实体识别

命名实体识别在预处理后识别句子的重要部分,例如通过算法识别和分类人、位置、时间或组织等实体。这种技术对于大致了解文本的大致内容非常重要。

这个技巧可以看这里,这里我拉了最近的一篇文章的第一句 新闻文章 ,对其进行预处理和解析,并使用 NLTK 进行命名实体识别。

原句:

加拿大公共卫生署 (PHAC) 说 Brig.-Gen。 Krista Brodie 将接任负责监督 COVID-19 疫苗在加拿大的交付和分发的将军。

命名实体识别后的结果:

 (S /DT (组织公共/NNP 卫生/NNP 机构/NNP) 的/IN (GPE 加拿大/NNP) (组织 PHAC/NNP) 说/VBZ 准将/NNP (人克里斯塔/NNP布罗迪/NNP) 将/MD 采取/VB 过/RP 作为/IN /DT 将军/JJ 输入/输入 电荷/NN 的/IN 监督/VBG /DT 交货/NN 和/抄送 分布/NN 的/IN COVID-19/NNP 疫苗/NNS 跨/IN (GPE 加拿大/NNP) )

如图所示,该算法能够将公共卫生机构和 PHAC 识别为一个组织,将 Krista Brodie 识别为一个人,并将加拿大识别为 GPE(国家、城市或州)。这提供了大量信息,可以极大地帮助算法理解此类文本的主要思想。

代码在这里:

这可能看起来很多,但这只是触及 NLP 的表面。一篇文章无法涵盖 NLP 领域的广博深度,但所展示的这些概念对于任何 NLP 程序来说都是最重要的一些。归根结底,需要将机器学习算法和人工智能模型应用于这些数据,以产生真正的意义,从而将其应用于现实生活中的产品和服务。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/37536/11361810

标签:NLP,解析,NN,基础知识,JJ,识别,文本,NNP
From: https://www.cnblogs.com/amboke/p/16704295.html

相关文章

  • 张量分解(一)基础知识
    ......
  • ASP.NET Core 01基础知识概述
    Program.cs使用Web模板创建的ASP.NETCore应用包含Program.cs文件中的应用程序启动代码。Program.cs文件中包含:已配置应用所需的服务。应用的请求处理管道定义......
  • 学习现代 JavaScript (ES6+) 的基础知识
    学习现代JavaScript(ES6+)的基础知识您应该在代码中开始使用的10个现代功能您可能已经知道JavaScript是一种功能丰富的编程语言,每次更新都会不断增强。有很多事......
  • 【图像处理笔记】图像分割基础知识
    形态学处理相同,图像分割操作的输入是图像,输出是从图像中提取出来的属性。本章的大多数分割算法都基于图像灰度值的两个基本性质之一:不连续性和相似性。第一类方法根据灰度......
  • Docker基础知识 (9) - 使用 Docker 部署 Nginx + PHP + MariaDB(MySQL)并配置 phpMyAdmi
    1.部署PHP   1)部署环境       IP地址(本地测试环境):192.168.0.10       操作系统:LinuxCentOS7.9           Docker版本:20.10.7......
  • 实战 | 电商业务的性能测试(一): 必备基础知识
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取需求分析与测试设计(性能需求目标+业务模型拆解)测试数据准备和构造(基于模型的数据准备)性......
  • Python基础知识
    什么是Python命名空间?在Python中,所有的名字都存在于一个空间中,它们在该空间中存在和被操作——这就是命名空间。它就好像一个盒子,每一个变量都对应装着一个对象。当查询变......
  • 谷歌语法的基础知识&FOFA
    谷歌语法谷歌语法基础符号:"xxx":表示完全匹配,即关键字不能分开,顺序也不能变+:"xxx"+www.baidu.com 搜索xxx与baidu.com相关的内容-:"xxx"+www.baidu.com 搜索xxx排除......
  • mybatis的面试问题以及基础知识
    1.什么是映射,mybatis中的映射指的是什么?映射:人的身份证号唯一对应的唯一的人的性命,也就是通过特定的存在的关系将A和B一一对应,这就是映射,在计算机中,计算机只会听懂0和1,我......
  • Docker基础知识 (8) - 使用 Docker 部署 SpringBoot + MariaDB(MySQL)项目
    本文在“ Docker基础知识(7)-使用Docker部署SpringBoot项目”里的SpringbootWebDocker项目的基础上,添加JDBC、MariaDB和MyBatis相关依赖包和数据库操作代......