rasa對(duì)話系統(tǒng)踩坑記(三)

rasa對(duì)話系統(tǒng)踩坑記(二)中我自定義過兩個(gè)component組件雀摘。也好久沒更新采坑系列了糊秆,隨著項(xiàng)目的進(jìn)展迭代最近又新增了兩個(gè)component組件舟奠,所以更新下系列文章输枯。

rasa_nlu_gao自定義component

entity_edit_intent

entity_edit_intent這個(gè)組件比較簡(jiǎn)單刮萌,寫它的目的是因?yàn)榕龅搅诉@樣一個(gè)問題嚼贡。就是在nlu過程中熏纯,slot filling倒是很準(zhǔn)確,但是intent一直識(shí)別不出來都是None.所以起初第一個(gè)想到的方案就是根據(jù)entity來修改intent粤策。代碼大概的思路就是在最后樟澜,在entity識(shí)別的情況下,如果intent沒有識(shí)別出來就強(qiáng)制修改意圖掐场。

    defaults = {
        "entity": ["nr"],
        "intent": ["enter_data"],
        "min_confidence": 0
    }

    def __init__(self, component_config=None):
        super(EntityEditIntent, self).__init__(component_config)

    def process(self, message, **kwargs):
        # type: (Message, **Any) -> None

        last_entities = message.get("entities", [])
        last_intent = message.get("intent", {})
    
        if last_intent["confidence"] <= self.component_config["min_confidence"]:
            for item in last_entities:
                if item["entity"] in self.component_config["entity"]:
                    entity_index = self.component_config["entity"].index(item["entity"])
                    intent_name = self.component_config["intent"][entity_index]

                    intent = {"name": intent_name, "confidence": 1.0}

                    message.set("intent", intent, add_to_output=True)

上面就是代碼實(shí)現(xiàn)往扔,很簡(jiǎn)單贩猎,主要配置文件就是entity、intent和min_confidence萍膛,如果confidence <= min_confidence就會(huì)根據(jù)entity來修改intent吭服,一一對(duì)應(yīng)的關(guān)系,具體的yml配置示例如下:

- name: "entity_edit_intent"
  entity: ["nr", "phone_number"]
  intent: ["enter_data", "enter_data"]
  min_confidence: 0

intent_featurizer_wordvector

正如上面說的蝗罗,entity_edit_intent這個(gè)組件是強(qiáng)制修改intent艇棕,所以慎用。后面我就在思考如何更好的改善intent的識(shí)別問題串塑。翻看rasa-nlu的源碼沼琉,從中找到了intent為什么不是很理想的原因。在官方的component和例子中桩匪,在做intent_classifier_tensorflow_embedding識(shí)別前的word featurizer的時(shí)候打瘪,官方用的是word-of-bag做的詞嵌入,只是單純的考慮了詞頻傻昙,沒有考慮到詞義而且還有one-hot的通病稀疏矩陣的問題闺骚。所以很快想到了詞向量來替換詞袋法做詞嵌入。
所以在intent_featurizer_wordvector這個(gè)組件中妆档,我嘗試并實(shí)現(xiàn)了2種詞向量的方法(準(zhǔn)確的說是兩類)僻爽,既可以做word2vec、glove贾惦、fasttext這一類pre-trained的詞向量胸梆,也可以實(shí)現(xiàn)現(xiàn)階段比較火的elmo詞向量,具體的區(qū)別這里不詳細(xì)講了须板,就是elmo會(huì)根據(jù)雙向神經(jīng)網(wǎng)絡(luò)模型動(dòng)態(tài)計(jì)算詞向量碰镜,而原始的是已經(jīng)訓(xùn)練好的詞向量直接lookup。然后這里我單純展示具體的配置和用法习瑰。word2vec的yml配置如下:

- name: "intent_featurizer_wordvector"
  vector: "data/2000000-small.txt"
  limit: 50000

需要有已經(jīng)訓(xùn)練好的word2vec或者glove格式的提前訓(xùn)練好的詞向量文本洋措,這里的limit是限制詞向量的大小的,詞向量是從高頻到低頻排序杰刽,如果詞向量太大比如騰訊開源的有14G菠发,我們就很難使用,所以這里會(huì)限制只取前面一定數(shù)量的高頻詞匯贺嫂。elmo的yml配置如下:

- name: "intent_featurizer_wordvector"
  elmo: "data/xinhua_elmo_trained_model/"

elmo的配置需要pre_trained的網(wǎng)絡(luò)模型滓鸠,這里用的是哈工大預(yù)訓(xùn)練的ELMoForManyLangs模型,elmo的訓(xùn)練也是十分消耗硬件的第喳,我還沒有自己訓(xùn)練糜俗。

總結(jié)

隨著項(xiàng)目的不斷改善,需要不斷地自定義一些項(xiàng)目需要的rasa-nlu component組件。其實(shí)rasa-nlu更多地我看成是一個(gè)框架悠抹,至于里面的模型我們可以自己填充珠月。所以歡迎大家使用rasa-nlu-gao,直接pip install rasa-nlu-gao現(xiàn)在已經(jīng)更新到0.1.5版本楔敌,也希望大家能夠往里貢獻(xiàn)自定義組件啤挎。原創(chuàng)文章,轉(zhuǎn)載請(qǐng)說明出處

Recommand

liveportraitweb
novelling

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卵凑,一起剝皮案震驚了整個(gè)濱河市庆聘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌勺卢,老刑警劉巖伙判,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異黑忱,居然都是意外死亡宴抚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門甫煞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酱塔,“玉大人,你說我怎么就攤上這事危虱。” “怎么了唐全?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵埃跷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我邮利,道長(zhǎng)弥雹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任延届,我火速辦了婚禮剪勿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘方庭。我一直安慰自己厕吉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布械念。 她就那樣靜靜地躺著头朱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪龄减。 梳的紋絲不亂的頭發(fā)上项钮,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼烁巫。 笑死署隘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的亚隙。 我是一名探鬼主播磁餐,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼恃鞋!你這毒婦竟也來了崖媚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤恤浪,失蹤者是張志新(化名)和其女友劉穎畅哑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體水由,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荠呐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了砂客。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泥张。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鞠值,靈堂內(nèi)的尸體忽然破棺而出媚创,到底是詐尸還是另有隱情,我是刑警寧澤彤恶,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布钞钙,位于F島的核電站,受9級(jí)特大地震影響声离,放射性物質(zhì)發(fā)生泄漏芒炼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一术徊、第九天 我趴在偏房一處隱蔽的房頂上張望本刽。 院中可真熱鬧,春花似錦赠涮、人聲如沸子寓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)别瞭。三九已至,卻和暖如春株憾,著一層夾襖步出監(jiān)牢的瞬間蝙寨,已是汗流浹背晒衩。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留墙歪,地道東北人听系。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像虹菲,于是被迫代替她去往敵國(guó)和親靠胜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345