「埃尔法哥哥」语义不畅低质文本识别与应用如何撑起58同城海量数据?( 三 )


那么我们能不能通过Masked Language Model来计算句子的困惑度呢?对比于模型v1, Google推出的预训练模型有以下优点:
a) 训练语料规模大 , 语料跨领域、跨行业 , 通用性更强;
b) 更深层的网络 , 可以捕获更深层的语义特征;
c) 没有定长截断带来的误差 , 通过mask可以过滤掉无意义的pad信息 , 解决了短样本的PAD问题 , 也就不需要定长截断的Trick;
d) 基于上下文环境预测单词出现的概率更精准;
如果应用Google的Masked Language Model , 计算困惑度的公式应该修改如(2)所示:
「埃尔法哥哥」语义不畅低质文本识别与应用如何撑起58同城海量数据?
本文插图
对比公式(1) , 由基于上文环境单词出现的概率修改为基于上下文环境单词出现的概率 。
模型结构设计如下图所示:
「埃尔法哥哥」语义不畅低质文本识别与应用如何撑起58同城海量数据?
本文插图
图5:Masked Language Model模型结构
对比于模型v1 , 主要有2个方面的修改:
a) 要计算某单词出现的概率 , 需要对该位置进行MASK ,
b) 通过n层Transformer计算后 , 根据Masked Position获取该位置的表示 , 然后输入到全连接网络中计算单词出现的概率 。
5. 性能优化
对比与模型v1 , 模型v2的计算量有了大幅度的增长 , 主要有两方面原因:
a) 模型更深 , 参数更多
b) 模型v1计算句子中每个单词基于上文环境出现的概率 , 只需要计算一次;模型v2计算句子中每个单词基于上下文环境出现的概率 , 需要计算n次 , n为句子的长度 。
所以 , 我们需要在保证模型准确性的前提下 , 提高服务的QPS , 主要基于以下3个措施:
5.1 MASK位置个数自适应
对于输入样本 , 可以在保证保留足够上下文信息预测该词出现的概率的情况下 , 根据文本的长度调整MASK位置的个数 , 同时预测多个位置 , 减少预测的次数 。
5.2 MASK位置均匀采样
MASK位置的选择 , 不能太集中太稠密 , 否则会丢失该单词的N-Gram环境信息 , 降低预测该单词概率的精度 。 因此 , 要采用合理的间距 , 对MASK的位置进行均匀采样 。
5.3 Redis缓存计算结果
对于已经通过模型计算的文本,利用Redis保存模型的计算结果 , 减少重复计算 。
6. 线上数据评测效果
6.1 调用量、命中量、QPS、准确率
低质文本识别服务上线后 , 平均每日的调用量、命中量、准确率情况如表1所示:
表1:低质文本识别服务性能指标
「埃尔法哥哥」语义不畅低质文本识别与应用如何撑起58同城海量数据?
本文插图
图6为2019年8月23日服务的耗时情况 , 90%的服务调用耗时小于31.1毫秒 , 99%的服务调用耗时 91.4毫秒 。
「埃尔法哥哥」语义不畅低质文本识别与应用如何撑起58同城海量数据?
本文插图
总结、展望与规划
本文利用无监督的预训练语言模型 , 计算文本语句的困惑度 , 通过阈值判定识别出业务场景下的低质文本 , 具有计算速度快、识别准确率高、领域适应性强等优点 , 但仍存在长短文本敏感度设置不一致、缩略语误识、一句话多语义转折误识等问题 , 规划拟通过以下几个方面提高模型识别效果:
1. 更换预训练模型 , 使计算单字在上下文环境下的概率更精准 。
2. 困惑度计算时为长短文本设置不同的窗口宽度 , 或动态自适应的方式调整窗口宽度 。
3. 领域性针对性优化 , 引入业务线数据 , 对预训练模型进行微调 。
4. 结合句法分析 , 识别语句词语之间的结构关系 , 调整困惑度计算方法 。


推荐阅读