天然語言處理(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