BiLSTM_CNN_CRF分詞程序—運(yùn)行講解

在線演示:http://118.25.42.251:7777/fenci?type=mine&text=南京市長(zhǎng)蒞臨指導(dǎo)捧毛,大家熱烈歡迎观堂。公交車中將禁止吃東西!

一呀忧、源程序下載

bilstm_cnn_crf 分詞

以上文件夾中师痕,我們只需要保留.py文件即可(為防止我的權(quán)重文件和你的語料、模型不匹配而账,只保留py文件即可)胰坟。

二、模塊安裝

python3.5

pip install keras==2.0.6

keras_contrib==2.0.8 【pip install git+https://www.github.com/keras-team/keras-contrib.git】

pip install gensim

如有其它模塊缺失泞辐,可自行百度安裝腕铸。

三、訓(xùn)練語料格式及存儲(chǔ)

py文件的當(dāng)前路徑铛碑,新建corpus文件夾,該文件夾作為語料存儲(chǔ)根路徑虽界。

corpus下汽烦,我們按文件夾存放子語料,比如我的子語料如下:

語料

其中莉御,conll_little是conll2012語料的一個(gè)領(lǐng)域(我后面又上傳了conll2012全部領(lǐng)域撇吞,建議先使用conll_little將模型調(diào)試成功,再使用conll2012_all加入corpus中訓(xùn)練)礁叔,law_100是法律文書語料牍颈;

子語料(例如law_100)下,按文件存放相關(guān)子文件:

其中琅关,每個(gè)文件中內(nèi)容為如下格式(例如 4.txt)煮岁,空格將詞隔開:

語料格式

四、詞向量訓(xùn)練

python embedding_model.py ? // word2vec的相關(guān)參數(shù)可調(diào)控涣易,我設(shè)的100維詞向量画机。

程序運(yùn)行完,將會(huì)得到兩個(gè)詞向量文件(.m和.txt文件)新症,如下:

其中步氏,.m文件是給程序(模型)使用的,.txt是為了可視化徒爹,我們自己看的荚醒。

五芋类、測(cè)試文件



py文件的當(dāng)前路徑下,新建test_documents文件夾界阁,作為測(cè)試文件的根路徑侯繁。

test_documents文件夾下,我放置了一個(gè)test_1的文件夾铺董,test_1文件夾下存放需要分詞的文件(33.txt和88.txt)巫击。

33.txt中文本格式如下,為待分詞文本精续。



以上是測(cè)試文本的介紹坝锰,這部分自由度較高,可以等模型訓(xùn)練好后自行安排重付。

六顷级、模型訓(xùn)練

我們?cè)?bilstm_cnn_crf.py中,將 is_train設(shè)為1(訓(xùn)練)确垫,將 nb_epoch設(shè)為10弓颈。

(網(wǎng)絡(luò)的一些參數(shù)可以自行定位到程序中修改,如batch_size删掀、nb_epoch翔冀、optimizer等)

python bisltm_cnn_crf.py ? // ?如不出錯(cuò),如下圖披泪,則訓(xùn)練初步成功

訓(xùn)練時(shí)間跟語料多少纤子、迭代次數(shù)有關(guān)。

七款票、性能評(píng)測(cè)

按文件分詞為上述函數(shù)控硼,其中第一個(gè)路徑是待分詞文本(test_1)、第二個(gè)路徑是分詞后文本(test_1_mine艾少,該文件夾會(huì)自動(dòng)生成卡乾,保存分詞結(jié)果)

socre.py 程序可以通過輸入兩個(gè)文件名,計(jì)算(P缚够、R幔妨、F和ERR)

如下,比較預(yù)測(cè)的33.txt和標(biāo)準(zhǔn)文件中33.txt潮瓶,得到該文件的一些分詞性能指標(biāo)陶冷。

python score.py

prf

八、使用我的權(quán)值文件

以上執(zhí)行完毯辅,你將會(huì)生成你的權(quán)值文件埂伦,模型性能的好壞取決于訓(xùn)練語料的多少。

在my_weights文件夾下思恐,有我預(yù)訓(xùn)練的權(quán)值文件(conll2012+law_100)沾谜,性能不一定最優(yōu)膊毁,僅供參考。

1. 刪除py文件當(dāng)前位置的其它權(quán)值文件基跑,只保留py文件和文件夾(conll2012_test_gold是conll測(cè)試文件的gold文件)

將my_weights下的3個(gè)文件copy到py文件當(dāng)前位置婚温。

將bilstm_cnn_crf.py中is_train設(shè)為0

修改fenci_by_file函數(shù)的兩個(gè)路徑,對(duì)conll2012_test_raw進(jìn)行分詞

其中媳否,test_documents/conll2012_test_raw/bc_conll_testing.utf8文件部分如下:

python bilstm_cnn_crf.py ?

運(yùn)行結(jié)束后栅螟,test_documents下將出現(xiàn)conll2012_test_mine文件夾,其下6個(gè)文件對(duì)應(yīng)于test_documents/conll2012_test_raw下6個(gè)文件的分詞結(jié)果篱竭。

其中力图,test_documents/conll2012_test_mine/bc_conll_testing.utf8部分如下:

為了驗(yàn)證分詞模型性能,我們比較test_documents/conll2012_test_mine下的6個(gè)測(cè)試結(jié)果文件和conll2012_test_gold下的6個(gè)黃金結(jié)果文件掺逼。

修改score.py中文件的路徑

分別測(cè)試conll2012的6個(gè)領(lǐng)域測(cè)試集的分詞性能吃媒,結(jié)果如下(結(jié)果還將就,說明模型work):

bc領(lǐng)域:

bc

bn領(lǐng)域:

bn

mz領(lǐng)域:

mz

nw領(lǐng)域:

nw

tc領(lǐng)域:

tc

wb領(lǐng)域:

wb

以上6個(gè)領(lǐng)域的測(cè)試性能F值均能達(dá)到0.91以上吕喘,說明模型訓(xùn)練還算成功赘那。

此外,為進(jìn)一步提高性能氯质,需要進(jìn)行一些參數(shù)的調(diào)整(如學(xué)習(xí)率募舟、優(yōu)化器等),或增加訓(xùn)練次數(shù)(本文不做探究闻察,僅提供一個(gè)Demo)胃珍。

此外,以上是將6個(gè)不同領(lǐng)域的訓(xùn)練語料一起訓(xùn)練蜓陌、最后再測(cè)試,可能存在領(lǐng)域適應(yīng)性問題吩蔑,分開訓(xùn)練钮热、分開測(cè)試或許結(jié)果更優(yōu)。

九烛芬、一些問題

1. 本文訓(xùn)練時(shí)將文件按幾個(gè)常見的標(biāo)點(diǎn)隔開(隧期,。赘娄;)仆潮,模型的輸入長(zhǎng)度maxlen以訓(xùn)練集中句子的最大長(zhǎng)度決定。測(cè)試時(shí)句子按標(biāo)點(diǎn)(遣臼,性置。!揍堰;鹏浅?)隔開嗅义,之所以多加了幾個(gè)標(biāo)點(diǎn),是為了盡量將句子切分的較短隐砸,不然測(cè)試時(shí)句子長(zhǎng)度大于maxlen,將會(huì)被截?cái)嘀耄畔G失。這里我感覺處理的不夠好季希,如果遇到奇怪的文本(例如沒有標(biāo)點(diǎn)褪那,句子又很長(zhǎng)),信息將會(huì)只保留maxlen長(zhǎng)度。

2. 測(cè)試時(shí)式塌,讀入一個(gè)測(cè)試文件博敬,本程序?qū)葱羞M(jìn)行分詞,將行l(wèi)ine輸送給word_seg_by_sentences函數(shù)珊搀,該函數(shù)再將line按標(biāo)點(diǎn)切分冶忱,組合成句子集的向量表示,輸送給模型進(jìn)行預(yù)測(cè)(分詞)境析,最后再拼接還原成分詞后的line囚枪。這里運(yùn)行效率較低,可以將一個(gè)文檔的所有文本按標(biāo)點(diǎn)切分劳淆,組合成向量链沼,輸送給模型預(yù)測(cè)。

3. 程序?qū)懙娜哂嗯嫱摇㈦s亂括勺! 講解寫了一晚上,效率太低曲掰,心累疾捍,還望點(diǎn)贊支持~~~。

......

以上問題由于時(shí)間問題栏妖,不做修復(fù)乱豆。如有其它問題,可告知吊趾,共同思考宛裕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市论泛,隨后出現(xiàn)的幾起案子揩尸,更是在濱河造成了極大的恐慌,老刑警劉巖屁奏,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岩榆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)朗恳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門湿颅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人粥诫,你說我怎么就攤上這事油航。” “怎么了怀浆?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵谊囚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我执赡,道長(zhǎng)镰踏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任沙合,我火速辦了婚禮奠伪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘首懈。我一直安慰自己绊率,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布究履。 她就那樣靜靜地躺著滤否,像睡著了一般。 火紅的嫁衣襯著肌膚如雪最仑。 梳的紋絲不亂的頭發(fā)上藐俺,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音泥彤,去河邊找鬼欲芹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吟吝,可吹牛的內(nèi)容都是我干的耀石。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼爸黄,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了揭鳞?” 一聲冷哼從身側(cè)響起炕贵,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎野崇,沒想到半個(gè)月后称开,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年鳖轰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了清酥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蕴侣,死狀恐怖焰轻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情昆雀,我是刑警寧澤辱志,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站狞膘,受9級(jí)特大地震影響揩懒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挽封,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一已球、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辅愿,春花似錦智亮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至亦鳞,卻和暖如春馍忽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背燕差。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工遭笋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人徒探。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓瓦呼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親测暗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子央串,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容