基于CRF序列標(biāo)注的中文依存句法分析器的Java實(shí)現(xiàn)是怎么樣的-創(chuàng)新互聯(lián)

這篇文章給大家介紹基于CRF序列標(biāo)注的中文依存句法分析器的Java實(shí)現(xiàn)是怎么樣的,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

營口網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)于2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

這是一個基于CRF的中文依存句法分析器,內(nèi)部CRF模型的特征函數(shù)采用 雙數(shù)組Trie樹(DoubleArrayTrie)儲存,解碼采用特化的維特比后向算法。相較于大熵依存句法分析器的實(shí)現(xiàn),分析速度翻了一倍,達(dá)到了1262.8655 sent/s

開源項(xiàng)目

本文代碼已集成到HanLP中開源項(xiàng)目中,最新hanlp1.7版本已經(jīng)發(fā)布

CRF簡介

CRF是序列標(biāo)注場景中常用的模型,比HMM能利用更多的特征,比MEMM更能抵抗標(biāo)記偏置的問題。在生產(chǎn)中經(jīng)常使用的訓(xùn)練工具是CRF++,關(guān)于CRF++的使用以及模型格式請參閱《CRF++模型格式說明》。

CRF訓(xùn)練

語料庫

與《大熵依存句法分析器的實(shí)現(xiàn)》相同,采用清華大學(xué)語義依存網(wǎng)絡(luò)語料的20000句作為訓(xùn)練集。

預(yù)處理

依存關(guān)系事實(shí)上由三個特征構(gòu)成——起點(diǎn)、終點(diǎn)、關(guān)系名稱。在本CRF模型中暫時忽略掉關(guān)系名稱(在下文可以利用其它模型補(bǔ)全)。

根據(jù)依存文法理論, 我們可以知道決定兩個詞之間的依存關(guān)系主要有二個因素: 方向和距離。因此我們將類別標(biāo)簽定義為具有如下的形式:

[ + |- ] dPOS

其中, [ + | – ]表示方向, + 表示支配詞在句中的位置出現(xiàn)在從屬詞的后面, – 表示支配詞出現(xiàn)在從屬詞的前面; POS表示支配詞具有的詞性類別; d表示距離。

比如原樹庫:

 基于CRF序列標(biāo)注的中文依存句法分析器的Java實(shí)現(xiàn)是怎么樣的

轉(zhuǎn)換后:

 基于CRF序列標(biāo)注的中文依存句法分析器的Java實(shí)現(xiàn)是怎么樣的

特征模板

 基于CRF序列標(biāo)注的中文依存句法分析器的Java實(shí)現(xiàn)是怎么樣的

訓(xùn)練參數(shù)

1.crf_learn -f 3 -c 4.0 -p 3 template.txt train.txt model -t

我的試驗(yàn)條件(機(jī)器性能)有限,每迭代一次要花5分鐘,最后只能設(shè)定大迭代次數(shù)為100。經(jīng)過痛苦的迭代,得到了一個效果非常有限的模型,其serr高達(dá)50%,暫時只做算法測試用。

解碼

標(biāo)準(zhǔn)的維特比算法假定所有標(biāo)簽都是合法的,但是在本CRF模型中,標(biāo)簽還受到句子的約束。比如最后一個詞的標(biāo)簽不可能是+nPos,必須是負(fù)數(shù),而且任何詞的[+/-]nPos都得保證后面(或前面,當(dāng)符號為負(fù)的時候)有n個詞語的標(biāo)簽是Pos。所以我覆寫了CRF的維特比tag算法,代碼如下:

 基于CRF序列標(biāo)注的中文依存句法分析器的Java實(shí)現(xiàn)是怎么樣的

注意上面的

 1.if (!isLegal(j, i, table)) continue;

保證了標(biāo)簽的合法性。

這一步的結(jié)果:

 基于CRF序列標(biāo)注的中文依存句法分析器的Java實(shí)現(xiàn)是怎么樣的

后續(xù)處理

有了依存的對象,還需要知道這條依存關(guān)系到底是哪種具體的名稱。我從樹庫中統(tǒng)計了兩個詞的詞與詞性兩兩組合出現(xiàn)概率,姑且稱其為2gram模型,用此模型接受依存邊兩端的詞語,輸出其最可能的關(guān)系名稱。

最終結(jié)果

轉(zhuǎn)換為CoNLL格式輸出:

 基于CRF序列標(biāo)注的中文依存句法分析器的Java實(shí)現(xiàn)是怎么樣的

關(guān)于基于CRF序列標(biāo)注的中文依存句法分析器的Java實(shí)現(xiàn)是怎么樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

當(dāng)前標(biāo)題:基于CRF序列標(biāo)注的中文依存句法分析器的Java實(shí)現(xiàn)是怎么樣的-創(chuàng)新互聯(lián)
瀏覽地址:http://muchs.cn/article40/deepho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計小程序開發(fā)、手機(jī)網(wǎng)站建設(shè)、App開發(fā)、面包屑導(dǎo)航、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)