当前位置: 首页 > 工具软件 > Marko > 使用案例 >

文本数据增强四(马尔可夫marko(HMM))

全兴运
2023-12-01

一.中文文本数据增强

      (中文文本、同义句生成、扩充增加,主干提取,句子改写,enhance、augment、text、nlp、样本不均衡、语料不够、数据不足),相较于图片,中文文本数据强的效果似乎没那么靠谱(效果没那么好),也更加困难,但是捏,很多时候,使用中文文本数据增强还是很有必要的,尤其是项目初期语料不够(估计只能手工构建),或者是样本严重不均衡的情况(比如说分类中一个类有200条数据,另外一个类有100万条数据)。

        这个时候,我们就需要使用中文文本数据增强了,通俗的说,也可理解成同义句生成。一种比较简单的方式便是引入马尔可夫过程(HMM)。引用百度百科的说法:马尔可夫链(Markov Chain, MC)是概率论数理统计中具有马尔可夫性质(Markov property)且存在于离散的指数集(index set)和状态空间(state space)内的随机过程(stochastic process)。

        马尔可夫链,具有的一个灰常重要的性质便是“无记忆”性质,即下一个状态的概率只与当前状态有关,与当前状态之前、之后的状态无关。比如说,"我  喜欢  _",后面接的词"你"只和"喜欢"有关,别管它科学不科学,我们知道这样用就好了。

 

二.马尔可夫链marko(HMM)

       利用HMM的特点,我们可以首先提取出一个关键词,这样就可以进行句子生成了,关键词提取总会吧,不会可以用分词工具,python的jieba分词器里边就有,像什么TF-IDF、TextRank的都可以。有了起始句子,还差个状态转移矩阵,即每种状态转换的概率。举个例子说就是“喜欢”后面接"你"的概率,当然我们就不那么复杂,直接弄个字典,像{"喜欢":["你", "我"]},知道后面"喜欢"可以接"你"和"我"就好了。

 

三.马尔可夫marko(HMM)实现数据增强

        github项目地址在:

               https://github.com/yongzhuo/nlp_xiaojiang/blob/master/AugmentText/augment_marko/enhance_marko.py

        从实验结果看,效果不怎么理想,原因主要有:

               1. 起始关键词提取欠妥,那不一定是label中想要的关键词。这个分类中可以每个类别分别构建一个;

               2. 状态转移矩阵构建太随意,全靠随机。这个缺陷可以增加概率,使其更加真实;

               3. HMM只考虑局部最优,不一定是全局最优;感知上看便是只保证两个状态(词语)通顺,整个状态(整个句子)不一定通 

                   顺。这个可以换CRF,或者是换一种方式了。

 

希望对你有所帮助!

 

 

 

 类似资料: