-NLP(自然语言处理)开发




python自然语言处理库 python自然语言处理与开发_用python进行自然语言处理


什么是NLP ?自然语言处理(NLP)是关于开发能够理解人类语言的应用程序和服务。一些NLP的实际例子比如:词典翻译、聊天机器人、情绪分析等。

以下是自然语言处理(NLP)的一些成功应用:

  • 搜索引擎:如谷歌,雅虎等。谷歌搜索引擎知道你是一个技术人员,所以它会显示与你相关的结果。
  • 像Facebook新闻这样的社交网站。news feed算法使用自然语言处理了解你的兴趣,并显示相关的广告和帖子。
  • 语音引擎,比如苹果Siri。
  • 垃圾邮件过滤器,如谷歌垃圾邮件过滤器。这不仅仅是普通的垃圾邮件过滤,现在垃圾邮件过滤器了解邮件内容,看看它是不是垃圾邮件。

1、如何使用Python从NLP开始?

自然语言工具包(NLTK)是最流行的自然语言处理(NLP)库,它是用Python编写的,并且NLTK也非常容易学习,在本NLP教程中,我们将使用Python NLTK库。在开始安装NLTK之前,我假设你已经了解一些Python基础知识。

安装nltk,如果你使用的是Windows或Linux或Mac,可以使用pip安装NLTK:

$ pip install nltk

要检查NLTK是否安装正确,可以打开python终端并输入以下内容:

Import nltk

如果一切顺利,这意味着你已经成功安装了NLTK库。一旦你安装了NLTK,你应该通过运行以下代码来安装NLTK包:

import nltknltk.download()


python自然语言处理库 python自然语言处理与开发_python是用什么语言开发的_02


2、获取网页文字内容

在这里,我们将学习如何在Python中使用NLTK与web识别页面有关的内容。首先,我们将抓取一个页面并分析文本,以了解该页面是关于什么的。urllib模块将帮助我们抓取网页:

import urllib.requestresponse =  urllib.request.urlopen('https://en.wikipedia.org/wiki/SpaceX')html = response.read()print(html)

从这个链接可以很清楚地看出,页面是关于SpaceX的,现在让我们看看我们的代码是否能够正确识别页面的上下文。我们将使用Beautiful Soup,这是一个用于从HTML和XML文件中提取数据的Python库。我们将使用beautiful soup来清理HTML标记的网页文本。

from bs4 import BeautifulSoupsoup = BeautifulSoup(html,'html5lib')text = soup.get_text(strip = True)print(text)


python自然语言处理库 python自然语言处理与开发_python是用什么语言开发的_03


现在我们已经从抓取的web页面中获得了文本,让我们将文本转换为tokens:

tokens = [t for t in text.split()]print(tokens)


python自然语言处理库 python自然语言处理与开发_python自然语言处理库_04


3、统计词频

nltk提供了一个函数FreqDist(),它将为我们完成这项工作。此外,我们将删除一些词(a, at, the, for等)从我们的网页,因为我们不需要他们来妨碍我们的词频计数。我们将为网页中出现频率最高的单词绘制图表,以便清楚地了解网页的上下文:

from nltk.corpus import stopwordssr= stopwords.words('english')clean_tokens = tokens[:]for token in tokens:    if token in stopwords.words('english'):        clean_tokens.remove(token)freq = nltk.FreqDist(clean_tokens)for key,val in freq.items():    print(str(key) + ':' + str(val))freq.plot(20, cumulative=False)


python自然语言处理库 python自然语言处理与开发_python是用什么语言开发的_05


python自然语言处理库 python自然语言处理与开发_用python进行自然语言处理_06


代码已经正确地识别出该网页谈论的是SpaceX。你同样可以识别新闻文章、博客等。现在我们已经成功地迈出了学习NLP的第一步,接下来我们会更深入的了解NLP~