前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自然语言处理概述

自然语言处理概述

作者头像
老齐
发布2022-12-09 20:41:51
3.2K0
发布2022-12-09 20:41:51
举报
文章被收录于专栏:老齐教室老齐教室

本文系书稿选登。

2.1 自然语言处理概述

自然语言处理(Natural Language Processing,NLP)是计算机科学、人工智能和语言学的交叉学科,其范畴广泛,比如:语音合成、分词、词法分析、问答系统、机器翻译、情感分析等等。

2.1.1 什么是自然语言处理

对于开发者而言,至少掌握了一种自然语言,也至少掌握了一种计算机编程语言。自然语言是人与人之间用于相互分享信息的语言,比如在程序中的注释,都是以自然语言的方式说明相应代码的含义,以便于其他人理解;编程语言是我们用以告诉计算机应该做什么的“命令”,一般是通过编译器或解释器转化为“机器能理解”的“机器语言”。

在人与人之间通常信息交流中,不需要将自然语言“翻译”成“机器语言”,但是,在解决某些场景的任务时,如果要将计算机作为解决问题的工具,则需要让“机器”能理解“自然语言”。

例如:在对《红楼梦》这部名著研究上(称为“红学”),对于其前八十回和后四十回是否是同一个作者,在“红学”界曾经有争论。以胡适、俞平伯、周汝南等研究者为代表的一派认为前八十回为曹雪芹创作,后四十回是高鹗续写;而鲁迅、林语堂、王国维、白先勇等研究者则认为整部书是曹雪芹一人写就。可以说,文学家是用“文学方法”对《红楼梦》进行研究,得出上述论断的。如果让工程师来研究这个命题,一种简单的方法就是对《红楼梦》文本中的关键词进行聚类,如果前八十回和四十回的关键词汇所在的类别,有比较明显区分,那么就可以判断是两个作者(代码参考:https://nbviewer.org/github/yunshuipiao/sw-kaggle/blob/master/experimental/sidamingzhu/01.ipynb),从而为“作者是谁”的纠纷提供了科学证据。类似的工作还有判断戏剧《亨利八世》的作者(参考:https://arxiv.org/pdf/1911.05652.pdf),也是用“技术”作为工具,为结论提供证据。

在上述示例中,“计算机”是人研究著作中的自然语言的工具,须让“机器”读懂自然语言,这个过程就是自然语言处理(NLP)。

以文学作品为载体的自然语言,毕竟是少量的,更大量的自然语言以网页、社交媒体、电话、邮件、广播以及各种日常交谈等媒介和方式、途径传播,据 IBM 研究,2017年的时候,每天产生 2.5 艾字节(艾字节,即:Exabyte,缩写为 EB,是信息的计量单位,

1EB = 1,000,000,000,000 MB=10^{12}MB

)。显然,现如今应该比这个数字还大。而这些自然语言,多数是以非结构化的文本或语音形式存在,如何理解和处理这些海量的非结构化数据,是 NLP 的核心目标之一。例如针对特定问题的基于社交媒体的舆情分析,就是要通过对社交媒体上的大量文本和音、视频中的自然语言进行分析,从而得出或者帮助相关人员得出某些结论。

有很大可能,读者已经在使用日常生活中使用到了 NLP 技术,比如用翻译软件将一段中文翻译为英文,这背后就是 NLP 技术的支撑。在这里,我们可以用一种简单的方式,初步体验 NLP 技术。

在本地计算机上安装如下两个 Python 第三方模块。

PyAudio:这是一款适用于多种操作系统的音频 I/O 库,通过它能够在 Python 程序中播放和记录音频信息。

  • 在 Windows 系统上,执行如下安装指令: pip install pyaudio
  • 在 MacOS 系统上,执行如下安装指令: brew install portaudio pip install pyaudio
  • 在 GNU/Linux 系统上,首先安装 portaudio19-dev ,方法如下: sudo apt-get update -y sudo apt-get install -y portaudio19-dev 并且已经配置了 Python 3 开发环境,而后执行如下指令安装: pip install pyaudio 也可以用下述指令直接安装,但不保证是最新版: sudo apt install python3-pyaudio

SpeechRecognition:这是一款实现语音识别的库,支持多种引擎,提供了在线和离线两种模式。安装方法如下:

代码语言:javascript
复制
pip install SpeechRecognition

以上模块安装完毕,创建一个 Python 程序(此处命名为 speech.py ),该程序代码如下:

代码语言:javascript
复制
#coding:utf-8

import speech_recognition as sr

r = sr.Recognizer()

with sr.Microphone() as source:
    print("Talk")
    audio_text = r.listen(source)
    print("Time over, thanks")
    
    try:
        print(f"Text: {r.recognize_google(audio_text)}")
    except:
        print("Sorry, I did not get that.")

执行此程序,并在出现提示语 Talk 的时候,对着计算机的话筒说一句简短的话(仅限于说英语,这是由所用模块决定的) ,比如我在测试中说的是 What's your name ,而后程序就会把我说的这句话(语音)转化为文本,并打印出来。

代码语言:javascript
复制
code % python speech.py
Talk
Time over, thanks
Text: what's your name

通过上述示例,初步体验到了 NLP 技术,特别是使用有关库和模块,自己也能完成有关技术的开发。诚然,自然语言处理所要解决的问题还很多,下面就具体介绍。

2.1.2 自然语言处理的任务

在实际的生活、生产等领域,NLP 能够完成的或者我们希望 NLP 完成的的任务有很多种,下面列出几项:

  • 分词(Tokenization):一般认为,词是研究一个句子所表达含义的最小单位(即所谓最小“粒度”)。不同的自然语言,分词的难易程度不同。对于英文,会用空格区分句子中的词,如“I am an old coder”。但是,中文则不然,比如本书中的中文内容,每个字和每个字之间并没有天然的分隔符,更何况,不同的划分结果,还会出现对句子含义的不同理解。例如“打死老虎”,如果是“打死/老虎”,那么就显示了“武松”的气概;但在鲁迅先生的《坟·论“费厄泼赖”应该缓行》一文中,须为“打/死老虎”,才与后文的“装怯作勇,颇含滑稽,虽然不免有卑怯之嫌,却怯得令人可爱。”相匹配。故,中文分词有难度。
  • 词义消歧(Word-sense Disambiguation,WSD):同一个词在不同句子中,会有不同的含义,这种现象在各类自然语言中都比较常见,比如“秋后算账”和“会计正在算账”中的“算账”,在两个句子中有不同的含义。WSD 的任务就在于识别词的正确含义。
  • 命名实体识别(Named Entity Recognition,NER):所谓命名实体,是指可以用专有名词(或名称)标识的事物,在句子中,一般包括人名、地名、机构名、专有名词等,也包括时间、数字等。NER 的任务就是将这些词从句子中抽取出来。例如“《机器学习数学基础》是电子工业出版社2022年出版的”,其中的“机器学习数学基础”(作品)、“电子工业出版社”(组织机构)、“2022年”(时间)就是这句话中的命名实体。NER 是信息检索和知识表示的基础。
  • 词性标注(Part-of-Speech(PoS)tagging):即用一个表示词性的标签标记句子中的词,如名词、动词、形容词、副词、介词等。
  • 文本分类(Text Classification),也又称为“文本标注”(Text Tagging):指在给定的分类体系中,将文本划分到某个或某几个类别中。被分类的文本可能是短文本,例如句子、标题、商品评论等等;也可能是长文本,如文章等。分类体系一般是人为规定,比如新闻类别:政治、体育、军事等;商品评论的情感倾向:正向、负向;等等。
  • 自然语言生成(Natural Language Generation,NLG):是指用大量文本组成的语料库训练深度学习模型,而后用该模型自动生成新的文本,比如“自动写新闻”、“聊天机器人”等,都是 NLG 的典型应用。
  • 问答(Question Answering, QA):自动地为客户解答有关问题,是 NLP 在商业上的一个重要任务。一个智能化的 QA 系统涉及 NLP 的很多方面内容,比如信息检索、知识表示等,甚至于也与特定的商业内容息息相关。这也说明,开发智能化程度较高的 QA 系统是一项具有挑战性的工作。
  • 机器翻译(Machine Translation,MT):由于操不同自然语言的人之间分享信息的需要,机器翻译也就很早即成为了科学家们的研究对象。自从 1954 年成功将 60 句俄文自动翻译为英文之后,研究者通过不同方法提升机器翻译的效果,并降低成本,直到现如今被普遍采用的在线翻译工具。当然,如今的 MT ,距离“如同真人一样”的目标仍有很大的发展空间。

以上几项,并非 NLP 的全部任务。一个能够协助人完成日常任务的 NLP 系统,往往是多项任务的组合。比如通过语音向电商平台的智能客服询问:请给我推荐一本不错的深度学习的书。而后智能客服也用语音回复:《飞桨:深度学习入门与实战》是读者反应很好的一本书。这个问答中至少包含了“语音和文本的相互转换”、“语义和情感分析”、“智能问答”等任务。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老齐教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本文系书稿选登。
  • 2.1 自然语言处理概述
    • 2.1.1 什么是自然语言处理
      • 2.1.2 自然语言处理的任务
      相关产品与服务
      NLP 服务
      NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档