0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

計(jì)算機(jī)是如何理解人類語(yǔ)言的?

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

面向用戶:對(duì)NLP感興趣,想學(xué)習(xí)處理問(wèn)題思路并通過(guò)實(shí)例代碼練手

Adam Geitgey畢業(yè)于佐治亞理工學(xué)院,曾在團(tuán)購(gòu)網(wǎng)站Groupon擔(dān)任軟件工程師總監(jiān)。目前是軟件工程和機(jī)器學(xué)習(xí)顧問(wèn),課程作者,Linkedin Learning的合作講師。

計(jì)算機(jī)是如何理解人類語(yǔ)言的?

讓機(jī)器理解人類語(yǔ)言,是一件非常困難的事情。計(jì)算機(jī)的專長(zhǎng)在處理結(jié)構(gòu)化數(shù)據(jù),但人類語(yǔ)言是非常復(fù)雜的,碎片化,松散,甚至不合邏輯、心口不一。

既然直男不能明白為什么女朋友會(huì)生氣,那計(jì)算機(jī)當(dāng)然無(wú)法理解A叫B為孫子的時(shí)候,是在喊親戚、罵街,或只是朋友間的玩笑。

面對(duì)人類,計(jì)算機(jī)相當(dāng)于是金剛隕石直男。

正是由于人工智能技術(shù)的發(fā)展,不斷讓我們相信,計(jì)算機(jī)總有一天可以聽(tīng)懂人類表達(dá),甚至像真人一樣和人溝通。那么,就讓我們開(kāi)始這算美好的教程吧。

創(chuàng)建一個(gè)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.

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

-- 維基百科

Step 1:斷句(句子切分)

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

倫敦是大不列顛的首都,人口居全國(guó)之首(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:分詞

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

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

英文的分詞相對(duì)簡(jiǎn)單一些,兩個(gè)空格之間可以看做一個(gè)詞(word),標(biāo)點(diǎn)符號(hào)也有含義,所以把標(biāo)點(diǎn)符號(hào)也看做一個(gè)詞。

Step 3:區(qū)分單詞的角色

我們需要區(qū)分出一個(gè)詞在句子中的角色,是名詞?動(dòng)詞?還是介詞。我們使用一個(gè)預(yù)先經(jīng)過(guò)幾百萬(wàn)英文句子訓(xùn)練、被調(diào)教好的詞性標(biāo)注(POS: Part Of Speech)分類模型:

這里有一點(diǎn)一定要記?。耗P椭皇腔诮y(tǒng)計(jì)結(jié)果給詞打上標(biāo)簽,它并不了解一個(gè)詞的真實(shí)含義,這一點(diǎn)和人類對(duì)詞語(yǔ)的理解方式是完全不同的。

處理結(jié)果:

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

Step 4: 文本詞形還原

很多基于字母拼寫(xiě)的語(yǔ)言,像英語(yǔ)、法語(yǔ)、德語(yǔ)等,都會(huì)有一些詞形的變化,比如單復(fù)數(shù)變化、時(shí)態(tài)變化等。比如:

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

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

其實(shí)兩個(gè)句子的關(guān)鍵點(diǎn)都是矮馬pony。Ponies和pony、had和have只是同一個(gè)詞的不同詞形,計(jì)算機(jī)因?yàn)椴⒉恢榔渲械暮x,所以在它眼里都是完全不一樣的東西,

讓計(jì)算機(jī)明白這個(gè)道理的過(guò)程,就叫做詞形還原。對(duì)之前有關(guān)倫敦介紹的第一句話進(jìn)行詞形還原后,得到下圖

Step 5:識(shí)別停用詞

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

-- 維基百科

還是來(lái)看第一句話:

其中灰色的字,僅僅是起到銜接和輔助表述的作用。他們的存在,對(duì)計(jì)算機(jī)來(lái)說(shuō)更多是噪音。所以我們需要把這些詞識(shí)別出來(lái)。

正如維基所說(shuō),現(xiàn)在雖然停用詞列表很多,但一定要根據(jù)實(shí)際情況進(jìn)行配置。比如英語(yǔ)的the,通常情況是停用詞,但很多樂(lè)隊(duì)名字里有the這個(gè)詞,The Doors, The Who,甚至有個(gè)樂(lè)隊(duì)直接就叫The The!這個(gè)時(shí)候就不能看做是停用詞了。

Step 6:解析依賴關(guān)系

解析句子中每個(gè)詞之間的依賴關(guān)系,最終建立起一個(gè)關(guān)系依賴樹(shù)。這個(gè)數(shù)的root是關(guān)鍵動(dòng)詞,從這個(gè)關(guān)鍵動(dòng)詞開(kāi)始,把整個(gè)句子中的詞都聯(lián)系起來(lái)。

從這個(gè)關(guān)系樹(shù)來(lái)看,主語(yǔ)是London,它和capital被be聯(lián)系起來(lái)。然后計(jì)算機(jī)就知道,London is a capital。如此類推,我們的計(jì)算機(jī)就被訓(xùn)練的掌握越來(lái)越多的信息。

但因?yàn)槿祟愓Z(yǔ)言的歧義性,這個(gè)模型依然無(wú)法適應(yīng)所有場(chǎng)景。但是隨著我們給他更多的訓(xùn)練,我們的NLP模型會(huì)不斷提高準(zhǔn)確性。Demo地址

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

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

Step 7:命名實(shí)體識(shí)別

經(jīng)過(guò)以上的工作,接下來(lái)我們就可以直接使用現(xiàn)有的命名實(shí)體識(shí)別(NER: Named Entity Recognition)系統(tǒng),來(lái)給名詞打標(biāo)簽。比如我們可以把第一句話當(dāng)中的地理名稱識(shí)別出來(lái):

大家也可以通過(guò)下面的鏈接,在線體驗(yàn)一下。隨便復(fù)制粘貼一段英文,他會(huì)自動(dòng)識(shí)別出里面包含哪些類別的名詞:

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

Step 8:共指消解

人類的語(yǔ)言很復(fù)雜,但在使用過(guò)程中卻是傾向于簡(jiǎn)化和省略的。比如他,它,這個(gè),那個(gè),前者,后者…這種指代的詞,再比如縮寫(xiě)簡(jiǎn)稱,北京大學(xué)通常稱為北大,中華人民共和國(guó)通常就叫中國(guó)。這種現(xiàn)象,被稱為共指現(xiàn)象。

在特定語(yǔ)境下人類可以毫不費(fèi)力的區(qū)別出它這個(gè)字,到底指的是牛,還是手機(jī)。但是計(jì)算機(jī)需要通過(guò)共指消解才能知道下面這句話

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

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

共指消解相對(duì)而言是我們此次創(chuàng)建NLP Pipeline所有環(huán)節(jié)中,最難的部分。

Coding

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

提示:上述步驟只是標(biāo)準(zhǔn)流程,實(shí)際工作中需要根據(jù)項(xiàng)目具體的需求和條件,合理安排順序。

安裝spaCy

我們默認(rèn)你已經(jīng)安裝了Python 3。如果沒(méi)有的話,你知道該怎么做。接下來(lái)是安裝spaCy:

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

結(jié)果如下

GPE:地理位置、地名

FAC:設(shè)施、建筑

DATE:日期

NORP:國(guó)家、地區(qū)

PERSON:人名

我們看到,因?yàn)長(zhǎng)ondinium這個(gè)地名不夠常見(jiàn),所以spaCy就做了一個(gè)大膽的猜測(cè),猜這可能是個(gè)人名。

我們接下來(lái)進(jìn)一步,構(gòu)建一個(gè)數(shù)據(jù)清理器。假設(shè)你拿到了一份全國(guó)酒店入住人員登記表,你想把里面的人名找出來(lái)替換掉,而不改動(dòng)酒店名、地名等名詞,可以這樣做:

把所有標(biāo)注為[PERSON]的詞都替換成REDACTED。最終結(jié)果

提取詳細(xì)信息

利用spaCy識(shí)別并定位的名詞,然后利用textacy就可以把一整篇文章的信息都提取出來(lái)。我們?cè)趙iki上復(fù)制整篇介紹倫敦的內(nèi)容到以下代碼

你會(huì)得到如下結(jié)果

我們獲得了這么多有用的信息,就可以應(yīng)用在很多場(chǎng)景下。比如,搜索結(jié)果的相關(guān)推薦

我們可以通過(guò)下面這種方法實(shí)現(xiàn)上圖的效果

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7206

    瀏覽量

    87249
  • 人工智能
    +關(guān)注

    關(guān)注

    1787

    文章

    46129

    瀏覽量

    235460
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84119

原文標(biāo)題:用Python構(gòu)建NLP Pipeline,從思路到具體代碼,這篇文章一次性都講到了

文章出處:【微信號(hào):AI_Thinker,微信公眾號(hào):人工智能頭條】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    計(jì)算機(jī)語(yǔ)言概述

    第一計(jì)算機(jī)語(yǔ)言。如果Java作學(xué)生第一編程語(yǔ)言,建議選擇BlueJ作教學(xué)環(huán)境,BlueJ突出面向?qū)ο蠹夹g(shù)的核心概念,利于學(xué)生理解面向?qū)ο蟮木幊趟枷?;它?jiǎn)潔、易學(xué),國(guó)內(nèi)與之配套的教材正在計(jì)劃出版。目前
    發(fā)表于 12-06 00:17

    AI語(yǔ)音識(shí)別市場(chǎng)規(guī)模怎么樣?

    語(yǔ)音語(yǔ)義識(shí)別是指通過(guò)語(yǔ)音信號(hào)處理和語(yǔ)義識(shí)別,使得計(jì)算機(jī)自動(dòng)理解人類口述語(yǔ)言的技術(shù)。語(yǔ)音識(shí)別主要步驟為信號(hào)搜集、降噪、特征提取解碼三步,提取的特征在后臺(tái)由經(jīng)過(guò)語(yǔ)音大數(shù)據(jù)訓(xùn)練得到的語(yǔ)音模型對(duì)其進(jìn)行解碼,最終把語(yǔ)音轉(zhuǎn)化為文本。語(yǔ)義識(shí)別
    發(fā)表于 09-11 11:52

    什么是計(jì)算機(jī)

    我們人類無(wú)時(shí)無(wú)刻不想著,自己能夠創(chuàng)造一個(gè)世界。什么是計(jì)算機(jī)計(jì)算社會(huì)我們人類已經(jīng)步入了計(jì)算社會(huì)。縱覽人類
    發(fā)表于 09-10 08:41

    計(jì)算機(jī)語(yǔ)言概述

    計(jì)算機(jī)語(yǔ)言概述 在計(jì)算機(jī)技術(shù)發(fā)展過(guò)程中,出現(xiàn)過(guò)各種各樣的程序設(shè)計(jì)語(yǔ)言。從程序設(shè)計(jì)語(yǔ)言發(fā)展過(guò)程來(lái)看,可分為
    發(fā)表于 12-06 00:17 ?2808次閱讀
    <b class='flag-5'>計(jì)算機(jī)語(yǔ)言</b>概述

    感知計(jì)算機(jī),靈感來(lái)自人類大腦的全新計(jì)算機(jī)架構(gòu)

    關(guān)鍵字:感知計(jì)算機(jī) 編程模型 傳感器網(wǎng)絡(luò) 神經(jīng)網(wǎng)絡(luò) IBM Research 在國(guó)際神經(jīng)網(wǎng)絡(luò)聯(lián)席會(huì)議(IJCNN)上披露了一種新的感知計(jì)算機(jī)架構(gòu)和編程模型,其靈感來(lái)自人類大腦。新的Corelet架構(gòu)
    發(fā)表于 09-14 16:58 ?2次下載
    感知<b class='flag-5'>計(jì)算機(jī)</b>,靈感來(lái)自<b class='flag-5'>人類</b>大腦的全新<b class='flag-5'>計(jì)算機(jī)</b>架構(gòu)

    基于邏輯語(yǔ)言計(jì)算機(jī)軟件設(shè)計(jì)(JAVA語(yǔ)言

    研究基于邏輯語(yǔ)言計(jì)算機(jī)軟件開(kāi)放設(shè)計(jì)問(wèn)題。應(yīng)用對(duì)比法分析在計(jì)算機(jī)軟件開(kāi)放設(shè)計(jì)之中,當(dāng)前應(yīng)用不同計(jì)算機(jī)邏輯語(yǔ)言的優(yōu)勢(shì),并可應(yīng)用最優(yōu)的
    發(fā)表于 11-01 15:19 ?0次下載
    基于邏輯<b class='flag-5'>語(yǔ)言</b><b class='flag-5'>計(jì)算機(jī)</b>軟件設(shè)計(jì)(JAVA<b class='flag-5'>語(yǔ)言</b>)

    研發(fā)聲音激活的計(jì)算機(jī)系統(tǒng),可識(shí)別人類語(yǔ)言

    借助人工智能技術(shù),科學(xué)家正在研發(fā)一種基于聲音激活的計(jì)算機(jī)系統(tǒng),它能以“自然并具有智能的”方式與人類互動(dòng)。人工智能技術(shù)將幫助計(jì)算機(jī)適應(yīng)用戶的聲音,最后的目標(biāo)是它們能聽(tīng)懂并理解用戶說(shuō)的話,
    發(fā)表于 07-12 01:16 ?1578次閱讀

    計(jì)算機(jī)編程語(yǔ)言的發(fā)展趨勢(shì)分析

    最開(kāi)始的時(shí)候,每種計(jì)算機(jī)都有自己的機(jī)器指令。例如,某種型號(hào)的計(jì)算機(jī)用8位二進(jìn)制信息10001010表示加法指令,等等。所以用這種機(jī)器語(yǔ)言進(jìn)行程序設(shè)計(jì)是很累的工作,而且代碼難以閱讀和理解
    發(fā)表于 09-26 09:40 ?5165次閱讀

    計(jì)算機(jī)語(yǔ)言的分類

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

    NLP不僅可以做到幫助計(jì)算機(jī)學(xué)習(xí)并理解我們的語(yǔ)言

    這個(gè)時(shí)候,機(jī)器學(xué)習(xí)的分支——自然語(yǔ)言處理(NLP)應(yīng)運(yùn)而生,NLP不僅僅可以做到幫助計(jì)算機(jī)學(xué)習(xí)并理解我們的語(yǔ)言,更會(huì)幫助計(jì)算機(jī)進(jìn)行“情感分析
    的頭像 發(fā)表于 08-27 15:11 ?2093次閱讀

    如何使用計(jì)算機(jī)讓機(jī)器人理解人類語(yǔ)言以及含義

    和文化背景的復(fù)雜性,讓機(jī)器很難理解和解釋客戶提供的觀點(diǎn)性數(shù)據(jù),因此提取見(jiàn)解極具挑戰(zhàn)性。自然語(yǔ)言處理(NLP)和機(jī)器學(xué)習(xí)(ML)等工具使計(jì)算機(jī)能夠理解人類
    的頭像 發(fā)表于 05-17 16:19 ?3120次閱讀

    你們知道計(jì)算機(jī)是如何識(shí)別你寫(xiě)的代碼的嗎?

    學(xué)習(xí)編程其實(shí)就是學(xué)高級(jí)語(yǔ)言,即那些為人類設(shè)計(jì)的計(jì)算機(jī)語(yǔ)言。 但是,計(jì)算機(jī)理解高級(jí)語(yǔ)言,必須通過(guò)
    的頭像 發(fā)表于 07-06 10:03 ?2597次閱讀

    手勢(shì)識(shí)別幫助計(jì)算機(jī)理解人語(yǔ)言

    電子發(fā)燒友網(wǎng)站提供《手勢(shì)識(shí)別幫助計(jì)算機(jī)理解人語(yǔ)言.zip》資料免費(fèi)下載
    發(fā)表于 10-28 10:16 ?0次下載
    手勢(shì)識(shí)別幫助<b class='flag-5'>計(jì)算機(jī)理解人</b>體<b class='flag-5'>語(yǔ)言</b>

    計(jì)算機(jī)是如何理解世界的

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

    計(jì)算機(jī)視覺(jué):AI如何識(shí)別與理解圖像

    計(jì)算機(jī)視覺(jué)是人工智能領(lǐng)域的一個(gè)重要分支,它致力于讓機(jī)器能夠像人類一樣理解和解釋圖像。隨著深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的發(fā)展,人們對(duì)于如何讓AI識(shí)別和理解圖像產(chǎn)生了濃厚的興趣。本文將探討
    的頭像 發(fā)表于 01-12 08:27 ?1202次閱讀
    <b class='flag-5'>計(jì)算機(jī)</b>視覺(jué):AI如何識(shí)別與<b class='flag-5'>理解</b>圖像