Giter VIP home page Giter VIP logo

diac's Introduction

以2019年数据智能创新应用大赛——基于Adversarial Attack的问题等价性判别比赛为背景

基于Adversarial Attack的问题等价性判别比赛][https://www.biendata.com/competition/2019diac/]

首先,对主办方提供的数据集进行增强,增强的途径主要有以下两种:

一. 生成对抗样本,提升模型的鲁棒性

Idea:由于现实情况中包含较多的对抗样本(如错别字等),因此要想提高模型的鲁棒性,最为有效的方法就是在训练集里面添加对抗样本。主要的方法有同音字替换和近义词替换。之所以不先对对抗样本进行纠错,在输入模型进行判断是因为现有的纠错工作的效果不理想。具体步骤如下:

首先,从训练集中随机抽取一定比例的样本进行增强。之后随机选取两种增强办法中的一种对样本进行增强,并且只对样本中的某个问题(q1或者q2)进行同音字或者同义词替换。这两种替换的方法如下:

近义词替换

工具:HanLP,cilin.txt(同义词词林)

(1) 利用HanLP.segment(),对选中的文本进行分词

(2) 根据分词的长度,确定替换的词的数目keynum

(3) 利用 HanLP.extractKeyword()提取keynum个关键词keywordList,并依次对keywordlist中的关键词进行同义词替换

(4) 根据cilin.txt构建同义词表

(5) 对每个关键词执行如下替换规则(规则可更改)

如果该词在同义词表中,则选择同义词表中离该词最近的同义词进行替换

如果该词不在同义词表中,则不进行替换

同音字替换

工具:HanLP,same_pinyin.txt(同音字词典),chinese-words.txt(字频表)

(1) 利用HanLP.segment(),对选中的文本进行分词

(2) 根据分词的长度,确定替换的词的数目keynum

(3) 利用 HanLP.extractKeyword()提取keynum个关键词keywordList,并依次对keywordlist中的关键词中所有字集合进行同音字替换

(4) 根据same_pinyin.txt和chinese-words.txt构建同音字词典和字频表

(5) 替换规则为:将待替换的字替换为该字的同音字,并且该同音字为所有同音字中出现频率最高(根据字频表判断)

二. 第二种对数据进行增强的办法,就是尽可能地提取两个问题的模式串,以辅助模型进行分类

Idea:由于样本中的问题长度都较短,且在现实情况中存在较多对抗样本,进一步增加了等价性判断的难度。因此需要对每个样本中包含的信息进行扩充,以提升模型的训练效果。

提取样本中两个问题的相同词汇和不同词汇

Idea:通过相同词和不同词汇提升模型的预测能力

增强前的样本:[q11,q21,label]

增强后的样本:[q11,q21,q12,q22,q3,label],其中q12为q11与q21中不相同的词汇;q22为q21与q11中不相同的词汇;q3为q11和q21中相同的词汇

使用通配符替换样本中两个问题相同的名词性词汇

增强前的样本:[q11,q21,label]

增强后的样本:[q11,q21,q12,q22,label],其中q12为q11的pattern;q22为q21的pattern

工具:HanLP(同义词词林)

(1) 同样的需要先对样本中的两个问题进行分词,并标注词性,选中的函数为HanLP.segment(),该函数能一个文本进行分词,并进行词性标注

(2) 确定要将替换成通配符(如A,B,C…等)的句子成分,主要包括名词和代词(具体如下),不对动词进行替换,因为对动词进行替换后对句子的结构破坏较大

替换的词性如下:

"n", "nb", "nba", "nbc", "nbp", "nf", "ng", "nh", "nhd", "nhm", "ni", "nic", "nis", "nit", "nl", "nm","nmc", "nnd", "nnt","nr", "nr1", "nr2", "nrf", "nri", "ns", "nsf", "nt", "ntc", "ntcb", "ntcf", "ntch","nth", "nto","nts", "ntu", "nx", "nz", "rr","r","rz"

我们还统计了训练集中出现的一些不影响问题等价性判断的成分,如请问、谢谢了、问一下等,这些词汇存储在otherwords.txt中,使用方法可参考tongji.py中的re_replace()

文件

data_process_2.py 包含生成包含不同数据集的函数,具体函数看代码的相关注释(主要有近义词替换,同音字替换,样本翻转,两个问题相同和不同词汇提取,使用通配符代替相同的名词性词语以获取句式的pattern

data_process_2_1.py包含各种预处理函数

tongji.py:该函数主要想找测试集的leak,通过查找测试集和训练集中的相同样本,以及通过A->C,B->C规则查找,但是最后发现用处不大

stopwords.txt:停用词表

same_pinyin.txt:相同拼音的词,其中第二列表示同音同调,同音异调

otherwords.txt: 人工统计数据集中包含的礼貌用语,这些词语对文本的相似性没用作用,甚至有干扰作用,如:请问,谢谢等词语

cilin.txt:哈工大的同义词林

chinese-words.txt:中文字频表

运行代码:

根据生成数据集的格式不同,调用不同的生成函数

python data_process_2.py
# 获得最终版本的数据,数据格式为[q11,q21,q12,q22,q31,label],并从原始训练集里切5000条数据作为测试集数据增强加到了10000条q12:q1中与q2不同的词汇q22:q2中与q1不同的词汇q31:q1与q2相同的词汇。
# 并且对10%的正样本进行近义词替换/同音字替换

diac's People

Contributors

activemodest avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.