介绍
自然语言处理(NLP)是人工智能的主要领域之一。NLP在许多智能应用程序中扮演着重要的角色,例如自动聊天机器人、文章摘要、多语言翻译和数据识别。每一个利用NLP来理解非结构化文本数据的行业,不仅要求准确,而且要迅速获得结果。
自然语言处理是一个广阔的领域,NLP中的一些任务是文本分类、机器翻译、问题应答和概念识别。在我的其中一篇文章中,我讨论了在NLP实现中使用的各种工具和组件。文章大多数都在论及库-NLTK (自然语言工具包)组件。
而在这篇文章中,我将说一说强大的spaCy组件。
1.关于spaCy和安装
1.1 关于
spaCy是用Cython语言编写的,(Python的C扩展,它的目的是将C语言的性能交给Python程序)。它是一个相当快的NLP库。spaCy提供了一个简洁的API来访问它的方法和属性,它由经过训练的机器(以及深度)学习模型来管理。
1.2 安装
spaCy的数据以及它的模型可以使用python包索引和设置工具轻松地安装。使用以下命令在您的计算机中来安装spaCy:
sudo pip install spacy
对于Python3,在上面的命令中使用“pip3”替换“pip”。或者点这里下载源代码并在解压之后运行以下命令:
python setup.py install
下载所有的数据和模型,在安装之后运行以下命令:
python -m spacy.en.download all
现在准备就绪去探索和使用spaCy啦!
2.spaCy的pipeline和属性
通过创建pipeline来启动spaCy实现和对不同属性的访问。Pipeline是通过加载模型来创建的。程序包中提供了不同类型的模型,其中包含关于语言的信息—词汇表、受过训练的向量、语法和实体。
我们将加载一个英语核心web的默认模型。
import spacy
nlp = spacy.load(“en”)
对象“NLP”用于创建文档、访问语言注释和不同的NLP属性。让我们通过在pipeline中加载文本数据来创建一个文档。我使用从tripadvisor网站获得的酒店的评论。数据文件可以在 这里下载。
document = unicode(open(filename).read().decode('utf8'))
document = nlp(document)
这份文件现在已经成为了spaCy英语模型的类的一部分,并与许多属性相关联。
文档(或Token)的属性可以使用以下命令列出:
dir(document)
>> [ 'doc', 'ents', … 'mem']
这将输出大量的文档属性,例如-Token、Token的引用索引、语音标记的一部分、实体、向量、情绪、词汇表等等。让我们来探索其中的一些属性。
2.1令牌化技术(TOKENIZATION)
每个spaCy文档都被标记为句子,并进一步进入Tokens,可以通过迭代文档来访问:
# first token of the doc
document[0]
>> Nice
# last token of the doc
document[len(document)-5]
>> boston
# List of sentences of our doc
list(document.sents)
>> [ Nice place Better than some reviews give it credit for.,
Overall, the rooms were a bit small but nice.,
...
Everything was clean, the view was wonderful and it is very well located (the Prudential Center makes shopping and eating easy and the T is nearby for jaunts out and about the city).]
2.2 词性标注(POS)
词性标注是词在语法正确的句子中所使用的词的属性。这些标记可以用作信息过滤、统计模型和基于规则的解析的文本特性。
让我们检查一下我们文档的所有pos标签:
# get all tags
all_tags = {w.pos: w.pos_ for w in document}
>> {97: u'SYM', 98: u'VERB', 99: u'X', 101: u'SPACE', 82: u'ADJ', 83: u'ADP', 84: u'ADV', 87: u'CCONJ', 88: u'DET', 89: