精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

命名實體識別實踐 - CRF

深度學習自然語言處理 ? 來源:ChallengeHub ? 作者:致Great ? 2022-03-24 13:42 ? 次閱讀

1

條件隨機場-CRF

CRF,英文全稱為Conditional Random Field, 中文名為條件隨機場,是給定一組輸入隨機變量條件下另一組輸出隨機變量的條件概率分布模型,其特點是假設輸出隨機變量構成馬爾可夫(Markov)隨機場。

較為簡單的條件隨機場是定義在線性鏈上的條件隨機場,稱為線性鏈條件隨機場(linear chain conditional random field)。

線性鏈條件隨機場可以用于序列標注等問題,需要解決的命名實體識別(NER)任務正好可通過序列標注方法解決。

a98099ce-a359-11ec-952b-dac502259ad0.png

在條件概率模型P(Y|X)中,Y是輸出變量,表示標記序列(或狀態序列),X是輸入變量,表示需要標注的觀測序列。

訓練時,利用訓練數據集通過極大似然估計或正則化的極大似然估計得到條件概率模型p(Y|X);
預測時,對于給定的輸入序列x,求出條件概率p(y|x)最大的輸出序列y

利用線性鏈CRF來做實體識別的時候,需要假設每個標簽 的預測同時依賴于先前預測的標簽 和 的詞語輸入序列,如下圖所示a999a4dc-a359-11ec-952b-dac502259ad0.png每個 NER標簽僅依賴于其直接前前繼和后繼標簽以及 x

CRF是一種選擇因子的特定方式,換句話說,就是特征函數。定義因子的 CRF 方法是采用實值特征函數 與參數 和 的線性組合的指數,下面是特征函數與權重參數在時間步上是對應的:

關于Linear-chain CRF的訓練推導,可以查看文章:條件隨機場CRF(一)從隨機場到線性鏈條件隨機場

2

實踐1:基于CRF++實現NER

CRF++簡介

CRF++是著名的條件隨機場的開源工具,也是目前綜合性能最佳的CRF工具,采用C++語言編寫而成。其最重要的功能我認為是采用了特征模板。這樣就可以自動生成一系列的特征函數,而不用我們自己生成特征函數,我們要做的就是尋找特征,比如詞性等。a9b5538a-a359-11ec-952b-dac502259ad0.png官網地址:http://taku910.github.io/crfpp/

安裝

CRF++的安裝可分為Windows環境和Linux環境下的安裝。關于Linux環境下的安裝,可以參考文章:CRFPP/CRF++編譯安裝與部署 。在Windows中CRF++不需要安裝,下載解壓CRF++0.58文件即可以使用

a9d1495a-a359-11ec-952b-dac502259ad0.png

訓練語料創建

在訓練之前需要將標注數據轉化為CRF++訓練格式文件:

分兩列,第一列是字符,第二例是對應的標簽,中間用 分割。

比如標注方案采用BISO,效果如下:

a9efe72a-a359-11ec-952b-dac502259ad0.png

模板

模板是使用CRF++的關鍵,它能幫助我們自動生成一系列的特征函數,而不用我們自己生成特征函數,而特征函數正是CRF算法的核心概念之一。一個簡單的模板文件如下:aa0ca608-a359-11ec-952b-dac502259ad0.png在這里,我們需要好好理解下模板文件的規則。T**:%x[#,#]中的T表示模板類型,兩個"#"分別表示相對的行偏移與列偏移。一共有兩種模板:aa273c0c-a359-11ec-952b-dac502259ad0.png

訓練

crf_learn-f3-c4.0-m100templatetrain.datacrf_model>train.rst

其中,template為模板文件,train.data為訓練語料,-t表示可以得到一個model文件和一個model.txt文件,其他可選參數說明如下:

-f,–freq=INT使用屬性的出現次數不少于INT(默認為1)

-m,–maxiter=INT設置INT為LBFGS的最大迭代次數(默認10k)

-c,–cost=FLOAT設置FLOAT為代價參數,過大會過度擬合(默認1.0)

-e,–eta=FLOAT設置終止標準FLOAT(默認0.0001)

-C,–convert將文本模式轉為二進制模式

-t,–textmodel為調試建立文本模型文件

-a,–algorithm=(CRF|MIRA)選擇訓練算法,默認為CRF-L2

-p,–thread=INT線程數(默認1),利用多個CPU減少訓練時間

-H,–shrinking-size=INT設置INT為最適宜的跌代變量次數(默認20)

-v,–version顯示版本號并退出

-h,–help顯示幫助并退出

輸出信息

iter:迭代次數。當迭代次數達到maxiter時,迭代終止

terr:標記錯誤率

serr:句子錯誤率

obj:當前對象的值。當這個值收斂到一個確定值的時候,訓練完成

diff:與上一個對象值之間的相對差。當此值低于eta時,訓練完成

預測

在訓練完模型后,我們可以使用訓練好的模型對新數據進行預測,預測命令格式如下:

crf_test-mcrf_modeltest.data>test.rstt

-m model表示使用我們剛剛訓練好的model模型,預測的數據文件為test.data> test.rstt 表示將預測后的數據寫入到test.rstt 中。aa465aa6-a359-11ec-952b-dac502259ad0.png

3

實踐2:基于sklearn_crfsuite實現NER

sklearn_crfsuite簡介

sklearn-crfsuite是基于CRFsuite庫的一款輕量級的CRF庫。該庫兼容sklearn的算法,因此可以結合sklearn庫的算法設計實體識別系統。sklearn-crfsuite不僅提供了條件隨機場的訓練和預測方法還提供了評測方法。

https://sklearn-crfsuite.readthedocs.io/en/latest/#

aa5dd37a-a359-11ec-952b-dac502259ad0.png

安裝:pip install sklearn-crfsuite

特征與模型創建

特征構造:aa777b72-a359-11ec-952b-dac502259ad0.png模型初始化

crf_model=sklearn_crfsuite.CRF(algorithm='lbfgs',c1=0.25,c2=0.018,max_iterations=100,
all_possible_transitions=True,verbose=True)
crf_model.fit(X_train,y_train)

完整代碼如下:

importre
importsklearn_crfsuite
fromsklearn_crfsuiteimportmetrics
importjoblib
importyaml
importwarnings

warnings.filterwarnings('ignore')



defload_data(data_path):
data=list()
data_sent_with_label=list()
withopen(data_path,mode='r',encoding="utf-8")asf:
forlineinf:
ifline.strip()=="":
data.append(data_sent_with_label.copy())
data_sent_with_label.clear()
else:
data_sent_with_label.append(tuple(line.strip().split("")))
returndata

defword2features(sent,i):
word=sent[i][0]

features={
'bias':1.0,
'word':word,
'word.isdigit()':word.isdigit(),
}
ifi>0:
word1=sent[i-1][0]
words=word1+word
features.update({
'-1:word':word1,
'-1:words':words,
'-1:word.isdigit()':word1.isdigit(),
})
else:
features['BOS']=True

ifi>1:
word2=sent[i-2][0]
word1=sent[i-1][0]
words=word1+word2+word
features.update({
'-2:word':word2,
'-2:words':words,
'-3:word.isdigit()':word1.isdigit(),
})

ifi>2:
word3=sent[i-3][0]
word2=sent[i-2][0]
word1=sent[i-1][0]
words=word1+word2+word3+word
features.update({
'-3:word':word3,
'-3:words':words,
'-3:word.isdigit()':word1.isdigit(),
})

ifi

訓練效果如下:

labels=list(crf_model.classes_)
labels.remove("O")
y_pred=crf_model.predict(X_dev)
metrics.flat_f1_score(y_dev,y_pred,
average='weighted',labels=labels)
sorted_labels=sorted(labels,key=lambdaname:(name[1:],name[0]))
print(metrics.flat_classification_report(
y_dev,y_pred,labels=sorted_labels,digits=3
))
aa8c45de-a359-11ec-952b-dac502259ad0.png

完整代碼 https://www.heywhale.com/home/competition/6216f74572960d0017d5e691/content/

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模型
    +關注

    關注

    1

    文章

    3178

    瀏覽量

    48731
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28334

原文標題:命名實體識別實踐 - CRF

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    自然語言基礎技術之命名實體識別相對全面的介紹

    早期的命名實體識別方法基本都是基于規則的。之后由于基于大規模的語料庫的統計方法在自然語言處理各個方面取得不錯的效果之后,一大批機器學習的方法也出現在命名實體識別任務。
    的頭像 發表于 04-17 10:12 ?4917次閱讀
    自然語言基礎技術之<b class='flag-5'>命名實體</b><b class='flag-5'>識別</b>相對全面的介紹

    HanLP分詞命名實體提取詳解

    可能詞) 5.極速詞典分詞(速度快,精度一般) 6.用戶自定義詞典 7.標準分詞(HMM-Viterbi) 命名實體識別 1.實體機構名識別(層疊HMM-Viterbi) 2.中國人名
    發表于 01-11 14:32

    Hanlp分詞之CRF中文詞法分析詳解

    ;);System.out.println(wordList);不傳入模型路徑時將默認加載配置文件指定的模型。詞性標注CRF詞性標注器的訓練與加載與中文分詞類似,對應CRFPOSTagger。命名實體識別
    發表于 02-18 15:28

    基于結構化感知機的詞性標注與命名實體識別框架

    `上周就關于《結構化感知機標注框架的內容》已經分享了一篇《分詞工具Hanlp基于感知機的中文分詞框架》,本篇接上一篇內容,繼續分享詞性標注與命名實體識別框架的內容。詞性標注訓練詞性標注是分詞后緊接著
    發表于 04-08 14:57

    HanLP-命名實體識別總結

    的中國人名自動識別研究》,大家可以百度一下看看 地名識別 理論指導文章為:《基于層疊隱馬爾可夫模型的中文命名實體識別》 機構名識別 機構名的
    發表于 07-31 13:11

    基于神經網絡結構在命名實體識別中應用的分析與總結

    近年來,基于神經網絡的深度學習方法在自然語言處理領域已經取得了不少進展。作為NLP領域的基礎任務—命名實體識別(Named Entity Recognition,NER)也不例外,神經網絡結構在
    的頭像 發表于 01-18 09:24 ?4627次閱讀
    基于神經網絡結構在<b class='flag-5'>命名實體</b><b class='flag-5'>識別</b>中應用的分析與總結

    思必馳中文命名實體識別任務助力AI落地應用

    隨著人工智能從感知智能向認知智能發展,語言理解和知識挖掘研究不斷深入,事實和常識知識愈發重要。智能問答、對話、推理、推薦等應用均需要豐富的知識作為基礎支撐,而命名實體識別作為文本中重要的知識獲取手段
    的頭像 發表于 02-22 18:27 ?1862次閱讀

    新型中文旅游文本命名實體識別設計方案

    傳統基于詞向量表示的命名實體識別方法通常忽略了字符語義信息、字符間的位置信息,以及字符和單詞的關聯關系。提出一種基于單詞字符引導注意力網絡( WCGAN)的中文旅游命名實體識別方法,利
    發表于 03-11 11:26 ?24次下載
    新型中文旅游文本<b class='flag-5'>命名實體</b><b class='flag-5'>識別</b>設計方案

    命名實體識別的遷移學習相關研究分析

    命名實體識別(NER)是自然語言處理的核心應用任務之一。傳統和深度命名實體識別方法嚴重依賴于大量具有相同分布的標注訓練數據,模型可移植性差。然而在實際應用中數據往往都是小數據、個性化數
    發表于 04-02 15:15 ?8次下載
    <b class='flag-5'>命名實體</b><b class='flag-5'>識別</b>的遷移學習相關研究分析

    基于字語言模型的中文命名實體識別系統

    命名實體識別(NER)旨在識別出文本中的專有名詞,并對其進行分類。由于用于監督學習的訓練數據通常由人工標主,耗時耗力,因此很難得到大規模的標注數據。為解決中文命名實體
    發表于 04-08 14:36 ?14次下載
    基于字語言模型的中文<b class='flag-5'>命名實體</b><b class='flag-5'>識別</b>系統

    基于神經網絡的中文命名實體識別方法

    在基于神經網絡的中文命名實體識別過程中,字的向量化表示是重要步驟,而傳統的詞向量表示方法只是將字映射為單一向量,無法表征字的多義性。針對該問題,通過嵌入BERT預訓練語言模型,構建BERT-
    發表于 06-03 11:30 ?3次下載

    關于邊界檢測增強的中文命名實體識別

    引言 命名實體識別(Named Entity Recognition,NER)是自然語言處理領域的一個基礎任務,是信息抽取等許多任務的子任務,旨在識別非結構化文本中屬于預先定義的類別的命名實體
    的頭像 發表于 09-22 16:05 ?3069次閱讀

    命名實體識別實踐 - CRF

    CRF,英文全稱為Conditional Random Field, 中文名為條件隨機場,是給定一組輸入隨機變量條件下另一組輸出隨機變量的條件概率分布模型,其特點是假設輸出隨機變量構成馬爾可夫(Markov)隨機場。
    的頭像 發表于 03-24 13:42 ?1460次閱讀

    基于序列標注的實體識別所存在的問題

    實體識別通常被當作序列標注任務來做,序列標注模型需要對實體邊界和實體類別進行預測,從而識別和提取出相應的
    的頭像 發表于 07-28 11:08 ?1758次閱讀

    什么是嵌套實體識別

    嵌套命名實體識別命名實體識別中的一個頗具挑戰的子問題。我們在《實體識別LEAR論文閱讀筆記》與
    的頭像 發表于 09-30 15:19 ?1776次閱讀