0
本文作者: AI研習社-譯站 | 2018-08-17 10:31 |
雷鋒網(wǎng)按:本文為雷鋒字幕組編譯的技術博客,原標題 Holy NLP! Understanding Part of Speech Tags, Dependency Parsing, and Named Entity Recognition,作者為 Peter Baumgartner。
翻譯 | 陳濤 程思婕 整理 | 凡江
簡介
當我們提到數(shù)據(jù)科學時,我們經(jīng)常想到的是針對數(shù)字的統(tǒng)計分析。但實際上,更為常見的是由機構所產生的大量非結構化文本數(shù)據(jù),它們需要被量化和分析。其中的一些例子有社交網(wǎng)絡評論,產品評價,電郵,采訪稿。
為了分析文本,數(shù)據(jù)科學家經(jīng)常會用到自然語言處理(NLP)。在本文中,我們將詳細介紹 3 個常見的 NLP 任務,并研究如何運用它們來分析文本。我們將討論的三個任務分別是:
詞性標注:這個詞語的詞性是什么?
依存分析:這個詞語與句中其他詞語有什么關系?
命名實體識別:這個詞語是否是專有名詞?
我們將通過spaCy這個 python 庫,來調用上述三種功能,從而對圣經(jīng)中的主要角色進行挖掘,并分析他們的行為。接著,我們將嘗試對得到的結構化數(shù)據(jù)做一些有趣的可視化。
當你有大量的文本文檔時,你就可以采用這個方法,去了解文檔中有哪些主要的實體,它們出現(xiàn)在文檔何處,它們做了什么。比如,DocumentCloud 采用了與此類似的方法來實現(xiàn)「查看實體」的分析選項。
詞條與詞性標注
有一種從文本中提取意義的方法是逐一分析每一個詞語。將文本切分成詞語的過程稱為詞條化,得到的詞語被稱為詞條。標點符號也是詞條的一種。句中的每個詞條都有若干屬性,我們可以對此進行分析。其中一個例子就是詞語的詞性:名詞表示人物,地點或事物;動詞表示動作或事件的發(fā)生;形容詞則用以描述名詞。利用這些屬性,可以很方便地統(tǒng)計一段文本內最常見的名詞,動詞和形容詞,從而創(chuàng)建出一份摘要。
利用 spaCy,我們可以對一段文本進行詞條化,從而得到每個詞條的詞性屬性。以下面的代碼作為示例應用程序,我們對之前的段落進行詞條化,并統(tǒng)計其中最常見名詞的數(shù)目。此外,我們對詞條進行了詞性還原,即得到每個詞的詞根,規(guī)范了詞語的形式。
依存分析
詞語之間存在著一定的關系,其中有幾種常見的類型。比如,名詞可以作為句子中的主語,從而執(zhí)行一個動作(動詞),如同「Jill laughed」。名詞也可以作為句子中的賓語,其會受到主語的動作影響,就像此句中的 John:「Jill laughed at John」。
依存分析正是理解句子中詞語間關系的一種方法。句子「Jill laughed at John」中有兩個名詞 Jill 和 John。Jill 是主語,表示發(fā)出笑這個動作的人,而 John 是賓語,表示被取笑的人。依存關系是一種更精細的屬性,可以用來理解句子中詞語間的關系。
詞語間的關系可以隨著句子的組織方式而變得很復雜。對一個句子進行依存分析,將得到以動詞為根的樹狀數(shù)據(jù)結構。
讓我們來看下這句話的依存分析結果:「The quick brown fox jumps over the lazy dog」。
依存關系也是詞條屬性的一種。spaCy提供了一系列API,可以幫助我們得到詞條的各種屬性。下面我們將打印出各個詞條的文本,詞條間的依存關系及其父詞條(頭詞條)的文本。
為了進一步分析,我們需要留意那些帶有nsubj關系的詞條,這表示它們是句子中的主語。在這個例子中,意味著我們需要將詞語「fox」記錄下來。
命名實體識別
最后就是命名實體識別了。命名實體是指句子中的專有名詞。計算機已經(jīng)能很好地識別出句子中的命名實體,并區(qū)分其實體類型。
spaCy是在文檔級層面進行命名實體識別的操作。這是因為一個實體的名稱可能跨越多個詞條。每一個詞條會被標記為實體的一部分,具體實施是按照 IOB 規(guī)則 來標記,分為實體的開始,實體的內部以及實體的外部。
在下面的代碼中,我們使用docs.ents函數(shù)打印出所有文檔級的命名實體。接著,我們打印出每一個詞條,它的 IOB 標注及所屬的實體類型(如果該詞條是某個實體一部分的話)。
我們使用的例句是:「Jill laughed at John Johnson」。
一個實際應用的例子:對圣經(jīng)進行自然語言處理
分別使用上述提到的方法,效果都挺不錯。然而,自然語言處理的真正威力在于我們可以將這些方法結合起來,從而提取出符合語言模式的信息。我們可以使用詞性標注,依存分析和命名實體識別去理清大量文本中出現(xiàn)的所有角色及其行為??紤]到圣經(jīng)的長度及其提到的大量角色,它正是一個應用這些方法的好例子。
在我們導入的數(shù)據(jù)中,每一個對象就是一段圣經(jīng)中的經(jīng)文。經(jīng)文是用來索引圣經(jīng)中的具體章節(jié),一般包括一句或若干句文本。我們會遍歷每段經(jīng)文,提取其中的主語,判斷其是否是人名,并抽取出該人物的行為。
首先,我們從 github 倉庫中加載 json 格式的圣經(jīng)。然后,對于抽取出的每段經(jīng)文文本,利用spaCy對其進行依存分析和詞性標注,并將分析后的結果儲存起來。
我們將文本從 json 格式中解析出來,并存入verse_docs這個變量里,耗時大約三分多鐘,平均一秒鐘處理 160 段經(jīng)文。作為參考,我們可以看一下bible_json的前三行。
使用詞條屬性
為了提取角色和相關的行為,我們需要對每段經(jīng)文中的所有詞條進行遍歷,并考慮 3 個要素。
1)這個詞條是否是句子的主語(即查看其依存關系是否是nsubj);
2)這個詞條的父詞條是否是動詞(一般情況下應該是動詞,但有時詞性標注會和依存分析得出矛盾的結果,我們還是謹慎一點吧。當然我并非語言學家,因此可能此處存在著一些奇怪的極端例子);
3)這個詞條是否是指代人的命名實體,我們并不想對非人物的名詞進行提?。榱撕唵纹鹨?,我們只提取每個角色的名字部分)。
如果有詞條符合上述的三個條件,我們將對其收集下列屬性。
1)詞條所表示的名詞實體的文本;
2)包含名詞和動詞的文本范圍(即短語);
3)其相關的動詞;
4)該動詞在標準英語文本中出現(xiàn)的對數(shù)概率(使用對數(shù)概率是因為往往這里的概率值會非常?。?/span>
5)該段經(jīng)文的序號。
分析
我們已經(jīng)提取出所有角色和他們的行為,并以列表的形式進行存儲。我們先做一個快速分析,計算以下兩項。
1)弄清楚每個人物最常見的行為(即動詞)。
......
想要繼續(xù)閱讀,請移步至我們的AI研習社社區(qū):https://club.leiphone.com/page/TextTranslation/848
更多精彩內容盡在 AI 研習社。
不同領域包括計算機視覺,語音語義,區(qū)塊鏈,自動駕駛,數(shù)據(jù)挖掘,智能控制,編程語言等每日更新。
雷鋒網(wǎng)(公眾號:雷鋒網(wǎng))雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉載。詳情見轉載須知。