自然语言处理概述

文章目录

    • 本文系书稿选登。
    • 2.1 自然语言处理概述
      • 2.1.1 什么是自然语言处理
      • 2.1.2 自然语言处理的任务

已剪辑自: https://mp.weixin.qq.com/s/hSTkA2ffa1YWCoZOgQdrBQ

本文系书稿选登。

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

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

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

  1. 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
      
  2. SpeechRecognition:这是一款实现语音识别的库,支持多种引擎,提供了在线和离线两种模式。安装方法如下:

    pip install SpeechRecognition
    

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

#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 ,而后程序就会把我说的这句话(语音)转化为文本,并打印出来。

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 系统,往往是多项任务的组合。比如通过语音向电商平台的智能客服询问:请给我推荐一本不错的深度学习的书。而后智能客服也用语音回复:《飞桨:深度学习入门与实战》是读者反应很好的一本书。这个问答中至少包含了“语音和文本的相互转换”、“语义和情感分析”、“智能问答”等任务。

特别告知:我的个人网站资料已经都转移到 github 仓库,地址:https://github.com/qiwsir/,请诸位想办法访问。在其他地方发布的内容,均为权宜之计,可能不会及时更新。

你可能感兴趣的:(Python,自然语言处理,人工智能)