【数据竞赛】长文本竞赛上分的三种策略。
生活随笔
收集整理的這篇文章主要介紹了
【数据竞赛】长文本竞赛上分的三种策略。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作者:杰少
長文本處理上分策略
簡 介
在諸多文本相關的問題中,我們不可避免的會遇到很多長短不一的文本,有的文本很短就是一句話,但有的文本則很長,有上好幾千的文字甚至上萬多文字,
如果我們設置截取的文本長度較長,會浪費非常多的資源,這些長文本往往是長尾分布,出現的不多;
如果我們不考慮這些長文本,依然默認截取長度300的文本,則這些長文本的預測效果可能會較差一些,
那么怎么辦呢?本文提供三種長文本的上分技巧。
三種長文本截取策略
01
隨機采樣
該策略很簡單,因為長度很長,那么我們可以從較長的文本中隨機采樣一定長度的文本來表示我們的當前文本。但是優點和缺點都比較明顯。
簡單,能近似全局文本的信息,效果有的時候還不錯,但也會有波動。
02
截取heads & tails的文本
該策略基于下面的假設:
文本的開頭和結尾的信息量是非常大的,往往是一些總結性的語句;
所以直接摘取開頭或者末尾的文本效果在諸多類的策略中能帶來很不錯的效果。
03
組合策略
該策略則更為粗暴和高效,既然上面的策略都有一定的缺陷,那么我們干脆直接全部采用,類似于對數據進行擴充,然后預測的時候直接將三者策略的預測結果求均值作為最終的預測結果。
代碼
摘取Heads & Tails
'''摘自:https://www.kaggle.com/c/jigsaw-unintended-bias-in-toxicity-classification/discussion/97443 '''def?convert_lines(example,?max_seq_length,?tokenizer,?heads?=?True):max_seq_length?-=?2all_tokens?=?[]longer?=?0for?text?in?tqdm_notebook(example):tokens_a?=?tokenizer.tokenize(text)if?len(tokens_a)?>?max_seq_length:if?heads:tokens_a?=?tokens_a[:max_seq_length]else:tokens_a?=?tokens_a[-1*max_seq_length:]longer?+=?1one_token?=?tokenizer.convert_tokens_to_ids(["[CLS]"]?+?tokens_a?+?["[SEP]"])?+?[0]?*?\(max_seq_length?-?len(tokens_a))all_tokens.append(one_token)?return?np.array(all_tokens)適用問題
適用于所有長短文本不一的問題中,經常可以帶來較大的提升。
參考文獻
29th LB And LB 0.94376 for single Bert-Base
總結
以上是生活随笔為你收集整理的【数据竞赛】长文本竞赛上分的三种策略。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【深度学习】SETR:基于视觉 Tran
- 下一篇: Win10系统开机任务栏一直转圈怎么解决