精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

計算機是如何理解人類語言的?

8g3K_AI_Thinker ? 來源:未知 ? 作者:李倩 ? 2018-08-10 15:18 ? 次閱讀

面向用戶:對NLP感興趣,想學習處理問題思路并通過實例代碼練手

Adam Geitgey畢業于佐治亞理工學院,曾在團購網站Groupon擔任軟件工程師總監。目前是軟件工程和機器學習顧問,課程作者,Linkedin Learning的合作講師。

計算機是如何理解人類語言的?

讓機器理解人類語言,是一件非常困難的事情。計算機的專長在處理結構化數據,但人類語言是非常復雜的,碎片化,松散,甚至不合邏輯、心口不一。

既然直男不能明白為什么女朋友會生氣,那計算機當然無法理解A叫B為孫子的時候,是在喊親戚、罵街,或只是朋友間的玩笑。

面對人類,計算機相當于是金剛隕石直男。

正是由于人工智能技術的發展,不斷讓我們相信,計算機總有一天可以聽懂人類表達,甚至像真人一樣和人溝通。那么,就讓我們開始這算美好的教程吧。

創建一個NLP Pipeline

London is the capital and most populous city of England and the United Kingdom. Standing on the River Thames in the south east of the island of Great Britain, London has been a major settlement for two millennia. It was founded by the Romans, who named it Londinium.

倫敦,是英國的首都,人口居全國之首。位于大不列顛島東南方泰晤士河流域,在此后兩個世紀內為這一地區最重要的定居點之一。它于公元50年由羅馬人建立,取名為倫蒂尼恩。

-- 維基百科

Step 1:斷句(句子切分)

上面介紹倫敦的一段話,可以切分成3個句子:

倫敦是大不列顛的首都,人口居全國之首(London is the capital and most populous city of England and the United Kingdom)

位于泰晤士河流域(Standing on the River Thames in the south east of the island of Great Britain, London has been a major settlement for two millennia)

它于公元50年由羅馬人建立,取名為倫蒂尼恩(It was founded by the Romans, who named it Londinium)

Step 2:分詞

由于中文的分詞邏輯和英文有所不同,所以這里就直接使用原文了。接下來我們一句一句的處理。首先第一句:

“London”, “is”, “ the”, “capital”, “and”, “most”, “populous”, “city”, “of”, “England”, “and”, “the”, “United”, “Kingdom”, “.”

英文的分詞相對簡單一些,兩個空格之間可以看做一個詞(word),標點符號也有含義,所以把標點符號也看做一個詞。

Step 3:區分單詞的角色

我們需要區分出一個詞在句子中的角色,是名詞?動詞?還是介詞。我們使用一個預先經過幾百萬英文句子訓練、被調教好的詞性標注(POS: Part Of Speech)分類模型:

這里有一點一定要記住:模型只是基于統計結果給詞打上標簽,它并不了解一個詞的真實含義,這一點和人類對詞語的理解方式是完全不同的。

處理結果:

可以看到。我們等到的信息中,名詞有兩個,分別是倫敦和首都。倫敦是個獨特的名稱,首都是個通用的稱謂,因此我們就可以判斷,這句話很可能是在圍繞倫敦這個詞說事兒。

Step 4: 文本詞形還原

很多基于字母拼寫的語言,像英語、法語、德語等,都會有一些詞形的變化,比如單復數變化、時態變化等。比如:

I had a pony(我有過一匹矮馬)

I have two ponies (我有兩匹矮馬)

其實兩個句子的關鍵點都是矮馬pony。Ponies和pony、had和have只是同一個詞的不同詞形,計算機因為并不知道其中的含義,所以在它眼里都是完全不一樣的東西,

讓計算機明白這個道理的過程,就叫做詞形還原。對之前有關倫敦介紹的第一句話進行詞形還原后,得到下圖

Step 5:識別停用詞

停用詞:在信息檢索中,為節省存儲空間和提高搜索效率,在處理自然語言數據(或文本)之前或之后會自動過濾掉某些字或詞,這些字或詞即被稱為Stop Words(停用詞)。這些停用詞都是人工輸入、非自動化生成的,生成后的停用詞會形成一個停用詞表。但是,并沒有一個明確的停用詞表能夠適用于所有的工具。甚至有一些工具是明確地避免使用停用詞來支持短語搜索的。

-- 維基百科

還是來看第一句話:

其中灰色的字,僅僅是起到銜接和輔助表述的作用。他們的存在,對計算機來說更多是噪音。所以我們需要把這些詞識別出來。

正如維基所說,現在雖然停用詞列表很多,但一定要根據實際情況進行配置。比如英語的the,通常情況是停用詞,但很多樂隊名字里有the這個詞,The Doors, The Who,甚至有個樂隊直接就叫The The!這個時候就不能看做是停用詞了。

Step 6:解析依賴關系

解析句子中每個詞之間的依賴關系,最終建立起一個關系依賴樹。這個數的root是關鍵動詞,從這個關鍵動詞開始,把整個句子中的詞都聯系起來。

從這個關系樹來看,主語是London,它和capital被be聯系起來。然后計算機就知道,London is a capital。如此類推,我們的計算機就被訓練的掌握越來越多的信息。

但因為人類語言的歧義性,這個模型依然無法適應所有場景。但是隨著我們給他更多的訓練,我們的NLP模型會不斷提高準確性。Demo地址

https://explosion.ai/demos/displacy?utm_source=AiHl0

我們還可以選擇把相關的詞進行合并分組,例如把名詞以及修飾它的形容詞合并成一個詞組短語。不過這一步工作不是必須要有的,視具體情況而定。

Step 7:命名實體識別

經過以上的工作,接下來我們就可以直接使用現有的命名實體識別(NER: Named Entity Recognition)系統,來給名詞打標簽。比如我們可以把第一句話當中的地理名稱識別出來:

大家也可以通過下面的鏈接,在線體驗一下。隨便復制粘貼一段英文,他會自動識別出里面包含哪些類別的名詞:

https://explosion.ai/demos/displacy-ent?utm_source=AiHl0

Step 8:共指消解

人類的語言很復雜,但在使用過程中卻是傾向于簡化和省略的。比如他,它,這個,那個,前者,后者…這種指代的詞,再比如縮寫簡稱,北京大學通常稱為北大,中華人民共和國通常就叫中國。這種現象,被稱為共指現象。

在特定語境下人類可以毫不費力的區別出它這個字,到底指的是牛,還是手機。但是計算機需要通過共指消解才能知道下面這句話

它于公元50年由羅馬人建立,取名為倫蒂尼恩

中的它,指的是倫敦,而不是羅馬,不是羅紋,更不是蘿卜。

共指消解相對而言是我們此次創建NLP Pipeline所有環節中,最難的部分。

Coding

好了。思路終于講完了。接下來就是Coding的部分。首先我們理一下思路

提示:上述步驟只是標準流程,實際工作中需要根據項目具體的需求和條件,合理安排順序。

安裝spaCy

我們默認你已經安裝了Python 3。如果沒有的話,你知道該怎么做。接下來是安裝spaCy:

安裝好以后,使用下面代碼

結果如下

GPE:地理位置、地名

FAC:設施、建筑

DATE:日期

NORP:國家、地區

PERSON:人名

我們看到,因為Londinium這個地名不夠常見,所以spaCy就做了一個大膽的猜測,猜這可能是個人名。

我們接下來進一步,構建一個數據清理器。假設你拿到了一份全國酒店入住人員登記表,你想把里面的人名找出來替換掉,而不改動酒店名、地名等名詞,可以這樣做:

把所有標注為[PERSON]的詞都替換成REDACTED。最終結果

提取詳細信息

利用spaCy識別并定位的名詞,然后利用textacy就可以把一整篇文章的信息都提取出來。我們在wiki上復制整篇介紹倫敦的內容到以下代碼

你會得到如下結果

我們獲得了這么多有用的信息,就可以應用在很多場景下。比如,搜索結果的相關推薦

我們可以通過下面這種方法實現上圖的效果

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算機
    +關注

    關注

    19

    文章

    7418

    瀏覽量

    87712
  • 人工智能
    +關注

    關注

    1791

    文章

    46845

    瀏覽量

    237537
  • python
    +關注

    關注

    56

    文章

    4782

    瀏覽量

    84451

原文標題:用Python構建NLP Pipeline,從思路到具體代碼,這篇文章一次性都講到了

文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    計算機語言概述

    第一計算機語言。如果Java作學生第一編程語言,建議選擇BlueJ作教學環境,BlueJ突出面向對象技術的核心概念,利于學生理解面向對象的編程思想;它簡潔、易學,國內與之配套的教材正在計劃出版。目前
    發表于 12-06 00:17

    AI語音識別市場規模怎么樣?

    語音語義識別是指通過語音信號處理和語義識別,使得計算機自動理解人類口述語言的技術。語音識別主要步驟為信號搜集、降噪、特征提取解碼三步,提取的特征在后臺由經過語音大數據訓練得到的語音模型對其進行解碼,最終把語音轉化為文本。語義識別
    發表于 09-11 11:52

    什么是計算機

    我們人類無時無刻不想著,自己能夠創造一個世界。什么是計算機計算社會我們人類已經步入了計算社會。縱覽人類
    發表于 09-10 08:41

    計算機語言概述

    計算機語言概述 在計算機技術發展過程中,出現過各種各樣的程序設計語言。從程序設計語言發展過程來看,可分為
    發表于 12-06 00:17 ?2820次閱讀
    <b class='flag-5'>計算機語言</b>概述

    感知計算機,靈感來自人類大腦的全新計算機架構

    關鍵字:感知計算機 編程模型 傳感器網絡 神經網絡 IBM Research 在國際神經網絡聯席會議(IJCNN)上披露了一種新的感知計算機架構和編程模型,其靈感來自人類大腦。新的Corelet架構
    發表于 09-14 16:58 ?2次下載
    感知<b class='flag-5'>計算機</b>,靈感來自<b class='flag-5'>人類</b>大腦的全新<b class='flag-5'>計算機</b>架構

    基于邏輯語言計算機軟件設計(JAVA語言

    研究基于邏輯語言計算機軟件開放設計問題。應用對比法分析在計算機軟件開放設計之中,當前應用不同計算機邏輯語言的優勢,并可應用最優的
    發表于 11-01 15:19 ?0次下載
    基于邏輯<b class='flag-5'>語言</b><b class='flag-5'>計算機</b>軟件設計(JAVA<b class='flag-5'>語言</b>)

    研發聲音激活的計算機系統,可識別人類語言

    借助人工智能技術,科學家正在研發一種基于聲音激活的計算機系統,它能以“自然并具有智能的”方式與人類互動。人工智能技術將幫助計算機適應用戶的聲音,最后的目標是它們能聽懂并理解用戶說的話,
    發表于 07-12 01:16 ?1605次閱讀

    計算機編程語言的發展趨勢分析

    最開始的時候,每種計算機都有自己的機器指令。例如,某種型號的計算機用8位二進制信息10001010表示加法指令,等等。所以用這種機器語言進行程序設計是很累的工作,而且代碼難以閱讀和理解
    發表于 09-26 09:40 ?5200次閱讀

    計算機語言的分類

    本視頻主要詳細介紹了計算機語言的分類,分別有機器語言、匯編語言、高級語言等。
    的頭像 發表于 12-27 16:04 ?2.6w次閱讀
    <b class='flag-5'>計算機語言</b>的分類

    NLP不僅可以做到幫助計算機學習并理解我們的語言

    這個時候,機器學習的分支——自然語言處理(NLP)應運而生,NLP不僅僅可以做到幫助計算機學習并理解我們的語言,更會幫助計算機進行“情感分析
    的頭像 發表于 08-27 15:11 ?2154次閱讀

    如何使用計算機讓機器人理解人類語言以及含義

    和文化背景的復雜性,讓機器很難理解和解釋客戶提供的觀點性數據,因此提取見解極具挑戰性。自然語言處理(NLP)和機器學習(ML)等工具使計算機能夠理解人類
    的頭像 發表于 05-17 16:19 ?3188次閱讀

    你們知道計算機是如何識別你寫的代碼的嗎?

    學習編程其實就是學高級語言,即那些為人類設計的計算機語言。 但是,計算機理解高級語言,必須通過
    的頭像 發表于 07-06 10:03 ?2699次閱讀

    手勢識別幫助計算機理解人語言

    電子發燒友網站提供《手勢識別幫助計算機理解人語言.zip》資料免費下載
    發表于 10-28 10:16 ?0次下載
    手勢識別幫助<b class='flag-5'>計算機理解人</b>體<b class='flag-5'>語言</b>

    計算機是如何理解世界的

    電子發燒友網站提供《計算機是如何理解世界的.zip》資料免費下載
    發表于 06-13 15:48 ?0次下載
    <b class='flag-5'>計算機</b>是如何<b class='flag-5'>理解</b>世界的

    計算機視覺:AI如何識別與理解圖像

    計算機視覺是人工智能領域的一個重要分支,它致力于讓機器能夠像人類一樣理解和解釋圖像。隨著深度學習和神經網絡的發展,人們對于如何讓AI識別和理解圖像產生了濃厚的興趣。本文將探討
    的頭像 發表于 01-12 08:27 ?1351次閱讀
    <b class='flag-5'>計算機</b>視覺:AI如何識別與<b class='flag-5'>理解</b>圖像