AIPM要知道的NLP知識(2):RNN和LSTM的應(yīng)用

LCC
3 評論 6923 瀏覽 15 收藏 8 分鐘

編輯導(dǎo)語:RNN是一種使用類似鏈表的形式、具有一定記憶能力的網(wǎng)絡(luò)模型;對于具有序列性的樣本數(shù)據(jù),記住過去的信息對預(yù)測當(dāng)前狀態(tài)是非常必要的;本文作者分享了關(guān)于RNN和LSTM的應(yīng)用,我們一起來看一下。

就像CV繞不開CNN,NLP也繞不開RNN,這一節(jié)就來總結(jié)下自然語言處理中的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)和它的好姐妹長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)以及它們的實際應(yīng)用。

一、先講個故事

從前有個小姑娘在森林里采蘑菇,有一天她撿到里一個神奇的黑盒子,盒子上有兩個洞,洞的大小只能塞一個小球進去。

為了試一試這個黑盒子能干嘛,小姑娘塞了一個寫著“我”的小球進去,盒子的另一個洞里立刻彈出了一個“天”字小球,于是小姑娘發(fā)現(xiàn)這個黑盒子的用途是放進去一個小球就會彈出來一個小球。

她繼續(xù)往里邊塞了寫著“愛”、“北”、“京”、“天”、“安”、“門”的小球,黑盒子依次彈出來“安”、“門”、“上”、“太”、“陽”、“升”。

哇,小姑娘驚喜地發(fā)現(xiàn)彈出來的小球不是無序的,而是和我們放進去的小球有某種對應(yīng)關(guān)系,于是小姑娘把這個神奇的盒子珍藏了起來。

后來小姑娘長大了,成為了一名出色的工程師,有一天她在收拾閣樓時候發(fā)現(xiàn)了這個小時候的黑盒子,她決定打開看看黑盒子里邊到底是什么樣子。

打開之后她發(fā)現(xiàn)盒子里的設(shè)計非常精妙,是這樣的:

進一步拆解,是這樣的:

小姑娘對黑盒子產(chǎn)生了濃厚的興趣,于是她開始在全世界搜集這樣的黑盒子。

隨著搜集的盒子越來越多,她發(fā)現(xiàn)有些黑盒子和她的一樣,塞一個小球進去就會盒子就會輸出一個小球(多對多);有的黑盒子要依次把所有小球都塞完才會吐出一個(多對一);有的黑盒子更神奇,只要塞一個小球進去盒子就會不停的吐小球出來(一對多)。

小姑娘花費畢生精力研究黑盒子們,她把黑盒子命名為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN);她發(fā)現(xiàn)黑盒子對之前的小球有一定的“記憶”,像人一樣會考慮上下文的語境;還有一種內(nèi)部結(jié)構(gòu)更復(fù)雜的黑盒子叫做長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM),LSTM的記憶力要比RNN更好。

于是她利用黑盒子們做出了很多有意思的發(fā)明:

二、應(yīng)用場景

小姑娘的發(fā)明大概可以分為4類:

  • 一是序列標(biāo)注,比如詞性標(biāo)注、命名實體識別;
  • 二是分類任務(wù),比如情感分析;
  • 三是關(guān)系判斷,比如推理、閱讀理解等;
  • 四是生成式任務(wù),比如翻譯、對話、文本摘要等通過一段文字生成另一段文字的任務(wù)。

從產(chǎn)品角度看,要實現(xiàn)一個完整產(chǎn)品,可能涉及到以上一個或者多個任務(wù)。

比如一個對話系統(tǒng)中會涉及到識別意圖(分類問題)、槽信息識別(序列標(biāo)注問題)等等;可見任務(wù)的粒度是要比產(chǎn)品細的,所以接下來的所有應(yīng)用場景分析還是都從偏技術(shù)的任務(wù)角度展開,舉得栗子可能比較偏向簡單的應(yīng)用(即一個應(yīng)用=一個任務(wù))。

1. 多對多

多輸入多輸出也就是輸入序列和輸出序列長度相同,以文本為例,輸入為10個字的一句話,輸出也是10個字或者標(biāo)記——多對多模型可以用來解決標(biāo)注問題。

命名實體識別實現(xiàn)中常用biLSTM+crf算法,輸入是待標(biāo)注的句子,輸出是每個詞的IOB標(biāo)記;比如對句子“王梅梅在香港大學(xué)讀研究生”進行命名實體識別,可以得到“王梅梅”和“香港大學(xué)”兩個命名實體,一個是人名,一個是組織機構(gòu)名。

對話機器人中的slot filling也可以看做是標(biāo)注問題,所以也可以用RNN/LSTM實現(xiàn),輸入是用戶表達,輸出是IOB標(biāo)注出的槽。

比如“訂明天到上海的機票”,輸出的標(biāo)簽序列是“O B-time I-time O B-toloc I-toloc O O O”,其中識別出了兩個槽——時間和目的地;根據(jù)識別出來的槽信息后續(xù)可以進行業(yè)務(wù)處理(比如查詢機票信息)或者進一步詢問缺失的信息(比如詢問出發(fā)地)。

2. 一對多

單輸入多輸出也就是輸入序列長度為1、輸出序列長度為n(對于特定模型輸出的最大值是一定的),典型的應(yīng)用是生成特定風(fēng)格的音樂、寫詩、寫文章等生成式任務(wù),比如古詩生成器:給定首字生成一首詩(如下圖)。

3. 多對一

多輸入單輸出是輸入序列長度為n、輸出序列長度為1,多對一其實也就是分類任務(wù),輸入一句話輸出一個評分、分類。

例如根據(jù)用戶對商品的評價生成評分(1到5分);還有就是情感分析,比如對話系統(tǒng)中通過用戶的輸入判斷用戶當(dāng)前情緒(積極、消極);還有違禁內(nèi)容檢測等等。

相關(guān)閱讀:

AIPM要知道的NLP知識(1):詞的表達

 

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

題圖來自Unsplash,基于CC0協(xié)議。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 文中最后分析語句情感的是什么軟件呀?

    來自上海 回復(fù)
    1. 百度官網(wǎng)示例

      來自北京 回復(fù)
  2. 謝謝

    來自上海 回復(fù)