NLP(Natural language processing,自然语言处理)是一门涵盖语言学、计算机科学、人工智慧等多个领域的科学,研究人与计算机之间用自然语言进行有效通信的理论方法,简单来说,NLP 就是开发能够理解人类语言的应用程序或服务。自然语言处理是很大的一门范畴和学问,这里讨论一些自然语言处理的例子,如分词、分句、词性划分、理解匹配词的同义词,当然,这并不是 NLP 能做的所有事情,笔者并不是想让读者进行非常高深学问的学习,读者只需要掌握我们用到的可能性较大的方法。

NLTK(Natural Language Toolkit,自然语言工具包)在用 Python 处理自然语言的工具中处于领先的地位,同时,它基于 Python 构建。它提供了 WordNet 这种方便处理词汇资源的接口(拥有超过 50 个语料库和词汇资源),还有分类、分词、除茎、标注、语法分析、语义推理等类库,最让人惊喜的一点是,它基于 Apache2.0 开源协议免费发放。NLTK 是一个第三方包,你需要通过 pip 或者其他的包管理器更或是源码进行安装,但仅仅是安装 NLTK 库,那么它的大部分方法你都无法使用。NLTK 库中,自带一个函数download(),会打开一个类似于下图的界面。

  • 安装
    pip install nltk
import nltk
nltk.download()

使用该命令可以打开这样一个界面,用来下载‘包’

NLPIR软件下载 nlp软件是什么_NLP

你也可以使用以下命令直接下载

nltk.download('[包名]')

下载完成之后,你需要将下载的内容存放在这些位置之一。

  • ‘C:\Users\xxxxx/nltk_data’
  • ‘C:\nltk_data’
  • ‘D:\nltk_data’
  • ‘D:\nltk_data’
    #后三个盘符、目录随着你的 Python 安装目录而改变
  • ‘F:\Python\nltk_data’
  • ‘F:\Python\share\nltk_data’
  • ‘F:\Python\lib\nltk_data’
  • ‘C:\Users\xuyichenmo\AppData\Roaming\nltk_data’

当你很自信的认为已经整理好 nltk_data,并且能够正常使用,那么你可以使用这个命令来确认

from nltk.book import *

返回结果:

NLPIR软件下载 nlp软件是什么_自然语言处理_02

文本统计

  • 首先我们来看一个命令:
text1.concordance('different')

这句话实现的是从这一大串字符串中找寻出包含 different 这个单词的语句,返回的结果如下:

NLPIR软件下载 nlp软件是什么_NLP_03

  • 统计标点符号和单词的出现频率,这个命令可以说是在我们进行数据处理的时候相当常用了
from nltk import FreqDist
fdist=FreqDist(text1)
fdist.most_common(10)

NLPIR软件下载 nlp软件是什么_NLPIR软件下载_04

fdist.plot(10)

NLPIR软件下载 nlp软件是什么_NLPIR软件下载_05

  • 另外,如果你使用这个命令,可以查看这些单词在文本中分布位置,x 轴代表全部文本,每一个蓝色的短纵列都代表一次出现
text4.dispersion_plot(['citizens','democracy ', 'freedom ', 'duties', 'America'])

NLPIR软件下载 nlp软件是什么_NLTK_06

分析方法

除了简单的文本统计,NLTK 库还为我们提供了许多的分析方法

  • 这个函数会给我们两个单词具有的相同上下文单词,给定的两个参数你必须首先用中括号括起来,然后再用小括号括起来。
text2.common_contexts(["monstrous", "very"])

NLPIR软件下载 nlp软件是什么_NLP_07

  • 还有一个功能很相像的函数:
text1.similar("different")

在这里插入图片描述
text1.similar([文字]),可以告诉我们和我们指定的字符具有相同作用(并不是它们的语义相同)的单词,比如说,我们经常使用 beautiful 来形容 girl,那么这个函数可能就会给我们返回 handsome(同样用来形容 girl)

  • NLTK 库还有一个命令用于分句:
sent_tokenize(text)

可能 1 会疑问如果是很规范的文本,我们直接根据标点符号进行断句就可以了,为什么还要使用这个命令呢?

那么像"Hi Mr. Liu, how are you? Blessing for you"这种呢,称谓之间的标点符号很明显你是不可以把它单独分割成一个句子的,这时候 NLTK 库的分句用法就会展现出它的强大。

NLPIR软件下载 nlp软件是什么_自然语言处理_08