?
目前在做日语纠错任务,主要是为了解决公司query召回率低的问题,目前可行的方案有下面几个:
一个是科大讯飞的那个gector模型 ,他主要是利用了bert或者Robert来做特征提取,然后会在最后接上两个全链接网络,分别用来输出每个日语单词纠正的对象可他们本身错误的概率值信息,通过对他们的结果分别求得一个loss值来进行反向梯度传递,不断进行训练以此达到最优值,其中错误数据的是我通过罗马音和编辑距离为一的一些词进行随机的替换构成的,以此来模仿真实地错误数据。未完待续。。
另外一个就是根据Bert 的fill_mask任务进行,通过对每一个单词进行MASK 然后让他进行预测,如果候选词中存在被MASK的词则直接忽略掉,认为当前词没有问题是一个正确的词,如果被MASK掉的词不在候选词中,则考虑对当前词进行替换,我们首先会对MASK掉的词进行生成候选词,分别通过同音混淆字和编辑距离唯一的字进行生成,然后我们会根据生成的候选词分别和之前的词进行组合,并且在ngram数组中进行查找,如果查找到就进行纠正,否则就认为该词没有(这个其实也是无奈之举,因为没有合适的词进行纠错,所以只能放着,其实也间接证明了原词出错的概率很小没有达到纠错的要求,此时放过去不影响整体)
另一个是自己设计的一个模型(是用于拼写纠错,也就是用于字母类型的),首先我会构建一个整词字典用来存放所有纠正的Word单词,然后我构建一个CNN卷积网络用来对每个单词进行特征提取,然后让他们过一遍LSTM,为了是它能够记住时序上的信息,此时的模型已经有了字符级别和时序级别的特征,然后我会把整个query整个的放入到bert当中,由于self-attention的加持,它能拥有更强特征提取能力,之后会输出一个(batchsize,seq_len,dim)维度向量,但是此时他是个一个一个的词频并不是一个单词,所以这个时候在于刚刚CNN_LSTM提取特征进行concate的时候就会出现问题,此时中间会有一个词片合并的操作在里面,我使用的是avg ,通过这一步上面的几个特征就可以进行融合,最后我会把得到的特征移接到一个全连接网络中,他会映射到我刚刚一开始创建的那个字典中,接下来我就会当前模型进行训练。未完待续。。。。
写了这么多 还没写完 之后会继续更新,大家有什么想法或者间接,麻烦再评论区说一下
熬夜码字,转载请告知!!!!!!!
|