ag视讯

400-700-1307

Python NLP 入门教程

2019-01-26 10:04
本文简要引见Python天然言语措置(NLP),操纵Python的NLTK库。NLTK是Python的天然言语措置东西包,在NLP范畴中,最常操纵的一个Python库。
 
什么是NLP?
简单来说,天然言语措置(NLP)就是斥地能够理解人类言语的利用法度或处事。
这里会商一些天然言语措置(NLP)的现实利用例子,如语音识别、语音翻译、理解完整的句子、理解婚配词的同义词,以及生成语法切确完整句子和段落。
这并不是NLP能做的所有工作。
NLP实现
搜刮引擎: 比如谷歌,Yahoo等。谷歌搜刮引擎晓得你是一个手艺人员,所以它显示与手艺相关的功能;
社交网站推送:比如Facebook News Feed。若是News Feed算法晓得你的乐趣是天然言语措置,就会显示相关的告白和帖子。
语音引擎:比如Apple的Siri。
垃圾邮件过滤:如谷歌垃圾邮件过滤器。和通俗垃圾邮件过滤不合,它通过体味邮件内容里面的的深层意义,来判断是不是垃圾邮件。
NLP 库
下面是一些开源的天然言语措置库(NLP):
· Natural language toolkit (NLTK);
· Apache OpenNLP;
· Stanford NLP suite;
· Gate NLP library
此中天然言语东西包(NLTK)是最受欢迎的天然言语措置库(NLP),它是用Python编写的,并且背后有很是强大的社区支撑。
NLTK也很容易上手,现实上,它是最简单的天然言语措置(NLP)库。
在这个NLP教程中,我们将操纵Python NLTK库。
安装 NLTK
 
若是您操纵的是Windows/Linux/Mac,您能够操纵pip安装NLTK:
打开python终端导入NLTK查抄NLTK可否切确安装:
若是一切成功,这意味着您曾经成功地安装了NLTK库。初度安装了NLTK,需要通过运转以下代码来安装NLTK扩展包:
这将弹出NLTK 下载窗口来选择需要安装哪些包: 
您能够安装所有的包,因为它们的大小都很小,所以没有什么问题。
操纵Python Tokenize文本
起首,我们将抓取一个web页面内容,然后阐发文本体味页面的内容。
我们将操纵urllib模块来抓取web页面:
从打印功能中能够看到,功能包含良多需要清理的HTML标签。 然后BeautifulSoup模块来清洗多么的文字:
此刻我们从抓取的网页中获得了一个干净的文本。 下一步,将文本转换为tokens,像多么:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps2023.tmp.png统计词频
text曾经措置完毕了,此刻操纵Python NLTK统计token的频次分布。
能够通过挪用NLTK中的FreqDist()编制实现:
若是搜刮输出功能,能够发觉最常见的token是PHP。 您能够挪用plot函数做出频次分布图:
这上面这些单词。比如of,a,an等等,这些词都属于停用词。
一般来说,停用词理当删除,防止它们影响阐发功能。
措置停用词
NLTK自带了良多种言语的停用词列表,若是你获取英文停用词:
此刻,编削下代码,在画图之前断根一些无效的token:
最终的代码理当是多么的:
此刻再做一次词频统计图,成果会比之前好些,因为剔除了停用词:
操纵NLTK Tokenize文本
在之前我们用split编制将文本分割成tokens,此刻我们操纵NLTK来Tokenize文本。
文本没有Tokenize之前是无法措置的,所以对文本进行Tokenize很是次要的。token化过程意味着将大的部件豆割为小部件。
你能够将段落tokenize成句子,将句子tokenize成单个词,NLTK分袂供给了句子tokenizer和单词tokenizer。
假如有多么这段文本:
操纵句子tokenizer将文本tokenize成句子:
输出如下:
这是你可能会想,这也太简单了,不需要操纵NLTK的tokenizer都能够,间接操纵正则表达式来拆分句子就行,因为每个句子都有标点和空格。
那么再来看下面的文本:
多么若是操纵标点符号拆分,Hello Mr将会被认为是一个句子,若是操纵NLTK:
输出如下:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps2024.tmp.png这才是切确的拆分。
接下来尝尝单词tokenizer:
输出如下:
Mr.这个词也没有被分隔。NLTK操纵的是punkt模块的PunktSentenceTokenizer,它是NLTK.tokenize的一部分。并且这个tokenizer颠末熬炼,能够合用于多种言语。
非英文 Tokenize
Tokenize时能够指定言语:
输出功能如下:
同义词措置
操纵nltk.download()安装界面,此中一个包是WordNet。
WordNet是一个为天然言语措置而成立的数据库。它包含一些同义词组和一些简短的定义。
您能够多么获取某个给定单词的定义和示例:
输出功能是:
 
WordNet包含了良多定义:
功能如下:
能够像多么操纵WordNet来获取同义词:
输出:
反义词措置
也能够用同样的编制获得反义词:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps2034.tmp.png输出:
词干提取
言语形态学和动静检索里,词干提取是去除词缀获得词根的过程,例如working的词干为work。
搜刮引擎在索引页面时就会操纵这种手艺,所以良多酬报不异的单词写出不合的版本。
有良多种算法能够避免这种环境,最常见的是波特词干算法。NLTK有一个名为PorterStemmer的类,就是这个算法的实现:
输出功能是:
还有其他的一些词干提取算法,比如 Lancaster词干算法。
非英文词干提取
除了英文之外,SnowballStemmer还支撑13种言语。
支撑的言语:
你能够操纵SnowballStemmer类的stem函数来提取像多么的非英文单词:
单词变体还原
单词变体还原雷同于词干,但不合的是,变体还原的功能是一个其实的单词。不合于词干,当你试图提取某些词时,它会发生雷同的词:
功能:
功能可能会是一个同义词或同一个意义的不合单词。
有时候将一个单词做变体还原时,总是获得不异的词。
这是因为言语的默认部分是名词。要获得动词,能够多么指定:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps2035.tmp.png
 
功能:
现实上,这也是一种很好的文本压缩编制,最终获得文本只需原先的50%到60%。
功能还能够是动词(v)、名词(n)、描述词(a)或副词(r):
输出:
词干和变体的区别
通过下面例子来不雅察:
输出:file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps2036.tmp.png
词干提取不会考虑语境,这也是为什么词干提取比变体还原快且切确度低的启事。
小我认为,变体还原比词干提取更好。单词变体还原前去一个其实的单词,即便它不是同一个单词,也是同义词,但至多它是一个其实具有的单词。
若是你只关怀速度,不在意切确度,这时你能够选用词干提取。
在此NLP教程中会商的所有步伐都只是文本预措置。在当前的文章中,将会操纵Python NLTK来实现文本分析。
我曾经尽量使文章通俗易懂。但愿能对你有所辅佐。

获取更多免费本钱加qq群:869484885
兄弟连官网:www.lhx888.com
 

免费本钱

开班动静

当前校区

北京校区
  • 北京校区
  • 上海校区
  • 广州校区
  • 沈阳校区
  • 杭州校区
  • 南京校区
  • 郑州校区
  • 成都校区
  • 深圳校区
  • 西安校区
  • 姑苏校区
  • 深圳沙井
  • 深圳不雅澜
  • 深圳龙岗
  • 武汉校区
  • 西宁校区
  • 石家庄校区
  • 湖北咸宁
  • 广东惠州
  • 广东佛山
  • 北京 Python熬炼营 2019-04-24
  • 北京 Java熬炼营 2019-04-24
  • 北京 Java就业班 2019-05-09
  • 北京 Python就业班 2019-05-09
  • 北京 PHP就业班 2019-05-16
  • 北京 UI/UE就业班 2019-05-22
  • 北京 区块链就业班 2019-05-22
  • 上海 Java就业班 2019-05-09
  • 上海 Python就业班 2019-05-09
  • 上海 PHP就业班 2019-06-20
  • 上海 Java就业班 2019-07-17
  • 上海 Python就业班 2019-07-17
  • 上海 PHP就业班 2019-07-25
  • 上海 PHP就业班 2019-08-22
  • 广州 Python就业班 2019-05-09
  • 广州 Java就业班 2019-05-09
  • 广州 PHP就业班 2019-06-19
  • 广州 PHP就业班 2019-07-17
  • 广州 Python就业班 2019-07-17
  • 广州 Java就业班 2019-07-17
  • 广州 Python就业班 2019-08-13
  • 沈阳 Java就业班 2019-05-09
  • 沈阳 PHP就业班 2019-05-16
  • 沈阳 PHP就业班 2019-06-19
  • 沈阳 UI/UE就业班 2019-06-20
  • 沈阳 PHP就业班 2019-07-17
  • 沈阳 Java就业班 2019-07-17
  • 沈阳 Python就业班 2019-07-17
  • 杭州 PHP就业班 2019-05-16
  • 杭州 PHP就业班 2019-06-19
  • 杭州 Python就业班 2019-07-17
  • 南京 PHP就业班 2019-05-16
  • 南京 Java就业班 2019-06-11
  • 南京 PHP就业班 2019-07-17
  • 南京 Java就业班 2019-08-13
  • 郑州 PHP就业班 2019-05-16
  • 郑州 Python就业班 2019-06-11
  • 郑州 PHP就业班 2019-06-19
  • 郑州 PHP就业班 2019-07-17
  • 郑州 UI/UE就业班 2019-07-18
  • 郑州 Java就业班 2019-08-13
  • 郑州 Python就业班 2019-08-13
  • 成都 Python就业班 2019-06-11
  • 成都 Python就业班 2019-08-13
  • 成都 Python预科班 2019-09-24
  • 成都 Python就业班 2019-10-29
  • 成都 Python预科班 2019-12-18
  • 深圳 Java就业班 2019-05-09
  • 深圳 Java就业班 2019-06-11
  • 深圳 UI/UE就业班 2019-06-20
  • 深圳 Java就业班 2019-07-17
  • 深圳 PHP就业班 2019-07-17
  • 深圳 UI/UE就业班 2019-08-22
  • 深圳 Java就业班 2019-09-10
  • 西安 Java就业班 2019-05-09
  • 西安 Python预科班 2019-05-17
  • 西安 PHP预科班 2019-05-17
  • 西安 Java就业班 2019-06-11
  • 西安 Python就业班 2019-06-11
  • 西安 Python预科班 2019-06-20
  • 西安 PHP预科班 2019-06-20
  • 姑苏 UI/UE就业班 2019-05-22
  • 姑苏 PHP就业班 2019-06-19
  • 姑苏 UI/UE就业班 2019-07-18
  • 姑苏 PHP就业班 2019-08-21

                    Copyright © 2007-2019 IT兄弟连教育 版权所有 京ICP备11018177号  京公网安备 11010802026987号