文本分类心得(Bert模型使用)

正式入职了一段时间,接手了NLP相关任务,作为一个初学者,分享一点最近的所学心得和体会。

稍后有时间更新,现在项目催的很紧,能力比较强的可以找我内推阿里秋招。可以私信我联系方法,个人会进行第一遍简历筛选。

 

1.冷启动问题

        当文本数据量很少时(可称为冷启动阶段),一般采用概率统计方法,抽取文本的大体规则,实现需求,因为在少量的样本数据情况下,很难实现算法的较高精度。

        并且,可以在规则方法的前提下,积累数据,为后期算法工程铺路,也可以找外包去标注数据。

2.关于bag-word方法的一些心得

         n-gram算法很好用,通常人们采用的是uni-gram 或者 bi-gram 等等单一的形式。其实不妨可以扩大token的容量,多种n-gram融合在一起,然后利用特征选择的方法,例如TF-IDF,抽取所需要的词典,通常效果会有改善。多n-gram融合的目的是考虑词间的含义,具体的论文参考Facebook AI Research:“Enriching Word Vectors with Subword Information”

        面临的问题:bag-word很好用,但是无法解决句子中多义词的问题,况且中华文化博大精深。。。你懂的。所以,后面更多的是在用ELMO算法,Bert一类的深度学习算法,在解决这类问题。但是对于这些深度学习方法而言,其实也是一种embeding方法,只不过加了诸如双向性、masked方法,更深层次的挖掘了这部分信息,解决了这个问题。

3. 常见的一种解决方案

  设计流程:
           采用jieba分词 -> 停词 -> unigram + bigram 初始词表 -> tf-idf 过滤词表 -> 过滤易错词干扰(如热点、焦点等新闻高频词)-> 模型多分类->参数优化(grid_search等)

上述是一种常见的解决方案,两个细节需要注意:1)过滤易错词,有些易错词对单条句子而言,是noise,所以在停词或者词表中应该删除;2)停词表:某些单词对模型的性能影响很大,这个时候要关注一下停词表,防止被停词,实践Trick,仅供参考;

4.Bert模型使用

             在后续的开发中,随着规则抽取数据和人工标注数据的积累,考虑使用深度学习这块的模型。调研完后发现,Bert真香,通过数据数据增强和强模型的引入,目前的召回/准确/等指标,提升了5个点,下面是个人使用Bert过程中的一些小Trick

  • Bert原始参数非常强大,推荐先阅读源码,搞懂参数之后,再进行参数优化
  • Bert源码中的Shuffle 固定设置的是100,但是对于大数据集来说,作用相对较小,推荐使用最小类的数据数量作为参数,个人经验,引入之后,指标提升了2%
  • epoich和Train_batch_size这两个参数,关系到训练的步数,当Train_batch_size太大了,会导致gloal_step太小,欠拟合,建议看一下源码的步数生成公式
  • Bert模型在训练的时候,可能第一次的Loss并不是非常理想,可以进行二次训练,但会发现输出一直不变,因为第二训练Check_point会引入第一次的参数,所以你在第二次训练的时候,需要 rm -rf /tmp/output。这个路径仅仅是一个例子,具体看你在脚本中设置的output路径
  • 关于环境配置问题可以底下问我,我看到了就会回复,也是一堆坑!
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值