自然語言處理背後的資料科學
大資料文摘出品
來源:medium
編譯:陸震、夏雅薇
自然語言處理(NLP)是電腦科學和人工智慧範疇內的一門學科。
NLP是人與機器之間的溝通,使得機器既可以解釋我們的語言,也可以就此作出有效回答。自20世紀50年代以來,這個領域一直存在,你可能聽說過Alan Turing開創的“圖靈測試”。圖靈測試測量計算機對人類所提出問題做出反應的好壞程度。
如果第三方的人不能分辨出人和該計算機之間的區別,那麼該計算系統就是智慧的。20世紀50年代以來,人類為此努力了很多年,如今終於在資料科學和語言學領域取得了許多進展。
本文將詳細介紹自然語言處理領域的一些演算法的基本功能,包含一些Python程式碼示例。
標記化
開始自然語言處理之前,我們看幾個非常簡單的文字解析。標記化是將文字流(如一句話)分解為構成它的最基本的單詞的過程。例如,下面一句話:“紅狐狸跳過月球。”這句話有7個單詞。
使用python標記句子:
myText ='The red fox jumps over the moon.' myLowerText = myText.lower() myTextList = myLowerText.split() print(myTextList) OUTPUT:['the','red','fox','jumps','over','the','moon']
詞性歸類
詞性用於確定句法功能。英語中的主要詞性有:形容詞,代詞,名詞,動詞,副詞,介詞,連詞和感嘆詞。這用於根據其用法推斷單詞的含義。例如,permit可以是名詞和動詞。作動詞:“I permit you to go to the dance.”作名詞:“Did you get the permit from the country.”
使用Python判斷詞性:(使用NLTK庫)
你必須安裝NLTK,這是一個用於自然語言處理的Python庫。
關於NLTK的說明:
import nltkmyText = nltk.word_tokenize('the red fox jumps over the moon.')print('Parts of Speech:',nltk.pos_tag(myText))OUTPUT:Parts of Speech:[('the','DT' ),('red','JJ'),('fox','NN'),('jumps','NNS'),('over','IN'),('the','DT' ),('moon','NN'),('.','.')]
你能看出NLTK是如何將句子分解為單個單詞並說明其詞性,如('fox','NN'):
NN noun, sigular 'fox'
停用詞刪除
許多句子和段落都包含一些幾乎無實際意義的單詞,包括“a”,“and”,“an”和“the”。停用詞過濾是指從句子或單詞流中刪除這些單詞。
使用Python和NLTK實現停用詞過濾:
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
example_sent =“a red fox is an animal that is able to jump over the moon.”
stop_words = set(stopwords.words('english'))
word_tokens = word_tokenize(example_sent)
filtered_sentence = [w for w in word_tokens if not w in stop_words]
filtered_sentence = [] for w in word_tokens: if w not in stop_words:filte
red_sentence.append(w)print(filtered_sentence)OUTPUT:
['red','fox','animal','able','jump','moon','.']
詞幹提取
詞幹化是減少單詞噪聲的過程,也被稱為詞典歸一化。它減少了單詞的變化。例如,單詞“fishing”的詞幹為“fish”。
詞幹化用於將單詞簡化到其基本含義。另一個很好的例子是“喜歡”這個詞,它是許多單詞的詞幹,如:“likes”,“liked”和“likely”。
搜尋引擎也是使用詞幹的。在許多情況下,用這種方法來搜尋其中一個單詞以返回包含該集合中另一個單詞的文件可能是非常有用的。
需要使用Python和NLTK庫實現詞幹化:
from nltk.stem import PorterStemmer
From nltk.tokenize import word_tokenize
ps = PorterStemmer()
words = [“likes”,“possible”,“likes”,“liking”]
for w in words:
print(w,“:”,ps.stem(w))
OUTPUT:
('likes', ':', u'like')
('likely', ':', u'like')
('likes', ':', u'like')
('liking', ':', u'like')
詞形還原
詞幹化和詞形歸併非常相似,它們都使你能夠找到根詞。這被稱為單詞字歸一化,兩者可以生成相同的輸出。但是,它們的工作原理非常不同。詞幹試圖切分單詞,而詞形歸併讓你能夠看清單詞是名詞,動詞還是其他詞性。
例如單詞'saw',詞幹化返回'saw',詞形歸併返回'see'和'saw'。詞形歸併通常會返回一個可讀的單詞,而詞幹化可能不會。可以看下面的一個示例以瞭解差異。
from nltk.stem import PorterStemmer
From nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
ps = PorterStemmer()
words = [“corpora”,“constructing”,“better”,“done”,“worst”,“pony”]
for w in words:
'v')) =
OUTPUT:
corpora STEMMING:corpora LEMMATIZATION
corporaconstructing STEMMING:
construct LEMMATIZATION
constructingbetter STEMMING:
better LEMMATIZATION gooddone STEMMING:
done LEMMATIZATION doneworst STEMMING:
worst LEMMATIZATION badpony STEMMING:
poni LEMMATIZATION pony
結論
語言學是對語言,形態,句法,語音和語義的研究。包括資料科學和計算在內的這三個領域在過去60年中已經興起爆發。我們剛剛只是探索了在NLP中一些非常簡單的文字分析。Google,Bing和其他搜尋引擎利用此技術幫助你在世界範圍網路中查詢資訊。
想想讓Alexa播放你最喜歡的歌曲是多麼容易,或者Siri如何幫助你確定方向。這完全是因為NLP。計算系統中的自然語言不是噱頭或玩具,而是我們生活中無縫對接計算系統的未來。
Arcadia Data剛剛釋出了5.0版,其中包括我們稱之為Search Based BI的自然語言查詢功能。它使用了上面描述的一些資料科學和文字分析功能。
用我們的Search Based BI工具檢視此影片:
相關報導:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31562039/viewspace-2642886/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- eBay資料科學家李睿:自然語言處理在eBay的技術實踐資料科學自然語言處理
- 自然語言處理(NLP)自然語言處理
- 自然語言處理(NLP)系列(一)——自然語言理解(NLU)自然語言處理
- 有趣的自然語言處理資源集錦自然語言處理
- 自然語言處理(NLP)概述自然語言處理
- 自然語言處理NLP(四)自然語言處理
- Python自然語言處理Python自然語言處理
- 自然語言處理中的遷移學習(下)自然語言處理遷移學習
- 自然語言處理中的遷移學習(上)自然語言處理遷移學習
- 深度學習、自然語言處理和表徵方法深度學習自然語言處理
- Python自然語言處理 1 語言處理與PythonPython自然語言處理
- 自然語言處理的最佳實踐自然語言處理
- HanLP 自然語言處理 for nodejsHanLP自然語言處理NodeJS
- [譯] 自然語言處理真是有趣!自然語言處理
- 自然語言處理:分詞方法自然語言處理分詞
- 自然語言處理與分析(one)自然語言處理
- 深度學習浪潮中的自然語言處理技術深度學習自然語言處理
- 自然語言處理常用資源筆記分享自然語言處理筆記
- 機器學習/深度學習/自然語言處理學習路線機器學習深度學習自然語言處理
- 免費資源列表:想學自然語言處理的打包帶走!自然語言處理
- 精通Python自然語言處理 3 :形態學Python自然語言處理
- 中國語文(自然語言處理)作業自然語言處理
- 自然語言處理(NLP)的主要範疇自然語言處理
- Python自然語言處理 3 處理原始文字Python自然語言處理
- 自然語言處理中的語言模型預訓練方法自然語言處理模型
- 《深度學習進階:自然語言處理》中的網址深度學習自然語言處理
- 自然語言處理之jieba分詞自然語言處理Jieba分詞
- 人工智慧 (06) 自然語言處理人工智慧自然語言處理
- 機器學習工作坊 - 自然語言處理機器學習自然語言處理
- 配置Hanlp自然語言處理進階HanLP自然語言處理
- 自然語言處理NLP快速入門自然語言處理
- 自然語言處理(NLP)入門指南自然語言處理
- 使用Mahout實現自然語言處理自然語言處理
- 自然語言處理與情緒智慧自然語言處理
- 專業貼:100+個自然語言處理資料集自然語言處理
- Python自然語言處理 2 獲得文字語料和詞彙資源Python自然語言處理
- Python自然語言處理 6 學習分類文字Python自然語言處理
- 《NLP漢語自然語言處理原理與實踐》學習四自然語言處理