一文帶你讀懂自然語言處理 - 事件提取

2020-12-06 雷鋒網

本文為 AI 研習社編譯的技術博客,原標題 :

Natural Language Processing — Event Extraction

作者 | Rodrigo Nader

翻譯 | 胡瑛皓      編輯 | 醬番梨、王立魚

原文連結:

https://towardsdatascience.com/natural-language-processing-event-extraction-f20d634661d3

每天產生的文本信息令人嘆為觀止。數百萬數據源以新聞稿、博客、消息、手稿和無數其他形式發布,因而自動組織和處理就必不可少。

隨著神經網絡算法的改進、計算機算力的顯著提升以及大量湧現的理解框架,自然語言處理的能力正被前所未有的探索。其中一個常見應用稱為事件提取,即處理收集蘊藏在文本中的一個階段內發生的事件,自動識別發生了什麼和什麼時候發生。

比如:

  • 2018/10 — President Donald Trump’s government banned countries from importing Iranian oil with exemptions to seven countries.

  • 2019/04 — US Secretary of State Mike Pompeo announced that his country would open no more exception after the deadline.

  • 2019/05 — The United States ended with exemptions that allowed countries to import oil from Iran without suffering from US sanctions.

憑藉獲得信息上下文的能力,可以關聯時間上互相獨立的事件,汲取其影響,發現事件序列如何隨著時間推移展開。這些科技洞見力正驅動諸如 EventRegistry和 Primer.AI等組織,用科技服務各個市場。

本文將構建一個簡單的事件提取腳本,接收新聞輸入處理後輸出事件。

首先需要收集數據。我們可以用任何形式的文本,只要這些文字的內容可通過時間線表示。本文選用 newsapi,從該數據源獲取數據很容易,其開發者計劃每天可獲取500個免費請求。以下是處理請求的代碼:

最後一個函數,返回特定查詢的結果列表,大約包含2000篇文章。我們的目的是抽取這些文章總的事件。為簡化這一過程,只保留文章標題 (理論上,標題應該蘊涵新聞的核心內容)。

執行後得到一個data frame,其內容如下,包括日期、標題和描述

前面拿到了文章的標題,現在需要將其轉換為算法能理解的形式。注,本文跳過了整個文本預處理環節,因為與本文不太相關。不過,如果你是新手,應用模型前務必作預處理 → 請打開原文查看一篇很好的教程。

SpaCy的預訓練詞嵌入模型,可幫助獲取獨立詞語的含義,進一步獲得整句句子的含義。具體來說用的是SpaCy large model (en_core_web_lg), 其中包含了685k英語單詞的預訓練詞向量。當然也可以用任意其他預訓練詞向量表示 (諸如Word2Vec, FastText, GloVe等等)。

SpaCy中默認將詞向量的平均值作為句子向量,這是一種簡易處理方法,忽略了句子中的詞序信息。如想使用更精巧的策略,可以看一下Sent2Vec、SkipThoughts等模型。這篇文章 詳細介紹了SkipThoughts如何用無監督方法提取摘要。

本文中使用SpaCy自帶的方法:

可以看到每篇文章被表示為300維的數組,如下:

即便採用搜索方式過濾獲取數據,同一查詢中會出現不同的主題。比如,搜索關鍵詞 「Paris」 可以得到:

或:

現在用聚類算法分組不同的主題。

本例中,我使用DBSCAN算法,該算法不需要指定聚類簇的數量。算法自己決定聚類簇的數量和規模。

算法中 epsilon 參數決定兩個樣本間的最大距離,以此決定是否臨近,這意味著如果 eps 設置太大形成的簇就比較少,如果設置太小大多數點都無法被臨近聚類,於是被分到默認簇 (-1)裡,產生的簇也不多。下圖顯示聚類簇的數量與的epsilon關係:

給 eps 調參是最為精巧的一步,因為聚類的結果會改變很多,也就是如何確定句子是相似的。通過試驗找到恰當的值,能保持句子間的相似度,同時不把相近的句子分到不同組去。

總的來說,由於我們期望同一組中包含非常相似的句子,也就是得到一個較高的分類數。因此選取 0.08 ~ 0.12之間。參見 Scikit Learn 中關於 eps 和其他參數的說明。

現在看一下每個類中包含的數量:

-1 類表示未明確聚類的句子,其他是已被分類的句子。我們分析一下最大的類,表示最重要的主題 (或者評論最多的那個)。

抽樣一下其中一個類:

對於每個分類我們得到如上形式的data frame。接下來是以時間線排列這些句子,並過濾掉相似的句子。每天只呈現一篇文章,這樣實現出來的時間線就乾淨而統一。

由於每天關於同一主題會產生許多標題,會用一個條件去過濾。該句子將最好的表達事件,也就是蘊涵著這些標題代表的核心內容。

按天聚類句子,在每個組中選擇其最靠近中心的句子。以下是從一組向量中找出中心向量的函數:

乾淨整潔。最後用Plotly繪製一下時間線圖:雷鋒網(公眾號:雷鋒網)雷鋒網雷鋒網

就是這樣,用一個腳本從2000篇文章中提取和組織事件。現在可以想像每天將這一技術應用於上百萬篇文章有多大用處。僅以股票市場每日新聞影響為例,事件提取可以說非常有價值。

可以增加許多步驟提升事件提取的效果,諸如更好的預處理包括POS tagging和NER,使用更好的句子向量模型等等。不過本文的方法,已經可以快速達到理想的結果。

感謝閱讀本文。本文聚焦NLP及事件提取。如果想了解更多有關數據科學和機器學習的信息,請follow我的帳號。有任何想法、評論或問題,請給我留言。

想要繼續查看該篇文章相關連結和參考文獻?

點擊一文帶你讀懂自然語言處理-事件提取】即可訪問:

https://ai.yanxishe.com/page/TextTranslation/1704

社長今日推薦:AI入門、大數據、機器學習免費教程

35本世界頂級原本教程限時開放,這類書單由知名數據科學網站 KDnuggets 的副主編,同時也是資深的數據科學家、深度學習技術愛好者的Matthew Mayo推薦,他在機器學習和數據科學領域具有豐富的科研和從業經驗。

點擊連結即可獲取:https://ai.yanxishe.com/page/resourceDetail/417


雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 一文讀懂Smartbi的自然語言處理(NLP)技術
    01什麼是自然語言處理 自然語言處理(Natural Language Processing,簡稱NLP)就是用計算機來處理它涉及與語言處理相關的數據挖掘、機器學習、知識獲取、知識工程、人工智慧研究和與語言計算相關的語言學研究等。 NLP的興起與機器翻譯這一具體任務有著密切聯繫。
  • 一文帶你讀懂計算機視覺
    一個卷積層利用圖像的2D結構在神經網絡的下一層中生成有用信息。它建議你重新訓練一個初始模型,從而去訓練未知的花類。視覺問答:結合自然語言處理和計算機視覺藝術:生成式對抗網絡正如我們這裡所見,上述視覺領域各方面的實現中誕生了許多新的有趣的方法和應用
  • NLP入門+實戰必讀:一文教會你最常見的10種自然語言處理技術
    大數據文摘作品編譯:糖竹子、吳雙、錢天培自然語言處理(NLP)是一種藝術與科學的結合,旨在從文本數據中提取信息。從自動翻譯、文本分類到情緒分析,自然語言處理成為所有數據科學家的必備技能之一。在這篇文章中,你將學習到最常見的10個NLP任務,以及相關資源和代碼。為什麼要寫這篇文章?
  • 洞察|一文帶你全面了解自然語言處理發展史上的8大裡程碑
    自然語言處理(Natural Language Processing,NLP)已經慢慢演變為計算機科學領域與人工智慧領域中的一個重要方向,高效地用自然語言與計算機進行通信,被視為解決人工智慧完備(AI-complete)的核心問題之一,其中存在著一系列挑戰。
  • 從語言學到深度學習NLP,一文概述自然語言處理
    本文從兩篇論文出發先簡要介紹了自然語言處理的基本分類和基本概念,再向讀者展示了深度學習中的 NLP。這兩篇論文都是很好的綜述性入門論文,希望詳細了解自然語言處理的讀者可以進一步閱讀這兩篇論文。本文第一部分介紹了自然語言處理的基本概念,作者將 NLP 分為自然語言理解和自然語言生成,並解釋了 NLP 過程的各個層級和應用,這一篇論文很適合讀者系統的了解 NLP 的基本概念。
  • 自然語言處理起源:馬爾科夫和香農的語言建模實驗
    選自towardsdatascience作者:Raimi Karim機器之心編譯參與:王子嘉、Geek AI語言建模和文本生成是當下自然語言處理領域非常火熱的兩個研究課題在那之前,概率領域的研究大多局限於分析像輪盤賭或拋硬幣這樣的現象,在這些研究中先前事件的結果不會改變當前事件的概率。但馬爾科夫認為,大多數事情的發生都是有一連串的因果關係的,並且依賴於之前的結果。他想要找到通過概率化的分析對這些事件進行建模的方法。
  • 一文讀懂MEMS傳感器(必須收藏)
    【點擊藍色標題,獲取文章】 1
  • 一文讀懂電容傳感器
    藍色標題,獲取文章】 10、一文讀懂光纖傳感器 11、一文讀懂溫溼度傳感器 12
  • 科普自然語言處理
    例如,漢語、英語、日語為自然語言的例子,這一種用法可見於自然語言處理一詞中。自然語言是人類交流和思維的主要工具。以上是百度百科對自然語言的釋義。語言是信息的載體,如同數字、文字、圖像、視頻等一樣,它們的目的都是為了記錄和傳播信息。
  • 自然語言處理 NLP 發展簡史
    這一系列顛覆性的研究成果在學術界引發轟動,激發了人工智慧(AI)的思潮,同時也催生了自然語言處理(NLP)和計算機技術的發展。NLP 的早期理論基礎人們最早對 NLP 的探索始於對機器翻譯的研究。1947年,美國科學家韋弗(W. Weaver)博士和英國工程師布斯(A. D.
  • 一文讀懂磁傳感器(必須收藏)
    【點擊藍色標題,獲取文章】 >、一文讀懂接近傳感器 3、一文讀懂磁傳感器 4、一文讀懂流量傳感器
  • 人工智慧難點之——自然語言處理(NLP)
    (人工智慧主要包含以下幾個方面: 自動推理-計算語言學-計算機視覺-進化計算-專家系統-自然語言處理-機器人學)自然語言處理(NLP)是資訊時代最重要的技術之一。理解複雜的語言也是人工智慧的重要組成部分。NLP的應用無處不在,因為人們用語言進行大部分溝通:網絡搜索,廣告,電子郵件,客戶服務,語言翻譯,發布學報告等等。
  • 人工智慧與自然語言處理概述:AI三大階段、NLP關鍵應用領域
    ,對自然語言處理在大數據中扮演的角色作了探討。「人工智慧」包含兩個關鍵點:自動化智能人工智慧的目標推理自動學習&調度機器學習自然語言處理計算機視覺機器人通用智能人工智慧三大階段階段 1——機器學習:智能系統使用一系列算法從經驗中進行學習。階段 2——機器智能:機器使用的一系列從經驗中進行學習的高級算法,例如深度神經網絡。
  • 阿爾伯塔大學博士畢業論文:基於圖結構的自然語言處理
    機器之心發布 機器之心編輯部 自然語言處理(Natural Language Processing)是人工智慧的核心問題之一,旨在讓計算機理解語言,實現人與計算機之間用自然語言進行通信。
  • 自然語言處理必讀:5本平衡理論與實踐的書籍
    即使是在找一本關於某個主題的書,也會很快發現這樣的書太多了,無法快速判斷哪一本最適合自己。為了幫助你解決問題,我幫你選擇5本關於自然語言處理的書,不像其他的書單,除了第一本之外,這些書都不是免費的,但事實證明它們是值得投資的,希望能對大家有所幫助。
  • 什麼是自然語言處理?它為什麼比計算機視覺更重要?
    自然語言是指中文、英語、西班牙語、法語、德語等等語言,作為人們日常使用的其他語言,它們對人類的交流有著重要作用。自然語言是隨著人類社會的發展而自然產生的語言,而不是由人類所特意創造的語言。自然語言是人們日常學習生活的重要工具和媒介,如果人類失去交流的能力,文明就失去了意義。
  • 一文帶你讀懂 WaveNet:谷歌助手的聲音合成器
    https://towardsdatascience.com/wavenet-google-assistants-voice-synthesizer-a168e9af13b1一文帶你讀懂通過參數合成文語轉換生成的聲音聽上去沒有通過音波結合文語轉換生成的聲音那麼自然,但是這種方式更容易通過調整某些模型中的參數來修飾聲音。近日來,隨著WavNet的面世,對我們來說以端對端(來自聲音記錄本身)的方式來生成未處理的聲音樣本成為可能,可以簡單的修飾聲音,更重要的是和現存的語音處理方式相比,得到的聲音明顯的更加自然。
  • 一文縱覽自然語言生成的發展
    機器人具有獨立思考的能力在目前看來還比較遙遠,但機器學習和自然語言理解領域已經在過去幾年取得了重大進展。個人助理(Siri/Alexa)、聊天機器人及問答機器人等應用程式正悄無聲息地改變著人們的生活方式。
  • 機器學習 101:一文帶你讀懂梯度下降
    但是在我們開始之前,你可以點擊此處獲取代碼假設你想爬一座很高的山,你的目標是最快到達山頂,可你環顧四周後,你意識到你有不止一條路可以走,既然你在山腳,但似乎所有選擇都能讓你離山頂更近。  這個子集稱為迷你批處理(mini-batch)。在線性組合後,我們把得到的向量輸入MSE函數,計算新的誤差。 利用這個誤差,我們可以計算出誤差的偏導數,然後得到梯度。
  • 科普丨什麼是NLP(自然語言處理)
    自然語言處理(NLP)是一種專業分析人類語言的人工智慧。(下文皆簡稱為「NLP」),它的工作原理是這樣的:接收自然語言,這種語言是通過人類的自然使用演變而來的,我們每天都用它來交流轉譯自然語言,通常是通過基於概率的算法分析自然語言並輸出結果