网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
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 第三方模块。
-
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:这是一款实现语音识别的库,支持多种引擎,提供了在线和离线两种模式。安装方法如下:
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
,而后程序就会把我说的这句话(语音)转化为文本,并打印出来。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**