Rasa構建中文系統

2021-10-05 23:31:21 字數 3759 閱讀 7794

rasa預設管道不支援提取中文實體

資料**

nlu.md

## intent:greet

- 你好

- 你好啊

- 你好嗎

- hello

- hi

- 早上好

- 晚上好

- 嗨## intent:affirm

- 是的

- 是- 對的

- 確實

- 好- ok

- 好的

- 好的,謝謝你

- 好滴

- 好啊

## intent:restaurant_search

- 我想找地方吃飯

- 我想吃[火鍋](food)啊

- 找個吃[拉麵](food)的店

- 這附近**有吃[麻辣燙](food)的地方

- 附近有什麼好吃的地方嗎

- 肚子餓了,推薦一家吃飯的地兒唄

- 帶老婆孩子去**吃飯比較好

- 想去一家有情調的餐廳

## intent:goodbye

- bye

- 再見

- 886

- 拜拜

- 下次見

## intent:medical

- [感冒](disease)了怎麼辦

- 我[便秘](disease)了,該吃什麼藥

- 我[胃痛](disease),該吃什麼藥?

- 一直[打噴嚏](disease)怎麼辦

- 父母都有[高血壓](disease),我會遺傳嗎

- 我生病了

- 頭上燙燙的,感覺[發燒](disease)了

- 頭很疼該怎麼辦

- **有什麼好方法嗎?

- 怎樣良好的生活習慣才能預防生病呢?

config.yml

language

: zh

pipeline

: supervised_embeddings

policies:-

name

: memoizationpolicy

-name

: keraspolicy

-name

訓練

rasa train nlu
**

rasa shell nlu
結果

next message:

我想吃麻辣燙

,"entities":[

],"intent_ranking":[

,,,,

],"text"

:"我想吃麻辣燙"

}

意圖識別正確,但實體抽取失效

方案一:tensorflow_embedding

方案二:mitie預訓練中文詞向量模型

config.yml

language

: zh

pipeline:-

name

: jiebatokenizer

-name

: crfentityextractor

-name

: countvectorsfeaturizer

oov_token

: oov

token_pattern

:'(?u)\b\w+\b'

-name

: embeddingintentclassifier

效果

next message:

我想吃麻辣燙啊

,"entities":[

],"intent_ranking":[

,,,,

],"text"

:"我想吃麻辣燙啊"

}

ps:換成我想吃麻辣燙就不行了

一、安裝mitie

解壓後執行python setup.py install

二、安裝rasa_nlu_chi

解壓後執行python setup.py install

三、修改配置

config.yml

language

: zh

pipeline:-

name

: mitienlp

model

: data/total_word_feature_extractor_zh.dat

-name

: jiebatokenizer

-name

: mitieentityextractor

-name

-name

: regexfeaturizer

-name

: mitiefeaturizer

-name

: sklearnintentclassifier

結果

next message:

我想吃麻辣燙

,"entities":[

],"intent_ranking":[

,,,,

],"text"

:"我想吃麻辣燙"

}

實體正確抽取出了麻辣燙,但意圖識別的置信度略低

檢視mitie模型的所有詞,共有20w個詞條

from mitie import

*twfe = total_word_feature_extractor(

"total_word_feature_extractor_zh.dat"

)# 載入

words = twfe.get_words_in_dictionary(

)words =

list

(map

(bytes

.decode, words)

)# 批量解碼

for word in words:

print

(word)

print

(len

(words)

)

方案一原理:詞向量轉換後使用cos余弦相似度實現意圖區分

方案一缺點:存在問題未登入詞問題

方案二原理:基於wiki百科訓練的資料模型

方案二缺點:不適合大資料訓練

官網建議如果訓練資料小於1000條採用方案二,否則採用方案一

entities must span whole tokens. wrong entity end.

rasa更新十分迅速,而rasa_nlu_chi的作者更新幾乎停滯,主要在兩三年前

rasa支援mitie可能會在未來的版本中被棄用

總結:這種配置方法是沒有前途的

更進一步的配置參考:rasa_nlu_gq,支援中文,自定義了n種模型,支援不同的場景和任務

用rasa nlu構建自己的中文nlu系統

rasa對話系統踩坑記(二)

mitie/examples/python

qt 中文系統亂碼

ifdef q os win qtextcodec gb2312 qtextcodec codecforname gb2312 qtextcodec setcodecfortr gb2312 qtextcodec setcodecforlocale gb2312 qtextcodec setcode...

WinCE6 0 製作中文系統

最近要做乙個簡體中文的wince系統,在網上查了很多資料,花了很多時間與精力,終於搞定 這還要感謝網上的 很多兄弟的好帖子,特別是 onlymiles兄的帖子,我的帖子也是參考了他的帖子內容,我只是做了些驗證。我的 系統是wince6.0 的,所以適當地改動了一些原帖的內容。對wince體積進行剪裁...

WinCE6 0 製作最簡中文系統

對wince體積進行剪裁,並讓wince支援簡體中文和英文顯示,預設顯示是中文,並以下對字型選取 作詳細的說明 關鍵操作步驟 1.先建立乙個wince核心工程.2.先開啟目標的工程檔案,單擊 project 選單,再單擊 properties configuration properties loc...