原文链接:https://mbd.baidu.com/newspage/data/landingshare?pageType=1&context=%7B%22nid%22%3A%22news_9396085122912252905%22%7D
原文标题:理顺3大步骤,精读4大核心,3分钟入门自然语言处理
新标题:
【注:本文作者原创作品,未经允许禁止抄袭。侵权必究!全网追踪】
核心一自然语言处理
自然语言就是自然形成的语言,是人类的语言,它区别于机器语言,机器语言是计算机表达信息的语言。所以NLP技术就是为了实现自然语言与机器语言之间的映射。人类的信息媒介主要是语音和文字,这两者包含了人类社会几乎所有的信息,因此NLP的研究是十分有必要的,借助于这一技术,我们将掌握人机对话、语义理解、机器翻译、信息检索、智能客服等技术。
NLTK库简介
NLTK库---Natural Language Toolkit,它是python下的一个著名的自然语言处理库,是当前学术界和工业界最活跃的自然语言处理库,借助于这个库,大量底层方法不需要我们去重复实现,直接调用即可,大大增加了我们自然语言处理系统的开发速度。NTLK的主要特点是上手容易;强大的社区支持,如果出问题了,能搜到现成的答案;自带语料库,词性分类库,自带分类分词等功能。因为NTLK包含了如此多的现成的东西,对于入门自然语言处理的新手,NTLK十分友好,同时研发团队在NTLK的基础上,还开发出了更加简单易操作的版本,这些版本使用NTLK的内核,但是操作更加简单,例如Textblob。
NTLK库安装
作为一个python库,安装起来是十分简单的,但是你需要准备好python的环境,这里推荐pyhton3.4或者python3.5。linux/Mac系统是带有python的,因此直接安装ntlk库即可,安装方法是终端输入(笔者使用的Ubuntu14.04系统):sudo pip install ntlk。如果是windows用户,也可以使用pip安装,这里笔者推荐直接安装Anaconda4.2.0,可以直接在清华镜像里找到,下载安装后,打开Anaconda Prompt,输入conda list命令回车,你会发现,NTLK已经自动安装好了,这是因为Anaconda是一个集成安装软件,python相关的500多个库是已经在Anaconda中预装好的。
下一步打开python,输入命令:import ntlk,如果没有报错,就说明安装好了。
核心二:语料库
文本语料库是一个大型结构化文本的集合。例如整理好的聊天记录。当前的自然语言处理主要依赖于数据,因此需要灌输大量数据进行训练,NTLK中就包含了许多语料库:
古滕堡语料库网络和聊天文本布朗语料库路透社语料库就职演讲语料库标注文本语料库等下载NTLK内的语料库
NTLK的语料库往往比较大,所以不能伴随NTLK一起安装,所以所以需要单独下载。只需要执行:nltk.download(),该方法会自动调用下载脚本。会跳出下载页面,点击下载对应的语料库即可。
语料库到底长什么样子
下载好语料库后,你肯定想看看这些语料库里到底存了什么高大上的东西。下面以上文提到的布朗语料库为例。
执行命令:
from nltk .corpus import brown#corpus指的是下载好的语料库,该方法导入了brown语料库
brown.categories()#该方法显示出部分brown语料库的类别名。
len(brown.sents())#可以显示出该语料库有57340个句子。
len(brown.words())#可以显示出该语料库有1161192个单词。
核心三:文本处理流程
第一步Tokenize:把一句话分解成n个组成部分,”the weather is very cool“,就可以分为5个单词。Tokenize,就是把“句”分成“词”的意思。
第二步词语向量化:得到了一句话中的词,然后用向量表示每个词,这种表达方式可以表示出词的词性,也可以表达出词的语义相似度。得到的结果简称为“词向量”,关于这一部分,请参考我的文章人工智能会说能听?全靠这个技术!全人类的进步!
第三步:调用算法,进行训练。
核心四文本处理流程---词分解精讲
python代码如下:
sentence = "hello,world"#命名一个句子为sentence。
token = nltk.word_tokenize(sentence)#token就是word_tokenize分解sentence句子的结果,token是一个列表,存储着句子中的各个词。
上述是对英文进行tokenize的处理方法,但是对中文并不适用,因为这一方法的分解依据是句子中的标点符号和空格,中文中一句话内单词之间并不会有空格,所以就无法用word_tokenize方法分解。
中文句子的处理方法主要有启发式和算法式,启发式指的是用一个新华词典,把句子中出现的每部分都与新华词典中的词进行对比,如果对比成功,就把这个词视为一个整体。
例如:这个西瓜很好吃。就可以经过词典的对比,分解为【“这个”,“西瓜”,“好吃”,“很”】
算法式,主要是使用隐马尔科夫HMM,CRF等统计方法进行分解。
例如python库jieba中的cut方法,就可以使用上述算法,对中文语句进行分解。同时,斯坦福大学研究的一个叫CoreNLP的库也是原生支持中文的。
【注:本文作者原创作品,未经允许禁止抄袭。侵权必究!全网追踪】
领取专属 10元无门槛券
私享最新 技术干货