從算法到產(chǎn)品:NLP技術(shù)的應(yīng)用演變

5 評(píng)論 6318 瀏覽 71 收藏 26 分鐘

文章回顧了近幾年NLP的發(fā)展歷程,從項(xiàng)目實(shí)施的兩個(gè)階段中帶我們梳理了NLP技術(shù)的應(yīng)用演變。

第一個(gè)與大家分享的Case,基于NLP展開(kāi)。分為3個(gè)部分,分別是NLP的發(fā)展、項(xiàng)目敘述、以及Lesson Learned。

講述NLP的發(fā)展,是為了更好地理解這門技術(shù),為項(xiàng)目的展開(kāi)做鋪墊。Lesson Learned是筆者總結(jié)整個(gè)項(xiàng)目下來(lái)自己的收獲。

筆者本身并非計(jì)算機(jī)課班,對(duì)理論知識(shí)的理解難免不深刻,以及可能會(huì)有偏差,請(qǐng)大家不吝指教。

目錄:

  1. NLP的發(fā)展
  2. 項(xiàng)目闡述
  3. Lesson Learned

一、NLP的發(fā)展

1.1 NLP的定義

The field of study that focuses on the interactions between human language and computers is called Natural Language Processing, or NLP for short. It sits at the intersection of computer science, artificial intelligence, and computational linguistics ( Wikipedia)

總結(jié)一下維基百科對(duì)NLP的定義, NLP關(guān)注人類語(yǔ)言與電腦的交互。

使用語(yǔ)言,我們可以精確地描繪出大腦中的想法與事實(shí),我們可以傾訴我們的情緒,與朋友溝通。

電腦底層的狀態(tài),只有兩個(gè),分別為0和1。

那么,機(jī)器能不能懂人類語(yǔ)言呢?

1.2 NLP的發(fā)展歷史

NLP的發(fā)展史,走過(guò)兩個(gè)階段。第一個(gè)階段,由”鳥飛派“主導(dǎo),第二個(gè)階段,由”統(tǒng)計(jì)派“主導(dǎo)。

我們?cè)敿?xì)了解一下,這兩個(gè)階段區(qū)別,

階段一,學(xué)術(shù)屆對(duì)自然語(yǔ)言處理的理解為:要讓機(jī)器完成翻譯或者語(yǔ)音識(shí)別等只有人類才能做的事情,就必須先讓計(jì)算機(jī)理解自然語(yǔ)言,而做到這一點(diǎn)就必須讓計(jì)算機(jī)擁有類似我們?nèi)祟愡@樣的職能。這樣的方法論被稱為“鳥飛派”,也就是看鳥怎樣飛,就能模仿鳥造出飛機(jī)。

階段二,今天,機(jī)器翻譯已經(jīng)做得不錯(cuò),而且有上億人使用過(guò),NLP領(lǐng)域取得如此成就的背后靠的都是數(shù)學(xué),更準(zhǔn)確地說(shuō),是靠統(tǒng)計(jì)。

階段一到階段二的轉(zhuǎn)折時(shí)間點(diǎn)在1970年,推動(dòng)技術(shù)路線轉(zhuǎn)變的關(guān)鍵人物叫做弗里德里克. 賈里尼克和他領(lǐng)導(dǎo)的IBM華生實(shí)驗(yàn)室。(對(duì)IBM華生實(shí)驗(yàn)室感興趣的朋友可以閱讀吳軍老師的《浪潮之巔》,書中有詳細(xì)講述。)

我們今天看到的與NLP有關(guān)的應(yīng)用,其背后都是基于統(tǒng)計(jì)學(xué)。那么,當(dāng)前NLP都有哪些應(yīng)用呢?

1.3 目前NLP的主要應(yīng)用

當(dāng)前NLP在知識(shí)圖譜、智能問(wèn)答、機(jī)器翻譯等領(lǐng)域,都得到了廣泛的使用。

二、項(xiàng)目闡述

2.1 業(yè)務(wù)背景

說(shuō)明:在項(xiàng)目闡述中,具體細(xì)節(jié)已經(jīng)隱去。

客戶是一家提供金融投融資數(shù)據(jù)庫(kù)的科技公司。在其的產(chǎn)品線中,有一款產(chǎn)品叫做人物庫(kù),其中包括投資人庫(kù)和創(chuàng)始人庫(kù)。

  • 創(chuàng)始人庫(kù)供投資人查看,使用場(chǎng)景,當(dāng)投資人考察是否要投資創(chuàng)業(yè)者,因此會(huì)關(guān)注創(chuàng)業(yè)者的學(xué)校(是否名校)、工作(大廠)、以及是否是連續(xù)創(chuàng)業(yè)者、是否獲得榮譽(yù),如“30 under 30”。
  • 投資人庫(kù)供創(chuàng)業(yè)者查看,使用場(chǎng)景:當(dāng)創(chuàng)業(yè)者需要投資人,會(huì)考察投資人的投資情況。因此會(huì)關(guān)注投資者的學(xué)校(是否名校)、工作(大廠)、投資案例、投資風(fēng)格等

我提供的服務(wù),便是為這兩條產(chǎn)品線服務(wù)。因?yàn)楸卷?xiàng)目主要關(guān)注,相關(guān)人物的履歷信息,因此該項(xiàng)目代號(hào)為「人物履歷信息抽取」。

需要抽取的人物履歷信息,由5個(gè)部分組成:學(xué)校、工作、投資(案例)、創(chuàng)業(yè)經(jīng)歷、獲取榮譽(yù)。

2.2 項(xiàng)目指標(biāo)

項(xiàng)目指標(biāo)包括算法指標(biāo)與工程指標(biāo)。

2.2.1 算法指標(biāo)

算法層面,指標(biāo)使用的是Recall和Precision。為了避免大家對(duì)這兩個(gè)指標(biāo)不太熟悉,我?guī)Т蠹乙黄鸹仡櫼幌隆?/p>

我們先來(lái)認(rèn)識(shí)一下混淆矩陣(confusion matrix)?;煜仃嚲褪欠謩e統(tǒng)計(jì)分類模型歸錯(cuò)類,歸對(duì)類的觀測(cè)值個(gè)數(shù),然后把結(jié)果放在一個(gè)表里展示出來(lái)。矩陣中的每一行,代表的是預(yù)測(cè)的類別,每一列,代表的是真實(shí)的類別。

通過(guò)混淆矩陣,我們可以直觀地看到系統(tǒng)是否混淆了兩個(gè)類別。

我們可以舉一個(gè)混淆矩陣的例子:

0代表Negative,1代表 Positve。

  • TN:當(dāng)真實(shí)值為0,且預(yù)測(cè)值為0,即為TN(True Negative)
  • FN:當(dāng)真實(shí)值為1,而預(yù)測(cè)值為0,即為FN(False Negative)
  • TP: 當(dāng)真實(shí)值為1,且預(yù)測(cè)值為1,即為TP(True Positive)
  • TN:當(dāng)真實(shí)值為0,而預(yù)測(cè)值為1,即為FP(False Positive)

除了上面,我們還需要了解下面三個(gè)指標(biāo),分別為Recall、Precision、和F1。

  • Recall(召回率)是說(shuō)我們的Predicted Class中,被預(yù)測(cè)為1的這個(gè)item的數(shù)量,占比Actual Class中類別為1的item的數(shù)量。如果,我們完全不考慮其他的因素,我們可以將所有的item都預(yù)測(cè)為1,那么我們的Recall就會(huì)很高,為1。但是在實(shí)際生產(chǎn)環(huán)境中,是不可以這樣操作的。
  • Precision(精準(zhǔn)率)是說(shuō),我們預(yù)測(cè)的Class中,正確預(yù)測(cè)為1的item的數(shù)量,占比我們預(yù)測(cè)的所有為1item的數(shù)量。
  • F1是兩者的調(diào)和平均。

Ok~了解了上面這些衡量算法模型用到的基礎(chǔ)概念之后,我們來(lái)看看本項(xiàng)目的指標(biāo)。

模型算法指標(biāo)為:recall 90;precision 60。

一個(gè)思考題?為什么recall 90,precision 60?以及,為什么沒(méi)有f1,或者說(shuō)為什么不將f設(shè)置為72,因?yàn)槿绻鹯ecall 90,precision60,那么這種情況下,f1就是72嘛。

要回答上述問(wèn)題,我們要從業(yè)務(wù)出發(fā)。需要記住,甚至背誦3遍。

為什么,制定指標(biāo)的時(shí)候,一定要從業(yè)務(wù)出發(fā)呢?

我們來(lái)舉一個(gè)很極端的例子,如果一個(gè)模型能做到recall90 precision90,是不是能說(shuō)這個(gè)指標(biāo)就很好了?

我相信絕大多數(shù)場(chǎng)景下,這個(gè)模型表現(xiàn)都是十分優(yōu)秀。請(qǐng)注意,我說(shuō)的是絕大多數(shù),那么哪些場(chǎng)景下不是呢?

比如說(shuō),癌癥檢測(cè)。

假設(shè),你目前在緊密籌備一個(gè)“癌癥檢測(cè)”項(xiàng)目。對(duì)于每一個(gè)被檢測(cè)的對(duì)象,都有如下兩個(gè)結(jié)果中的任意一個(gè)結(jié)果:

  • 1 = 實(shí)在抱歉,你不幸患上了癌癥。
  • 0 = 恭喜你,你并沒(méi)有換上癌癥。

你同事告訴你了一個(gè)好消息,你們模型的在測(cè)試集上的準(zhǔn)確率是99%。聽(tīng)起來(lái)很棒,但是你是一個(gè)嚴(yán)謹(jǐn)認(rèn)真的AI PM,所以你決定親自review一下測(cè)試集。

你的測(cè)試集都被專業(yè)的醫(yī)學(xué)人士打上了標(biāo)簽。下面你測(cè)試集的實(shí)際情況

  • 一共有1,000,000(一百萬(wàn)張醫(yī)學(xué)影像圖)
  • 999,000醫(yī)學(xué)影像圖是良性(Actual Negative)
  • 1,000醫(yī)學(xué)影像圖是惡性(Actual Positive)

有了上述的數(shù)據(jù),即我們模型驗(yàn)證的GroundTruth,接著,我們來(lái)看看這個(gè)模型的Predicted Result。既然,我們上面學(xué)了confusion matrix,那么我們回顧一下Confusion Matrix的兩個(gè)特征,行代表Predicted class,列代表Actual class。讓我們看一下:

根據(jù)所學(xué),實(shí)際應(yīng)用一下:

  1. TP(實(shí)際是Malignant,預(yù)測(cè)是Malignant)
  2. FP(實(shí)際是Benign,預(yù)測(cè)是Malignant)
  3. TN(實(shí)際是Benign,預(yù)測(cè)是Benign)
  4. FN(實(shí)際是Malignant,預(yù)測(cè)是Benign)

看到這里可能有點(diǎn)頭暈,沒(méi)關(guān)系,我馬上為大家總結(jié)一下:模型正確的判斷是1和3,不正確的判斷是2和4.

我們希望這個(gè)模型將醫(yī)學(xué)影像圖片是否為惡性腫瘤做好的區(qū)分,好的區(qū)分就是指的1和3。除此之外,其余的都是錯(cuò)誤的區(qū)分。

到這里,我們?cè)倏纯纯茨P偷谋憩F(xiàn)。

當(dāng)同事告訴我們模型的正確率是99%的時(shí)候,她到底說(shuō)的是什么呢?我們來(lái)仔細(xì)分析一下哦~

?她說(shuō)的是Precision嗎?

Precision回答的問(wèn)題是,我們模型預(yù)測(cè)為1的樣本數(shù)量在實(shí)際為1樣本數(shù)量中的占比。用公式表示

應(yīng)用真實(shí)場(chǎng)景中,我們的準(zhǔn)確率 Precision = 990 / (990 + 9,990) = 0.09 = 9%

?她說(shuō)的是Recall嗎?

上述場(chǎng)景中,我們的召回率Recall = 990 / (990 + 10) = 990 / 1,000 = 0.99 = 99%

?她說(shuō)的是Accuracy嗎?

上述場(chǎng)景中,我們的Accuracy是 Accuracy = (990 + 989,010) / 1,000,000 = 0.99 = 99%

從上面的指標(biāo),我們可以了解到我們的這個(gè)算法模型有一個(gè)高的recall和高的accuracy,但是低的precision。

我們的算法模型的precision只有9%。這就意味著被預(yù)測(cè)為maglignant的醫(yī)學(xué)圖像大多數(shù)都是良性。我們是不是可以這樣就說(shuō)我們的算法模型很垃圾呢?

并不是。實(shí)際上,在我們這個(gè)算法模型里面,recall的重要性是比precision高的。所以,盡管我們的precision只有9%,但是我們的召回有99%,這其實(shí)是一個(gè)很理想的模型表現(xiàn)。因?yàn)?,患者有癌癥,但是在檢查時(shí)候被漏掉,這種情況,是任何人都不希望發(fā)生的。

可能這個(gè)時(shí)候,你會(huì)有一個(gè)疑問(wèn),這個(gè)recall和precision的重要性如何來(lái)確定呢?好問(wèn)題,讓我們來(lái)仔細(xì)看看。
首先,了解一下指標(biāo)制定的原則:指標(biāo)的制定取決于我們的商業(yè)目標(biāo),以及False Positive和False Negative帶來(lái)的損失。

?什么時(shí)候recall比precision重要

當(dāng)FN會(huì)帶來(lái)極大損失的時(shí)候,Recall會(huì)顯得非常重要。比如,如果將惡心腫瘤預(yù)測(cè)為良性,這就是非常嚴(yán)重的后果。
這樣的預(yù)測(cè),會(huì)讓病人無(wú)法得到應(yīng)該的治療,從而導(dǎo)致這位病人失去生命,并且這個(gè)過(guò)程是不可逆的!高的recall是我們希望盡量減少False Negative,盡管這樣會(huì)帶來(lái)更多的False Positive。但是通過(guò)一些后續(xù)的檢查,我們是能夠?qū)⑦@個(gè)FP排除的。

?那什么時(shí)候precision比recall重要呢?

當(dāng)FP會(huì)帶來(lái)很大損失的時(shí)候,Precision就顯得非常重要。比如在郵件檢測(cè)里面。垃圾郵件是1,正常郵件是0,如果有很多FP的話,那么大量的正常郵件都會(huì)被存儲(chǔ)到垃圾郵件。這樣造成的后果是非常嚴(yán)重的。

到了這里,讓我們來(lái)回過(guò)頭去看看我們業(yè)務(wù)的recall 90 precision 60,我們會(huì)為什么這樣制定?這還是得從業(yè)務(wù)背景談起。在我和團(tuán)隊(duì)分享,如何評(píng)估客戶AI需求時(shí)候,一個(gè)很重要的步驟是,首先需要了解這個(gè)在沒(méi)有機(jī)器的條件下,他們是如何做這件事的?他們做這件事的判斷標(biāo)準(zhǔn)?以及具體的操作步驟。

只有在了解了這個(gè)的前提下 ,我們才可以根據(jù)這些domain knowledge來(lái)進(jìn)行AI解決方案設(shè)計(jì)。提取人物履歷信息這些工作是由客戶的運(yùn)營(yíng)同學(xué)負(fù)責(zé)的,那么客戶的運(yùn)營(yíng)同學(xué)之前是怎么做的呢?他們會(huì)閱讀一篇文章,然后找出符合人物履歷標(biāo)準(zhǔn)的信息,做抽取,并進(jìn)行二次加工。

注意哦,他們的重點(diǎn)是,需要做二次加工,這里的二次加工指的是什么呢?就是將人物的一些履歷信息進(jìn)行整合。因此,其實(shí)對(duì)他們來(lái)說(shuō),召回不會(huì)最重要的,因?yàn)椴粩嘤行碌恼Z(yǔ)料(文章)發(fā)布,他們總可以獲取相關(guān)人物的信息,但是從一篇好幾千字甚至上萬(wàn)字的文章中,準(zhǔn)確定位人物履歷有關(guān)的信息,就顯得非常重要,可以提升效率。

是的,效率, 是我們制定我們算法指標(biāo)的標(biāo)準(zhǔn),提高召回,可以提高運(yùn)營(yíng)同學(xué)的效率。

下一個(gè)問(wèn)題?為什么不將f1設(shè)置為72呢?因?yàn)槿绻覀價(jià)ecall 90,但是precision 60,最后f1也是72,但是這是不符合業(yè)務(wù)場(chǎng)景需求的。

2.2.2 性能指標(biāo)

以API的形式交付。對(duì)長(zhǎng)度為1000字的文本,每秒查詢率(QPS)為10,一次調(diào)用在95情況下響應(yīng)時(shí)間(RT)為3秒。接口調(diào)用成功率為99%。

讓我們拆解一下這個(gè)性能指標(biāo),首先說(shuō)一下交付形式。

當(dāng)前AI項(xiàng)目交付主要有兩種,API和Docker,各自適用于不同的業(yè)務(wù)場(chǎng)景。

QPS(Query Per Second)每秒查詢率是對(duì)一個(gè)特定的查詢服務(wù)器在規(guī)定時(shí)間內(nèi)所處理流量多少的衡量標(biāo)準(zhǔn),在因特網(wǎng)上,作為域名系統(tǒng)服務(wù)器的機(jī)器的性能經(jīng)常用每秒查詢率來(lái)衡量。對(duì)應(yīng)fetches/sec,即美妙的響應(yīng)請(qǐng)求數(shù),也是最大吞吐能力。

RT響應(yīng)時(shí)間是指系統(tǒng)對(duì)請(qǐng)求作出響應(yīng)的時(shí)間。直觀上看,這個(gè)指標(biāo)與人對(duì)軟件性能的主管感受是非常一致的,因?yàn)樗暾赜涗浟苏麄€(gè)計(jì)算機(jī)系統(tǒng)處理請(qǐng)求的時(shí)間

2.3 項(xiàng)目實(shí)施

項(xiàng)目實(shí)施分為兩個(gè)階段,階段一的嘗試主要是使用規(guī)則,階段二的嘗試中,我們將策略從規(guī)則切換到了模型。從規(guī)則到模型的轉(zhuǎn)換,影響因素比較多,有隨著項(xiàng)目進(jìn)展,項(xiàng)目組對(duì)項(xiàng)目難度的認(rèn)識(shí)更加深刻的因素,也有數(shù)據(jù)集的積累更加豐富的原因。

2.3.1 階段一:規(guī)則

在項(xiàng)目中的階段一,我們的嘗試,主要在于規(guī)則。首先,我們來(lái)介紹一下,在機(jī)器學(xué)習(xí)里面,什么是規(guī)則。

那么我們第一階段,使用規(guī)則具體是怎么做的呢?

在第一個(gè)階段,我們整理出了3個(gè)文本:白名單、黑名單、打分詞。

先來(lái)說(shuō)說(shuō)這三個(gè)文本在我們規(guī)則中的使用邏輯,接著我會(huì)解釋為什么,我們要這么設(shè)計(jì)。

白名單:白名單是一個(gè)list,里面有很多詞。當(dāng)一句話中出現(xiàn)了屬于白名單詞典中的詞,我們就將這句話提取出來(lái)。

黑名單:當(dāng)一句話中出現(xiàn)了這個(gè)詞,我們就將這句話扔掉。

打分詞:當(dāng)一句話中出現(xiàn)了打分詞list中的詞,我們就給這句話加1分。(因?yàn)樵~的權(quán)重不同,因此權(quán)重不一定都是1)

所以,為什么我們要這樣設(shè)計(jì)呢?

我們首先來(lái)看看白名單,白名單中的典型詞匯有:畢業(yè)于、深造、晉升等。大家可以發(fā)現(xiàn),這些詞匯,有強(qiáng)烈的屬性表現(xiàn),表現(xiàn)一個(gè)人物的履歷。因此,當(dāng)出現(xiàn)了這些詞匯之后,我們就默認(rèn)將這句話抽?。╡xtract)出來(lái)。

黑名單中的典型詞匯有:死于,逝世、出席等。這些詞,明顯與人物履歷毫無(wú)關(guān)系。

最后,我們來(lái)看一下這個(gè)打分詞。在打分的設(shè)計(jì)邏輯上,我們使用了TF-IDF。同時(shí),為了減少因?yàn)槲覀冏约簶颖玖可伲鴰?lái)的負(fù)面影響,我們爬取了百度百科人物庫(kù),通過(guò)TF-IDF,篩選出了幾百個(gè)和人物履歷描述相關(guān)的詞,并且人工對(duì)這些詞進(jìn)行了打分。我們通過(guò)匹配一句話中出現(xiàn)的打分詞,來(lái)為一個(gè)句子打分。并且,我們可以通過(guò)調(diào)節(jié)句子得分的閾值,來(lái)調(diào)節(jié)我們命中人物履歷的句子。

通過(guò)規(guī)則,我們發(fā)現(xiàn),模型的效果,在precision不錯(cuò),但是recall不夠好。通過(guò)分析bad case,我們發(fā)現(xiàn)模型的泛化性能差。

分析Bad Case的思路:

  1. 找出所有bad cases,看看哪些訓(xùn)練樣本預(yù)測(cè)錯(cuò)了?
  2. 對(duì)每一個(gè)badcase分析找出原因
  3. 我們哪部分特征使得模型做了這個(gè)判斷
  4. 這些bad cases是否有共性?
  5. 將bad cases進(jìn)行分類,并統(tǒng)計(jì)不同類別的頻數(shù)

這里順便提一下,在我們分析bad case的時(shí)候,除了分析模型預(yù)測(cè)的錯(cuò)誤之外,我們也會(huì)發(fā)現(xiàn)一些標(biāo)注數(shù)據(jù)存在問(wèn)題,在訓(xùn)練集中,有人為標(biāo)記錯(cuò)的樣本很正常,因?yàn)槿艘膊荒鼙WC100%正確。我們需要注意的是,這種標(biāo)記錯(cuò)誤分為兩類:

  1. 隨機(jī)標(biāo)記錯(cuò)誤,比如因?yàn)樽呱?、沒(méi)看清給標(biāo)錯(cuò)數(shù)據(jù)
  2. 系統(tǒng)性標(biāo)記錯(cuò)誤,標(biāo)錯(cuò)數(shù)據(jù)的人,是真的將A以為是B,并且在整個(gè)標(biāo)注流程中,都將A以為是B

對(duì)于隨機(jī)標(biāo)注錯(cuò)誤,只要整體的訓(xùn)練樣本足夠大,放著也沒(méi)事。對(duì)于系統(tǒng)性標(biāo)注錯(cuò)誤,必須進(jìn)行修正,因?yàn)榉诸惼鲿?huì)學(xué)到錯(cuò)誤的分類。

說(shuō)明一下,關(guān)于Bad Case分析,吳恩達(dá)的課程都有講,如果想對(duì)這一塊知識(shí),有進(jìn)一步了解,可以自行進(jìn)行學(xué)習(xí)。

?階段一遇到的困難
通過(guò)對(duì)bad case的分析,我們發(fā)現(xiàn)通過(guò)規(guī)則中最大的問(wèn)題是,模型無(wú)法分清動(dòng)名詞。因此,導(dǎo)致precision非常地低。

舉2個(gè)例子:

A:小紅投資的運(yùn)動(dòng)裝公司西藍(lán)花。

B:小紅投資了運(yùn)動(dòng)裝公司西藍(lán)花。

第一句表達(dá)的主旨意思是運(yùn)動(dòng)裝公司,而第二句話表達(dá)的主旨是小紅進(jìn)行了投資,因此從最開(kāi)始對(duì)需要抽取句子的定義上來(lái)說(shuō),我們應(yīng)該抽取第二句。但是,因?yàn)槭谴蚍謾C(jī)制,AB兩句都命中了“投資”,因此,均被抽取。

從這里,就發(fā)現(xiàn),我們的規(guī)則之路,基本上走到了盡頭,打分的方式是永遠(yuǎn)無(wú)法將AB區(qū)分出來(lái),于是,我們開(kāi)始了我們下一段探索之旅。

2.3.2 階段二:模型

在階段一,我們講到了規(guī)則的一個(gè)弊端,就是規(guī)則無(wú)法區(qū)分詞性。

經(jīng)過(guò)評(píng)估,我們還是打算使用模型來(lái)做,并且根據(jù)上一階段的發(fā)現(xiàn),做對(duì)應(yīng)的優(yōu)化,在這里,讓我們介紹一下“Part-of-Speech Tagging”

Part-of-Speech Tagging,也叫詞性標(biāo)注。

詞性標(biāo)注很有用,因?yàn)樗麄兘沂玖艘粋€(gè)單詞以及其相臨近詞的很多信息。

我們看一下具體的用例。

根據(jù)POS,我們發(fā)現(xiàn),”dog“是名詞,“ran”是動(dòng)詞。是不是覺(jué)得這個(gè)方法剛好就能彌補(bǔ)我們上面談到的,模型無(wú)法分清動(dòng)名詞這個(gè)困難。

因此,我們對(duì)所有數(shù)據(jù),加了POS,然后放進(jìn)了Bert,這里還有一個(gè)小的tip,因?yàn)槲覀償?shù)據(jù)量其實(shí)是很小的,所以Bert只訓(xùn)練了一輪。

既然這里講到了Bert,那么我也和大家一起重新復(fù)習(xí)一下Bert(我不是科班專業(yè),也不是專門研究NLP方向的,所以我自己的知識(shí)積累有限,如果大家有更好的想法,歡迎交流討論90度鞠躬)

首先,我們了解一個(gè)概念“預(yù)訓(xùn)練模型”。

預(yù)訓(xùn)練模型就是一些人用某個(gè)較大的數(shù)據(jù)集訓(xùn)練好的模型,這個(gè)模型里面有一些初始化的參數(shù),這些參數(shù)不是隨機(jī)的,而是通過(guò)其他類似數(shù)據(jù)上面學(xué)到的。

Bert呢,是一個(gè)Google開(kāi)源的模型。非常的牛逼,那到底有多牛逼呢?這要從Bert的試用領(lǐng)域和模型表現(xiàn)效果,兩個(gè)維度來(lái)說(shuō)說(shuō)。

適用領(lǐng)域,Bert可以用于各種NLP任務(wù),只需要在核心模型中添加一個(gè)層,例如:

  1. ?在分類任務(wù)中,例如情感分析,只需要在 Transformer 的輸出之上加一個(gè)分類層
  2. 在問(wèn)答任務(wù)中,問(wèn)答系統(tǒng)需要接收有關(guān)文本序列的question,并且需要在序列中標(biāo)記answer??梢允褂?BERT學(xué)習(xí)兩個(gè)標(biāo)記 answer 開(kāi)始和結(jié)尾的向量來(lái)訓(xùn)練 Q&A模型
  3. 在命名實(shí)體識(shí)別(NER),系統(tǒng)需要接收文本序列,標(biāo)記文本中的各種類型的實(shí)體(人員、組織、日期等)可以用BERT將每個(gè)token的輸出向量送到預(yù)測(cè) NER 標(biāo)簽的分類層。

在part of speech 和Bert的加持下,我們模型的表現(xiàn),達(dá)到了recall 90,precision 90。

暫且講到這里吧~

三、Lesson Learned

其實(shí)從項(xiàng)目推進(jìn)上,數(shù)據(jù)集管理上,策略分析上,感覺(jué)還有好多可以講,可以寫的,寫下來(lái)又感覺(jué)寫的太多了。之后,單開(kāi)篇幅來(lái)寫吧

參考資料:

1. 語(yǔ)言本能

2. 數(shù)學(xué)之美

3. 智能時(shí)代

4. 2018年,NLP研究與應(yīng)用進(jìn)展到什么水平了?

5. https://en.wikipedia.org/wiki/Confusion_matrix#cite_note-Powers2011-2

6. https://lawtomated.com/accuracy-precision-recall-and-f1-scores-for-lawyers/

7. [吞吐量(TPS)、QPS、并發(fā)數(shù)、響應(yīng)時(shí)間(RT)概念 – 胡立峰 – 博客園](https://www.cnblogs.com/data2value/p/6220859.html)

8. [Bad Case Analysis](http://gitlinux.net/2019-03-11-bad-case-analysis/)

9. [【結(jié)構(gòu)化機(jī)器學(xué)習(xí)項(xiàng)目】Lesson 2—機(jī)器學(xué)習(xí)策略2_人工智能_【人工智能】王小草的博客-CSDN博客](https://blog.csdn.net/sinat_33761963/article/details/80559099)

10. [5 分鐘入門 Google 最強(qiáng)NLP模型:BERT – 簡(jiǎn)書](https://www.jianshu.com/p/d110d0c13063)

11. https://arxiv.org/pdf/1810.04805.pdf 《BERT: Pre-training of Bidirectional Transformers for Language Understanding》

 

本文由 @一顆西蘭花 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 倒是打分那一段沒(méi)太明白,請(qǐng)問(wèn)題主方便私信我一起討論討論嗎?

    來(lái)自北京 回復(fù)
  2. 就題主所說(shuō)的召回率和準(zhǔn)確率的方向說(shuō)一下自己的見(jiàn)解,先前在百度做策略基建時(shí)的概念:
    1. 召回率:個(gè)人認(rèn)為召回率是指能被模型所識(shí)別的樣本數(shù)量/全體樣本數(shù)量,即召回率=可以識(shí)別的樣本數(shù)量/全部樣本數(shù)量,舉個(gè)例子,我在做一款識(shí)別低質(zhì)內(nèi)容的模型,我輸入了1000條樣本,其中反饋結(jié)果為-1,0,1三種,0代表模型未能識(shí)別,即無(wú)法給出預(yù)測(cè)答案的樣本數(shù)量,倘若0的數(shù)量為50,那么模型的召回率即為95%(召回率=950/1000);
    2. 準(zhǔn)確率:這個(gè)和題主所說(shuō)的差不多,但是一般而言不會(huì)區(qū)分模型準(zhǔn)確率抑或是業(yè)務(wù)準(zhǔn)確率,防止概念混淆,個(gè)人認(rèn)為模型的準(zhǔn)確率是指預(yù)測(cè)正確的結(jié)果數(shù)占預(yù)測(cè)總數(shù)的比值,舉上述的例子來(lái)說(shuō),倘若1代表預(yù)測(cè)為真,數(shù)量為500,而在這500份樣本中,實(shí)際為真的數(shù)量為450,0代表預(yù)測(cè)低質(zhì),數(shù)量為450,而在這450份樣本中,實(shí)際為低質(zhì)的樣本數(shù)為430份,那么這個(gè)模型的準(zhǔn)確率即為93%,即(450+430)/950。

    來(lái)自北京 回復(fù)
  3. 感謝大佬分享~最近在做相關(guān)產(chǎn)品,受益匪淺~

    來(lái)自安徽 回復(fù)
  4. 大老,我轉(zhuǎn)載可以嗎

    來(lái)自北京 回復(fù)
    1. 轉(zhuǎn)載是什么意思呀?

      來(lái)自北京 回復(fù)