小規模數據量下的關係抽取和實體抽取

寫在前面

  • 最近老師派給了我一個任務,讓我在短時間內迅速建立起一個電力領域知識圖譜,結點與結點之間的關係只有“包含”。
  • 我例行使用平臺的一系列算法,即使我把詞庫換成了我們自己手工標的詞庫,但是抽到的結果仍然是真的不好~ 不好 ~不好(算法流程因爲有一定的隱私性不能透露,大概來講就是抽取只專注詞義而不看語義)。且抽完之後用模板抽關係真的是…………原因其實是平臺算法不太適合電力領域,而更適合於人力資源領域。所以我就自己搞了一套流程,效果可以說還不錯。

原因分析

  • 先分析領域詞抽取不好的原因:相對於人力資源領域,電力領域的領域詞更加多種多樣,且情況也多種多樣(比如有些句子裏甚至“榔頭”都算是一個領域詞,比如有句子……由榔頭、電磁板、電機組成),但是有的句子裏“榔頭”就不是一個領域詞了人力資源領域的詞大多都偏向概念,形式較爲固定,而電力領域詞有好一部分都偏向於現實裏的物體。這就決定光憑詞義是沒辦法很好的領域詞抽取的。
  • 關係抽取不好的原因:像電力領域,比如有句子:“擺脫電流值與人體生理特徵、與帶電體接觸方式以及電極形狀等有關。”,現在領域詞庫裏有“電流”、“電流值”、“擺脫電流值”,用模板匹配的時候就會把這些都給算成實體,抽關係的時候就會出來三個元組。可能有人會說用最長匹配不就行了?但實際上沒那麼簡單,比如:“擺脫電流值……電流包含物理電流、化學電流……”正常抽出來的是(電流,包含,物理電流)(電流,包含,化學電流),模板抽出來卻變成了(擺脫電流值,包含,物理電流)和(擺脫電流值,包含,化學電流)了。

自己設計方案中遇到的問題

基於這些原因,我思考認爲還是要用crf來從句子裏抽領域詞,可是我們沒有現成的標註數據,所以我想的是先標一小部分句子,去預測另一些句子,然後再人工簡單對這些句子抽出來的領域詞做修正。
但是這就會有兩個問題:
數據量太小:時間緊張,當時還有兩科考試,我不可能手動標特別多實體。但是隻簡單的標一點實體去預測,得到的效果一定是稀爛的。
②關係抽取的問題:用平臺的算法就會出現上面說的那個問題。
例如“定磁轉子是發電機的磁場部分,由勵磁線圈、磁極和集電環組成。”,領域詞庫裏有轉子和定磁轉子,那麼就會同時抽出來(轉子,包含……)和(定磁轉子,包含,……)。

解決這兩個問題,就需要:
想一個能在小數據量下獲得很好ner效果的方法
要對每一個句子進行針對性的關係抽取(即關係抽取要針對到每一個句子),而不能僅僅停留在用領域詞庫中的所有詞對句子進行“大鍋燉”式的匹配,比如“定磁轉子是發電機的磁場部分,由勵磁線圈、磁極和集電環組成。”,匹配主要實體的時候不能用“轉子”和“定磁轉子”同時來匹配,而應只用“定磁轉子”來匹配

我的解決辦法:
引入位置信息(後來打比賽也懂了,這個可以稱作模式匹配):我把所有帶有 “A由……組成” “A由……構成”的句子都拿出來了。例如“最簡單的電壓型變頻器由可控整流器和電壓型逆變器組成,用不可控整流器調壓,逆變器調頻,如圖3-3所示。,”我標註的時候只標
“最簡單的電壓型變頻器由可控整流器和電壓型逆變器組成“這句話裏的“最簡單的電壓型變頻器由可控整流器和電壓型逆變器組成”中的“電壓型變頻器”、‘可控整流器’、‘電壓型逆變器’,而像‘不可控整流器’和‘逆變器’我都不標註出來。即只標 由……組成 中間的領域詞以及 它所對應的主語。這樣無形之中就引入了位置信息。
並且對測試集進行預測
由①就可以得到 由……組成之間的實體(假設有a、b、c、d),以及它所對應的主語(A)
那麼就可以直接組成三元組(A,包含,a),(A,包含,b)……

引入位置信息之後,我僅僅花了十幾分鐘的時間標註了100條句子,然後用5分鐘的時間訓練bert(10輪),對4000多條句子做預測,得到的結果竟然70%都是正確的。然後我又從預測結果裏挑出來了幾條模型預測不好的句子,重新人工標註,最終使訓練集達到了200條,去預測4000多條句子,正確率竟然能達到90%。

總結:

  • 在沒有標註數據的情況下,多找找實體詞的分佈規律(比如 由……組成之間的詞大都是實體詞),把這些標註之後,模型能在利用這些詞的“詞義”的同時,也能利用這些詞位置分佈的信息。這樣即使只有小的標註數據量,模型依然能出色完成任務。
  • 使用詞義而不使用句子的語義(即做詞分類(判斷詞是不是是領域詞)而不做ner),在大多數情況下是行不通的。最好還是用crf來結合句子信息做ner。
  • “又從預測結果裏挑出來了幾條模型預測不好的句子”:這個是很重要的一個點,數據沒有加密,所以我們很容易知道預測結果哪裏好哪裏不好。尤其是我這種預測方法,很容易就能觀察到預測結果哪裏出現了問題,這時候把這些出現的問題改正,放回到原數據集裏,給予模型正確的導向就可以了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章