赞
踩
@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府
本文实例讲述了Python自然语言处理 NLTK 库用法。分享给大家供大家参考,具体如下:
在这篇文章中,我们将基于 Python 讨论自然语言处理(NLP)。本教程将会使用 Python NLTK 库。NLTK 是一个当下流行的,用于自然语言处理的 Python 库。
那么 NLP 到底是什么?学习 NLP 能带来什么好处?
简单的说,自然语言处理( NLP )就是开发能够理解人类语言的应用程序和服务。
我们生活中经常会接触的自然语言处理的应用,包括语音识别,语音翻译,理解句意,理解特定词语的同义词,以及写出语法正确,句意通畅的句子和段落。
NLP的作用
正如大家所知,每天博客,社交网站和网页会产生数亿字节的海量数据。
有很多公司热衷收集所有这些数据,以便更好地了解他们的用户和用户对产品的热情,并对他们的产品或者服务进行合适的调整。
这些海量数据可以揭示很多现象,打个比方说,巴西人对产品 A 感到满意,而美国人却对产品 B 更感兴趣。通过NLP,这类的信息可以即时获得(即实时结果)。例如,搜索引擎正是一种 NLP,可以在正确的时间给合适的人提供适当的结果。
但是搜索引擎并不是自然语言处理(NLP)的唯一应用。还有更好更加精彩的应用。
NLP的应用
以下都是自然语言处理(NLP)的一些成功应用:
搜索引擎,比如谷歌,雅虎等等。谷歌等搜索引擎会通过NLP了解到你是一个科技发烧友,所以它会返回科技相关的结果。
社交网站信息流,比如 Facebook 的信息流。新闻馈送算法通过自然语言处理了解到你的兴趣,并向你展示相关的广告以及消息,而不是一些无关的信息。
语音助手,诸如苹果 Siri。
垃圾邮件程序,比如 Google 的垃圾邮件过滤程序 ,这不仅仅是通常会用到的普通的垃圾邮件过滤,现在,垃圾邮件过滤器会对电子邮件的内容进行分析,看看该邮件是否是垃圾邮件。
NLP库
现在有许多开源的自然语言处理(NLP)库。比如:
Natural language toolkit (NLTK)
Apache OpenNLP
Stanford NLP suite
Gate NLP library
自然语言工具包(NLTK)是最受欢迎的自然语言处理(NLP)库。它是用 Python 语言编写的,背后有强大的社区支持。
NLTK 也很容易入门,实际上,它将是你用到的最简单的自然语言处理(NLP)库。
在这个 NLP 教程中,我们将使用 Python NLTK 库。在开始安装 NLTK 之前,我假设你知道一些 Python入门知识。
安装 NLTK
如果你使用的是 Windows , Linux 或 Mac,你可以 使用PIP 安装NLTK: # pip install nltk。
在本文撰写之时,你可以在 Python 2.7 , 3.4 和 3.5 上都可以使用NLTK。或者可以通过获取tar 进行源码安装。
要检查 NLTK 是否正确地安装完成,可以打开你的Python终端并输入以下内容:Import nltk。如果一切顺利,这意味着你已经成功安装了 NLTK 库。
一旦你安装了 NLTK,你可以运行下面的代码来安装 NLTK 包:
import nltk
nltk.download()
这将打开 NLTK 下载器来选择需要安装的软件包。
你可以选择安装所有的软件包,因为它们的容量不大,所以没有什么问题。现在,我们开始学习吧!
使用原生 Python 来对文本进行分词
首先,我们将抓取一些网页内容。然后来分析网页文本,看看爬下来的网页的主题是关于什么。我们将使用 urllib模块来抓取网页:
import urllib.request
response = urllib.request.urlopen('http://php.net/')
html = response.read()
print (html)
从打印输出中可以看到,结果中包含许多需要清理的HTML标记。我们可以用这个 BeautifulSoup 库来对抓取的文本进行处理:
from bs4 import BeautifulSoup
import urllib.request
response = urllib.request.urlopen('http://php.net/')
html = response.read()
soup = BeautifulSoup(html,"html5lib")
text = soup.get_text(strip=True)
print (text)
现在,我们能将抓取的网页转换为干净的文本。这很棒,不是么?
最后,让我们通过以下方法将文本分词:
from bs4 import BeautifulSoup
import urllib.request
response = urllib.request.urlopen('http://php.net/')
html = response.read()
soup = BeautifulSoup(html,"html5lib")
text = soup.get_text(strip=True)
tokens = [t for t in text.split()]
print (tokens)
词频统计
现在的文本相比之前的 html 文本好多了。我们再使用 Python NLTK 来计算每个词的出现频率。NLTK 中的FreqDist( ) 函数可以实现词频统计的功能 :
from bs4 import BeautifulSoup
import urllib.request
import nltk
response = urllib.request.urlopen('http://php.net/')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。