SpaCy v2.0(七)實(shí)例 - 訓(xùn)練分析模型Parser for custom semantics

訓(xùn)練parser for custom semantics 自定義語義分析

用這個模型可以訓(xùn)練自定義的語義中的分詞關(guān)聯(lián)關(guān)系,比如在樣例中定義了幾個自定義的關(guān)系:ROOT, PLACE, QUALITY, ATTRIBUTE, TIME, LOCATION等等。

在example/training中有spaCy提供的幾個模型訓(xùn)練樣例,直接拷貝一個train_intent_parser.py 到 spaCy 的根目錄,然后修改代碼中的訓(xùn)練語料,修改為中文訓(xùn)練語料:

TRAIN_DATA = [

??? ("找無線質(zhì)量好的咖啡廳", {

??????? 'heads': [0, 5, 1, 2, 5,? 0, 333, 333, 333, 333],? # index of? token head

??????? 'deps': ['ROOT',? 'ATTRIBUTE', 'ATTRIBUTE', 'QUALITY', '-', PLACE, '-', '-', '-', '-']

??? })

]

其中,heads和deps的規(guī)則如下:

例句:找無線質(zhì)量好的咖啡廳

首先,spaCy引入了結(jié)巴分詞,例句首先通過結(jié)巴進(jìn)行分詞,分詞結(jié)果為:找 無線 質(zhì)量 好 的 咖啡廳。接下來是句子結(jié)構(gòu),找—咖啡廳 無線—咖啡廳 無線--質(zhì)量質(zhì)量--好

heads:輸入各分詞所依賴的分詞的索引號(索引號為:找-0無線-1 質(zhì)量-2 好-3 的-4 咖啡廳-5)

在這個例句中的核心詞是找,那么句中各分詞的heads定義為:

找:0(根)

無線:5(咖啡廳)

質(zhì)量:1(無線)

好:2(質(zhì)量)

的:5(咖啡廳)

咖啡廳:0(找)

對應(yīng)的索引號是每個分詞按句子結(jié)構(gòu)中對應(yīng)的分詞的序號,核心詞對應(yīng)的是自己。

deps:

找:ROOT

無線:ATTRIBUTE

質(zhì)量:ATTRIBUTE

好:QUALITY

的:- (沒有實(shí)際意義的詞,結(jié)構(gòu)助詞之類的,隨意用個符號表述即可)

咖啡廳:PLACE

需要注意的是:在本樣例中,spaCy是按照漢字的字?jǐn)?shù)來計(jì)算heads和deps中的參數(shù)數(shù)量的,而進(jìn)行標(biāo)注時(shí)是以分詞為單位標(biāo)注和計(jì)算序號的,所以訓(xùn)練數(shù)據(jù)中的寫法為:

("找無線質(zhì)量好的咖啡廳",{

??????? 'heads': [0, 5, 1, 2, 5, 0, 333, 333,333, 333],? # index of token head

??????? 'deps': ['ROOT', 'ATTRIBUTE','ATTRIBUTE', 'QUALITY', '-', 'PLACE', '-', '-', '-', '-']

??? })

heads中前6個為有效序號,而句子的實(shí)際字?jǐn)?shù)是10個,需要有10個數(shù)字,所以后面4個333是隨意填充的。

deps同理,前6個是有效標(biāo)記,后面4個是填充的。

接下來運(yùn)行

python train_intent_parser.py -m zh_model?-o zh_model

test_text = "找無線質(zhì)量好的咖啡廳"

輸出結(jié)果為:

[('找', 'ROOT', '找'), ('無線', 'ATTRIBUTE', '咖啡廳'), ('質(zhì)量', 'ATTRIBUTE', '無線'), ('好', 'QUALITY', '質(zhì)量'), ('咖啡廳', 'PLACE', '找')]

在zh_model目錄中可以看到生成了parser目錄,目錄結(jié)構(gòu)如下:

zh_model

└──parser

??? ├──cfg

??? ├──lower_model

? ? ├──moves

? ? ├──tok2vec_model

??? └──upper_model

打開cfg文件查看,可以看到其中的labels已經(jīng)有了ROOT、ATTRIBUTE、QUALITY、PLACE等等labels。

到此,中文的自定義語義關(guān)系parser模型就訓(xùn)練完成了,對于精度提升,需要準(zhǔn)備至少幾百條標(biāo)注語料才能達(dá)到一定的好結(jié)果,準(zhǔn)備好語料后重新運(yùn)行訓(xùn)練代碼即可。

文中完整代碼可參考 https://github.com/jeusgao/spaCy-new-language-test-Chinese

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容