CCF BDCI 技术需求与技术成果关联度冠军分享
“技術需求”與“技術成果”關聯度比賽
CCF BDCI?“技術需求”與“技術成果”項目之間關聯度計算比賽由中國計算機學會和八六三軟件發起,賽題目的是發現好的方法、算法或模型,并提供用于驗證的程序源代碼,可應用于平臺模擬人工,實現“需求——成果智能匹配服務”。
文本將介紹冠軍團隊"莽就完事了"的賽題分享,冠軍團隊由馬凱欣一人組成。凱欣來自東北林業大學,本文將包括凱欣的參賽方案分享和代碼分享。
莽就完事了 |?馬凱欣
我叫馬凱欣,來自東北林業大學,目前是計算機技術專業一年級在讀,專業方向是自然語言處理。我之前沒有參加過大數據與人工智能的相關比賽,這次是我的頭一次,CCF BDCI的賽題我也不知道挑哪一個好。
說到參賽經歷我倒是有一些,本科參加過ACM-ICPC競賽,也取得過一些獎項。
by?馬凱欣
賽題介紹&數據
人工判斷技術需求和技術成果關聯度的方法是:從事技術轉移工作的專職工作人員,閱讀技術需求文本和技術成果文本,根據個人經驗予以標注。
“技術需求”與“技術成果”項目之間關聯度計算模型技術需求與技術成果之間的關聯度分為四個層級:強相關、較強相關、弱相關、無相關。
| DataSet.zip | 包含兩個csv文件, 其中Achievements為技術成果表,Requirements為技術需求表。 |
| Train_Label.csv | 為關系表,標注了部分Achievements技術成果表跟Requirements技術需求表的關聯關系。 |
| Test.csv | 為待預測的關系表,需要預測技術成果表跟技術需求表的關聯關系。 |
Achievements為技術成果表,文件中的(.csv)(UTF-8編碼)一行對應于一個技術成果,以“,”分割不同的識別字段,具體描述具體格式如下:
| Guid | string | ID列 |
| Title | string | 技術成果的標題 |
| Content | string | 技術成果的具體內容? |
Requirements為技術需求表,文件中的(.csv)(UTF-8編碼)一行對應于一個技術需求,以“,”分割不同的識別字段,具體描述具體格式如下:
| Guid | string | ID列? |
| Title | string | 技術需求的標題? |
| Content | string | 技術需求的具體內容? |
Train_Label.csv是Achievements技術成果表跟Requirements技術需求表的關聯關系:
| Guid | string | ID列 |
| Aid | string | 技術成果的表的ID |
| Rid | string | 技術需求的表的ID |
| Level | string | 1無相關、2弱相關、3較強相關、4強相關? |
評測方法
本次競賽初賽評價指標使用MAE系數。平均絕對差值是用來衡量模型預測結果對標準結果的接近程度一種衡量方法。計算方法如下:
??其中pred_i為預測樣本,y_iy_i為真實樣本。MAE的值越小,說明預測數據與真實數據越接近。最終結果為:
最終結果越接近1分數越高.
數據清洗&數據增廣
經過對賽題文本的內容進行篩選查看,發現其中存在一定量的空白、"\n"、"未提供"等無效信息。簡單的使用對應標題對無用信息進行替換即可。
對問題進一步化簡,可以簡化成兩個文本之間的關聯度計算。
那么A文本與B文本之間關聯度,同樣也是B文本與A文本之間關聯度。該方法在僅取標題時可以提升成績。當加入內容時會造成過擬合,最終未采用該方法。
那么假設A文本與B文本之間關聯度為4,A文本與C文本之間關聯度為3,那么可以假定B文本與C文本之間關聯度為3,按照這個思路可以假設關聯矩陣
其中A文本與B文本之間關聯度為i,A文本與C文本之間關聯度為j,那么B文本與C文本之間關聯度為R_(i,j)。此方法可增加數據295994條,從中按照原數據集各個關聯度等級的比例從中隨機取出10000條。
該方法我認為具有一定的可能性,但由于訓練時間過長、提交次數有限,嘗試過的參數均會造成過擬合現象。最終模型中未對數據進行數據增廣。
構建模型
經過一定量的實驗對比最終的模型確定為分別進行標題與內容關聯度判別的孿生BERT模型,其中進行技術成果標題和技術需求標題關聯度計算的BERT采用谷歌開源的BERT-base;進行技術成果內容與技術需求內容關聯度計算的BERT采用哈工大提出的BERT-wmm。
最終只采用這個模型,也沒有進行融合。當然可以很簡單的認為它就是分別使用兩個BERT進行相似度判別然后進行拼接。?
其中進行技術成果標題與技術需求標題關聯度計算的BERT采用谷歌開源的BERT-base;進行技術成果內容與技術需求內容關聯度計算的BERT采用哈工大訊飛聯合實驗室發布基于全詞覆蓋的BERT-WWM。該預訓練由于采用了全詞覆蓋,在多數情況下可以取得更好的效果。
在第一個進行技術成果標題與技術需求標題關聯度計算的BERT中輸入最大長度MaxLenT設置為128,兩個標題拼接最大長度也沒有超過128個字,同時這樣可以減少訓練時間和顯存需求;在第二個進行技術成果內容與技術需求內容關聯度計算的BERT-WWM中輸入最大長度MaxLenC設置為512,盡可能多的讀取數據內容。
兩個BERT都采用12layers, 768hidden states, 12heads版本,該模型采用7折交叉驗證,其中batch size取16,epoch取8,并在訓練時保存較好的模型權值,初始學習率設置成5e-5,后續學習率設置成1e-5。
預測后處理
通過觀測評測指標發現,當模型判斷關聯度為1和2的概率非常接近時,輸出為2更加合理。所以當模型無法判別時,通過修正可以將輸出偏向2或3。
模型對比
1.其中BERT-base、RoBERTa-base、BERT+數據增廣-1、BERT+數據增廣-2、BERT+數據增廣-3模型中輸入均只有技術成果標題與技術需求標題,MaxLenT為128,其余超參數與最終模型中基本相同。
2.孿生BERT-1模型為標題與內容拼接的孿生BERT模型,MaxLen為512,其余超參數與最終模型中基本相同。
3.孿生BERT-2模型為分別進行標題與內容關聯度判別的孿生BERT模型,MaxLen為512,其余超參數與最終模型中基本相同。
4.BERT+數據增廣-1模型中,數據增廣采用第一種方式。
5.BERT+數據增廣-2模型中,數據增廣采用第二種方式,且取全部增廣數據。
6.BERT+數據增廣-3模型中,數據增廣采用第二種方式,但按照原數據集各個關聯度等級的比例從中隨機取出。
7.BERT-T128C512模型中BERT均采用谷歌發布的BERT-base,其余超參數與最終模型中相同。
8.BERT-WWM-T128C512模型中BERT均采用采用哈工大訊飛聯合實驗室發布的BERT-WWM,其余超參數與最終模型中相同。
9.最終模型中標題采用谷歌發布的BERT-base,內容采用哈工大訊飛聯合實驗室發布的BERT-WWM。
比賽總結
我個人認為BERT-WWM預訓練相比于BERT預訓練對中文效果應該更好,而得到這樣的結果,可能的原因是兩個預訓練在訓練時使用的語料庫不同,標題部分中專業名詞比重較大且短小,BERT對此比較敏感,而BERT-WWM對常規文本比較敏感。當然這個成績中也有預測偏好處理的功勞。
本次比賽十分感謝華南理工大學Chevalier同學在知乎上分享的BaseLine。本代碼修改于該代碼。由于剛開始接觸深度學習,也是頭一次參加比賽,本人水平有限歡迎批評指正。郵箱:1239977613@qq.com
冠軍代碼分享:
https://github.com/Makaixin/Correlation-between-requirements-and-achievements
備注:公眾號菜單包含了整理了一本AI小抄,非常適合在通勤路上用學習。
往期精彩回顧那些年做的學術公益-你不是一個人在戰斗適合初學者入門人工智能的路線及資料下載機器學習在線手冊深度學習在線手冊AI基礎下載(第一部分)備注:加入本站微信群或者qq群,請回復“加群”加入知識星球(4500+用戶,ID:92416895),請回復“知識星球”喜歡文章,點個在看
總結
以上是生活随笔為你收集整理的CCF BDCI 技术需求与技术成果关联度冠军分享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 震惊了!每30秒学会一个Python小技
- 下一篇: 特征工程与规则模型