'數據科學家最喜歡的5個自然語言處理Python庫'

"
開源最前線(ID:OpenSourceTop)猿妹編譯鏈接:https://www.oschina.net/news/109235/twitter-opensources-rezolus


互聯網上大約有70%以上的數據不是結構化格式的。非結構化數據包括傳感器數據、圖像、視頻文件、音頻文件、網站和API的數據、社交媒體數據、電子郵件以及更多與文本相關的信息。


由於其特殊的特性,我們無法以一種簡單的方式處理數據,為了解決這一問題,在大數據和數據科學環境下,出現了許多技術和工具來解決這一問題。


自然語言處理是人工智能領域的前沿技術之一。它研究能實現人與計算機之間用自然語言進行有效通信的各種理論和方法。NLP的最終目標是以一種有價值的方式閱讀、破譯、理解和理解人類語言。大多數NLP技術依靠機器學習從人類語言中獲得意義。


基於NLP最著名的應用是:

  • Google Speech Recognition.
  • Apple’s Siri.
  • Microsoft’s Cortona.
  • Amazon’s Alexa.
  • Ok Google in Android Mobiles.
  • Interactive voice responses used in call centers.
  • Grammarly


讓我們看看python中有哪些庫是最常用的,可用來構建NLP模型:


1、spaCy

非常優化的NLP庫,可以與TensorFlow或PyTorch等深度學習框架一起使用。


它是一個高級的NLP庫,可在Python和Cython中的使用,它幫助我們可以進行快速的開發,spaCy提供了預先訓練的統計模型和單詞向量,目前支持50多種語言的標記化。它具有最先進的速度,卷積神經網絡模型的標籤,解析和命名實體識別和易於深入學習集成。


實現示例


# Importing the Library
import spacy
NLPLagnguageType = spacy.load('en')
text = NLPLanguageType('Earth Revolves around the sun.')
# Iterating over the text
for token in text:
print(token.text,token_pos_)


在上面的例子中,我們實現了一個簡單的NLP例子,他將輸出文本,並加上每個單詞的詞性:

> > >地球名詞

> > >是動詞


這樣的例子不勝枚舉。它將生成給定文本中每個單詞的詞性。


2、Gensim

Gensim是一個用於從文檔中自動提取語義主題的Python庫,目標受眾是自然語言處理(NLP)和信息檢索(IR)社區。具有以下特性:

  • 內存獨立- 對於訓練語料來說,沒必要在任何時間將整個語料都駐留在RAM中
  • 有效實現了許多流行的向量空間算法-包括tf-idf,分佈式LSA, 分佈式LDA 以及 RP;並且很容易添加新算法
  • 對流行的數據格式進行了IO封裝和轉換
  • 在其語義表達中,可以相似查詢
  • gensim的創建的目的是,由於缺乏簡單的(java很複雜)實現主題建模的可擴展軟件框架


實現示例

import gensim
id2word = gensim.corpora.Dictionary.load_from_text('wiki_en_wordids.txt')
mm = gensim.corpora.MmCorpus('wiki_en_tfidf.mm')
lda = gensim.models.ldamodel.LdaModel(corpus=mm, id2word=id2word, num_topics=10, update_every=1, chunksize=10000, passes=1)
lda.print_topics(1)


上面示例可以看到一個通過LDA從Wikipedia轉儲中提取主題的非常簡單的示例。


3、Pattern

Pattern 是採用 Python 開發的數據挖掘庫,用於抓取和解析各種數據源,如谷歌、Twitter、Wikipedia等等。


它提供了各種NLP工具(PoS標籤、n- gram、WordNet)、機器學習功能(向量空間模型、聚類、分類)和用於進行網絡分析的各種工具。它是由CLiPS維護的,因此不僅有很好的文檔和許多例子,而且有許多學術出版物正在利用圖書館。


實際示例


# Importing Libraries
from pattern.web import Google
from pattern.en import ngrams
engine = Google(license=API_LICENSE)
for result in engine.search('NLP', cached=False):
print(result.url, result.text)
print(ngrams(result.text, n=2))


在上面的示例中,是爬取谷歌以獲取包含關鍵字“NLP”的結果,它將輸出所有的結果url和文本。雖然這確實是一個毫無意義的示例,但它展示瞭如何通過Pattern執行爬行和NLP任務。


4、Natural Language Tool KIT [NLTK]

它是可用來訓練NLP模型的最好的庫之一。這個庫很容易使用。它是一個初學者友好的NLP庫。它有很多預先訓練好的模型和語料庫,可以幫助我們很容易地分析事物。


實際示例


# Importing Libraries
import nltk
text = 'Earth Revovles around the Sun.'
# Token Generator--> Separates the sentence into tokens
tokens = nltk.word_tokenize(text)
for token in tokens:
print(token)


word_tokenize()將幫助我們將一組文本創建為簡單的單詞。我們把它叫做token


輸出


Earth
Revolves
around
the
Sun


5、TextBlob

它基於Pattern和NLTK,後者為所有常見的NLP操作提供了一個很棒的API調用。它不是最快或最完整的庫,但它以一種極容易訪問和管理的方式提供了人們日常所需功能。


實際示例


# Importing Module
from textblob import TextBlob
text = 'Earth Revolves around the sun.'
text_blob = TextBlob(text)
for sentence in blob.sentences:
print(sentence.sentiment.polarity)


在上面的示例中,我們考慮NLTK庫中獲取的相同示例文本。在這個程序中,textblob首先將句子分割成Token,並在標記上執行情感分析,這只是句子極性分析。


我希望你對Python中自然語言的流行庫有一個完整,由於NLP是一門難學課程,初學者可能無法正確理解它。但是那些想要開始NLP的人,那麼你應該使用上面的任何一個庫。如果你是一名自然語言處理的新手,我強烈建議您從NLTK開始,這將是一個很好的開始。

"

相關推薦

推薦中...