天然语言处理(NLP)是数据科学中最有趣的子领域之一,愈来愈多的数据科学家但愿可以开发出涉及非结构化文本数据的解决方案。尽管如此,许多应用数据科学家(均具备STEM和社会科学背景)依然缺少NLP(天然语言处理)经验。前端
在这篇文章中,我将探讨一些基本的NLP概念,并展现如何使用日益流行的Python spaCy包来实现这些概念。这篇文章适合NLP初学者阅读,但前提是假设读者具有Python的知识。算法
spaCy是一个相对较新的包,“工业级的Python天然语言工具包”,由Matt Honnibal在Explosion AI.开发。它在设计时目标用户以应用数据科学家为主,这也意味着它不须要用户来决定使用哪一个算法来处理常见任务,并且它很是地快—快得难以置信(它用Cython来实现)。若是你熟悉Python数据科学栈,spaCy就是NLP的numpy,它虽然理所固然地位于底层,可是却很直观,性能也至关地高。工具
spaCy为任何NLP项目中经常使用的任务提供一站式服务.包括:性能
符号化(Tokenizatioin)
词干提取(Lemmatization)
词性标注(Part-of-speech tagging)
实体识别(Entity recognition)
依存句法分析(Dependency parsing)
句子的识别(Sentence recognition)
字-向量变换(Word-to-vector transformation)
许多方便的清除文本和标准化文本的方法(cleaning and normalizing text)spa
我会对这些功能作一个高层次的概述,并说明如何利用spaCy访问它们。设计
首先,咱们加载spaCy的管线,按照约定,它存储在一个名为nlp的变量中。须要花几秒钟时间声明该变量,由于spaCy预先将模型和数据加载到前端,以节省时间。实际上,这样作能够提早完成一些繁重的工做,使得nlp解析数据时开销不至于过大。 请注意,在这里,咱们使用的语言模型是英语,同时也有一个功能齐全的德语模型,在多种语言中都可实现标记化(将在下面讨论)。指针
咱们在示例文本中调用NLP来建立Doc对象。Doc 对象是文本自己NLP任务容器,将文本切分红文字(Span 对象)和元素(Token 对象),这些对象实际上不包含数据。值得注意的是Token 和 Span对象实际上没有数据。相反,它们包含Doc对象中的数据的指针,而且被惰性求值(即根据请求)。绝大多数spaCy的核心功能是经过对Doc (n=33), Span (n=29),和 Token (n=78)对象的方法来实现的。orm