├── new_cilin.txt ├── test_input.csv ├── README.md ├── transform.py ├── test_output.csv ├── augment.py ├── ciLin.py ├── translate.py ├── 哈工大停用词表.txt ├── eda.py └── 百度停用词表.txt /new_cilin.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tedljw/data_augment/HEAD/new_cilin.txt -------------------------------------------------------------------------------- /test_input.csv: -------------------------------------------------------------------------------- 1 | q1,我的手柄是否支持蓝牙连接 2 | q1,我的手柄支不支持蓝牙连接 3 | q2,我的手柄能否直接匹配手机玩家 4 | q2,我的手柄能不能直接匹配手机玩家? 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # data_augment 2 | NLP的数据增强Demo 3 | 4 | 这是一个数据增强的代码,思路来源于[Easy Data Augmentation Techniques](https://github.com/jasonwei20/eda_nlp),然后对这个代码转了中文支持。具体原理可查看[NLP中一些简单的数据增强技术](https://blog.csdn.net/hero00e/article/details/89523970)。 5 | 6 | ## 需要安装的库 7 | 8 | 这里使用的是hanlp分词,所以你需要安装hanlp。 9 | 本代码使用[同义词词林](https://github.com/yaleimeng/Final_word_Similarity)做同义词查询,原版是使用nltk做英文的同义词查询,我尝试使用过python的同义词包synonyms,但是效果不是很好,其他同学可以尝试一下,或者推荐更好的同义词库给我,谢谢。 10 | 停用词使用的百度和哈工大的停用词表。 11 | 12 | ## 使用方法 13 | 14 | ```bash 15 | python augment.py --input=test_input.csv --output=test_output.csv --num_aug=20 --alpha=0.05 16 | ``` 17 | 18 | ## 添加一个翻译的方法 19 | 20 | ```bash 21 | python translate.py 22 | 23 | 中文转英文: Hello 24 | 英文转中文: 你好 25 | ``` 26 | -------------------------------------------------------------------------------- /transform.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import sys 3 | 4 | #import xlrd 5 | #import xlwt 6 | #import sys 7 | #from datetime import date,datetime 8 | 9 | def xlsx_to_csv_pd(file_src, file_dest): 10 | data_xls = pd.read_excel(file_src, index_col=0) 11 | data_xls.to_csv(file_dest, encoding='utf-8') 12 | 13 | ''' 14 | def csv_to_xlsx_pd(): 15 | csv = pd.read_csv('1.csv', encoding='utf-8') 16 | csv.to_excel('1.xlsx', sheet_name='data') 17 | 18 | def read_excel(filename): 19 | 20 | workbook = xlrd.open_workbook(filename) 21 | sheet2 = workbook.sheet_by_index(0) 22 | 23 | for row in xrange(0, sheet2.nrows): 24 | rows = sheet2.row_values(row) 25 | def _tostr(cell): 26 | if type(u'') == type(cell): 27 | return "\"%s\"" % cell.encode('utf8') 28 | else: 29 | return "\"%s\"" % str(cell) 30 | 31 | print (','.join([_tostr(cell) for cell in rows ])) 32 | ''' 33 | 34 | if len(sys.argv) != 2: 35 | print("只能输入1个参数\n请输入需要转换的文件名,如python transform.py a.xlsx") 36 | else : 37 | strtmp = sys.argv[1] 38 | outfile = strtmp[:strtmp.find('.')] 39 | outfile = outfile + '.csv' 40 | xlsx_to_csv_pd(strtmp, outfile) 41 | 42 | 43 | -------------------------------------------------------------------------------- /test_output.csv: -------------------------------------------------------------------------------- 1 | q1,援我的手柄是否支持蓝牙连接 2 | q1,我的手柄是否支持是不是蓝牙连接 3 | q1,我的手柄是否支持个人蓝牙连接 4 | q1,个人我的手柄是否支持蓝牙连接 5 | q1,我的手柄是否赈济蓝牙连接 6 | q1,我的手柄是否待援蓝牙连接 7 | q1,我的手柄是否襄蓝牙连接 8 | q1,我的手柄是否个人支持蓝牙连接 9 | q1,我手柄的是否支持蓝牙连接 10 | q1,我的手柄是否相助蓝牙连接 11 | q1,我的手柄毋庸置言是否支持蓝牙连接 12 | q1,我的手柄支持是否蓝牙连接 13 | q1,我的手柄是否支持蓝牙通航 14 | q1,我蓝牙手柄是否支持的连接 15 | q1,我的是否手柄支持蓝牙连接 16 | q1,我的手柄是否支持蓝牙连接 17 | q1,我连接手柄是否支持蓝牙的 18 | q1,的手柄支不支持蓝牙连接 19 | q1,我的手柄支不支持蓝牙接连 20 | q1,我的切莫手柄支不支持蓝牙连接 21 | q1,我的手柄支弗支持蓝牙连接 22 | q1,我切莫的手柄支不支持蓝牙连接 23 | q1,我的手柄支匪支持蓝牙连接 24 | q1,我支不支持蓝牙连接 25 | q1,我的手柄支不接连支持蓝牙连接 26 | q1,我的手柄支不蓝牙支持连接 27 | q1,我的刀柄手柄支不支持蓝牙连接 28 | q1,我的刀柄支不支持蓝牙连接 29 | q1,我的手柄支不支持蓝牙连接 30 | q1,我的耒支不支持蓝牙连接 31 | q1,我的手柄蓝牙不支持支连接 32 | q1,我的手柄不支支持蓝牙连接 33 | q1,我的手柄支不支持蓝牙接连连接 34 | q1,我的手柄支蓝牙支持不连接 35 | q2,我的刀柄能否直接匹配手机玩家 36 | q2,我的手柄能否手机玩家匹配直接 37 | q2,我的手柄能否直接匹手机玩家 38 | q2,我刀柄的手柄能否直接匹配手机玩家 39 | q2,我的手柄能否匹配手机玩家 40 | q2,能否的手柄我直接匹配手机玩家 41 | q2,我的曲柄能否直接匹配手机玩家 42 | q2,我的手柄能否直接匹配一直手机玩家 43 | q2,手柄的我能否直接匹配手机玩家 44 | q2,我的耒能否直接匹配手机玩家 45 | q2,我的手柄能否直接匹配手机玩家 46 | q2,我手机玩家手柄能否直接匹配的 47 | q2,我手柄能否直接匹配手机玩家 48 | q2,我的手柄能否直接门当户对手机玩家 49 | q2,的手柄能否直接匹配手机玩家 50 | q2,我的个人手柄能否直接匹配手机玩家 51 | q2,我的手柄相配能否直接匹配手机玩家 52 | q2,我的手柄能否毋庸置言直接匹配手机玩家 53 | q2,我的手柄能毋庸置言不能直接匹配手机玩家? 54 | q2,我毋庸置言的手柄能不能直接匹配手机玩家? 55 | q2,我的手机玩家能不能直接匹配手柄? 56 | q2,我的手柄能不能直接堪称手机玩家? 57 | q2,我的手柄能不能直接换亲手机玩家? 58 | q2,我的手柄能不能直接不配手机玩家? 59 | q2,不能的手柄能我直接匹配手机玩家? 60 | q2,我的刀柄能不能直接匹配手机玩家? 61 | q2,我的手柄能不能直接匹配手机玩家? 62 | q2,我的手柄能不能手机玩家匹配直接? 63 | q2,我的手柄不能直接匹配手机玩家? 64 | q2,我?手柄能不能直接匹配手机玩家的 65 | q2,我一直的手柄能不能直接匹配手机玩家? 66 | q2,我的?能不能直接匹配手机玩家手柄 67 | q2,我的手柄能不能直接能干匹配手机玩家? 68 | q2,我直接手柄能不能的匹配手机玩家? 69 | q2,能干我的手柄能不能直接匹配手机玩家? 70 | -------------------------------------------------------------------------------- /augment.py: -------------------------------------------------------------------------------- 1 | # Easy data augmentation techniques for text classification 2 | # Jason Wei and Kai Zou 3 | 4 | from eda import * 5 | 6 | #arguments to be parsed from command line 7 | import argparse 8 | ap = argparse.ArgumentParser() 9 | ap.add_argument("--input", required=True, type=str, help="input file of unaugmented data") 10 | ap.add_argument("--output", required=False, type=str, help="output file of unaugmented data") 11 | ap.add_argument("--num_aug", required=False, type=int, help="number of augmented sentences per original sentence") 12 | ap.add_argument("--alpha", required=False, type=float, help="percent of words in each sentence to be changed") 13 | args = ap.parse_args() 14 | 15 | #the output file 16 | output = None 17 | if args.output: 18 | output = args.output 19 | else: 20 | from os.path import dirname, basename, join 21 | output = join(dirname(args.input), 'eda_' + basename(args.input)) 22 | 23 | #number of augmented sentences to generate per original sentence 24 | num_aug = 9 #default 25 | if args.num_aug: 26 | num_aug = args.num_aug 27 | 28 | #how much to change each sentence 29 | alpha = 0.1#default 30 | if args.alpha: 31 | alpha = args.alpha 32 | 33 | #generate more data with standard augmentation 34 | def gen_eda(train_orig, output_file, alpha, num_aug=9): 35 | 36 | writer = open(output_file, 'w') 37 | lines = open(train_orig, 'r').readlines() 38 | 39 | for i, line in enumerate(lines): 40 | parts = line[:-1].split(',') 41 | label = parts[0] 42 | sentence = parts[1] 43 | aug_sentences = eda(sentence, alpha_sr=alpha, alpha_ri=alpha, alpha_rs=alpha, p_rd=alpha, num_aug=num_aug) 44 | for aug_sentence in aug_sentences: 45 | writer.write(label + "," + aug_sentence + '\n') 46 | 47 | writer.close() 48 | print("generated augmented sentences with eda for " + train_orig + " to " + output_file + " with num_aug=" + str(num_aug)) 49 | 50 | #main function 51 | if __name__ == "__main__": 52 | 53 | #generate augmented sentences and output into a new file 54 | gen_eda(args.input, output, alpha=alpha, num_aug=num_aug) 55 | -------------------------------------------------------------------------------- /ciLin.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | ''' 3 | @author: Yalei Meng 4 | @contact: yaleimeng@sina.com 5 | @license: (C) Copyright 2017, HUST Corporation Limited. 6 | @DateTime: Created on 2018/5/3,at 19:13 7 | @desc:使用基于信息内容的算法来计算词语相似度。参考文献: 8 | 【1】彭琦, 朱新华, 陈意山,等. 基于信息内容的词林词语相似度计算[J]. 计算机应用研究, 2018(2):400-404. 9 | ''' 10 | #import math 11 | 12 | 13 | class CilinSimilarity(object): 14 | """ 基于哈工大同义词词林扩展版计算语义相似度 """ 15 | 16 | def __init__(self): 17 | """ 18 | 'code_word' 以编码为key,单词list为value的dict,一个编码有多个单词 19 | 'word_code' 以单词为key,编码为value的dict,一个单词可能有多个编码 20 | 'vocab' 所有不重复的单词,便于统计词汇总数。 21 | 'mydict' 每个大中小类编码对应的下位节点数量。 22 | """ 23 | self.code_word = {} 24 | self.word_code = {} 25 | self.vocab = set() 26 | self.file = './new_cilin.txt' 27 | # self.mydict = {} 28 | self.read_cilin() 29 | 30 | def read_cilin(self): 31 | """ 32 | 读入同义词词林,编码为key,词群为value,保存在self.code_word 33 | 单词为key,编码群为value,保存在self.word_code 34 | 所有单词保存在self.vocab 35 | """ 36 | head = set() 37 | with open(self.file, 'r', encoding='gbk') as f: 38 | for line in f.readlines(): 39 | res = line.split() 40 | code = res[0] # 词义编码 41 | words = res[1:] # 同组的多个词 42 | self.vocab.update(words) # 一组词更新到词汇表中 43 | self.code_word[code] = words # 字典,目前键是词义编码,值是一组单词。 44 | 45 | for w in words: 46 | if w in self.word_code.keys(): # 最终目的:键是单词本身,值是词义编码。 47 | self.word_code[w].append(code) # 如果单词已经在,就把当前编码增加到字典中 48 | else: 49 | self.word_code[w] = [code] # 反之,则在字典中添加该项。 50 | # 第一次遍历,得到大中小类的代码。 51 | if len(code) < 6: 52 | continue 53 | fathers = [code[:1], code[:2], code[:4], code[:5], code[:7]] 54 | head.update(fathers) 55 | fatherlist = sorted(list(head)) 56 | 57 | ''' 58 | with open(self.file, 'r', encoding='gbk') as f: 59 | # 第二次遍历:得到大中小类的数量。更新到字典mydict里面。 60 | for ele in fatherlist: 61 | self.mydict[ele] = 0 62 | for line in f.readlines(): 63 | res = line.split() 64 | code = res[0] # 词义编码 65 | words = res[1:] # 同组的多个词 66 | if len(code) > 5 and code[:5] in self.mydict.keys(): 67 | self.mydict[code[:7]] += len(words) 68 | self.mydict[code[:5]] += len(words) 69 | if len(code) > 4 and code[:4] in self.mydict.keys(): 70 | self.mydict[code[:4]] += len(words) 71 | if len(code) > 2 and code[:2] in self.mydict.keys(): 72 | self.mydict[code[:2]] += len(words) 73 | if len(code) > 1 and code[:1] in self.mydict.keys(): 74 | self.mydict[code[:1]] += len(words) 75 | 76 | def get_common_str(self, c1, c2): 77 | """ 获取两个字符的公共部分,注意有些层是2位数字 """ 78 | res = '' 79 | for i, j in zip(c1, c2): 80 | if i == j: 81 | res += i 82 | else: 83 | break 84 | if 3 == len(res) or 6 == len(res): 85 | res = res[:-1] 86 | return res 87 | 88 | def Info_Content(self, concept): 89 | if concept == '': 90 | return 0 91 | total =0 92 | for ele in self.mydict.keys(): 93 | if len(ele)==1: 94 | total += self.mydict[ele] 95 | FenMu = math.log(total,2) 96 | #print('总结点数',total,FenMu) 97 | hypo = 1 98 | if concept in self.mydict.keys(): 99 | hypo += self.mydict[concept] 100 | info = math.log(hypo, 2) / FenMu 101 | # print(concept, '下位节点数:', hypo,'信息内容:',1-info) 102 | return 1 - info 103 | 104 | def sim_by_IC(self, c1, c2): 105 | # 找到公共字符串 106 | LCS = self.get_common_str(c1, c2) 107 | distance = self.Info_Content(LCS) - (self.Info_Content(c1) + self.Info_Content(c2)) / 2 108 | return distance + 1 109 | 110 | def sim2018(self, w1, w2): 111 | """ 按照论文彭琦, 朱新华, 陈意山,等. 基于信息内容的词林词语相似度计算[J]. 计算机应用研究, 2018(2):400-404.计算相似度 """ 112 | for word in [w1, w2]: 113 | if word not in self.vocab: 114 | print(word, '未被词林词林收录!') 115 | return 0 # 如果有一个词不在词林中,则相似度为0 116 | # 获取两个词的编码列表 117 | code1 = self.word_code[w1] 118 | code2 = self.word_code[w2] 119 | simlist = [] 120 | for c1 in code1: # 选取相似度最大值 121 | for c2 in code2: 122 | cur_sim = self.sim_by_IC(c1, c2) 123 | simlist.append(cur_sim) 124 | aver = sum(simlist) / len(simlist) 125 | # print(sorted(simlist,reverse=True)) 126 | if len(simlist) < 2: 127 | return simlist[0] 128 | if max(simlist) > 0.7: 129 | return max(simlist) 130 | elif aver > 0.2: 131 | return (sum(simlist) - max(simlist)) / (len(simlist) - 1) 132 | else: 133 | return min(simlist) 134 | ''' 135 | 136 | 137 | -------------------------------------------------------------------------------- /translate.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import json 3 | #from bs4 import BeautifulSoup 4 | import execjs #必须,需要先用pip 安装,用来执行js脚本 5 | class Py4Js(): 6 | def __init__(self): 7 | self.ctx = execjs.compile(""" 8 | function TL(a) { 9 | var k = ""; 10 | var b = 406644; 11 | var b1 = 3293161072; 12 | var jd = "."; 13 | var $b = "+-a^+6"; 14 | var Zb = "+-3^+b+-f"; 15 | for (var e = [], f = 0, g = 0; g < a.length; g++) { 16 | var m = a.charCodeAt(g); 17 | 128 > m ? e[f++] = m : (2048 > m ? e[f++] = m >> 6 | 192 : (55296 == (m & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (m = 65536 + ((m & 1023) << 10) + (a.charCodeAt(++g) & 1023), 18 | e[f++] = m >> 18 | 240, 19 | e[f++] = m >> 12 & 63 | 128) : e[f++] = m >> 12 | 224, 20 | e[f++] = m >> 6 & 63 | 128), 21 | e[f++] = m & 63 | 128) 22 | } 23 | a = b; 24 | for (f = 0; f < e.length; f++) a += e[f], 25 | a = RL(a, $b); 26 | a = RL(a, Zb); 27 | a ^= b1 || 0; 28 | 0 > a && (a = (a & 2147483647) + 2147483648); 29 | a %= 1E6; 30 | return a.toString() + jd + (a ^ b) 31 | }; 32 | function RL(a, b) { 33 | var t = "a"; 34 | var Yb = "+"; 35 | for (var c = 0; c < b.length - 2; c += 3) { 36 | var d = b.charAt(c + 2), 37 | d = d >= t ? d.charCodeAt(0) - 87 : Number(d), 38 | d = b.charAt(c + 1) == Yb ? a >>> d: a << d; 39 | a = b.charAt(c) == Yb ? a + d & 4294967295 : a ^ d 40 | } 41 | return a 42 | } 43 | """) 44 | def getTk(self,text): 45 | return self.ctx.call("TL",text) 46 | 47 | #英转中 48 | def buildUrl_e2c(text,tk): 49 | baseUrl='https://translate.google.cn/translate_a/single' 50 | baseUrl+='?client=webapp&' 51 | baseUrl+='sl=en&' 52 | baseUrl+='tl=zh-CN&' 53 | baseUrl+='hl=en&' 54 | baseUrl+='dt=at&' 55 | baseUrl+='dt=bd&' 56 | baseUrl+='dt=ex&' 57 | baseUrl+='dt=ld&' 58 | baseUrl+='dt=md&' 59 | baseUrl+='dt=qca&' 60 | baseUrl+='dt=rw&' 61 | baseUrl+='dt=rm&' 62 | baseUrl+='dt=ss&' 63 | baseUrl+='dt=t&' 64 | baseUrl+='ie=UTF-8&' 65 | baseUrl+='oe=UTF-8&' 66 | baseUrl+='otf=1&' 67 | baseUrl+='pc=1&' 68 | baseUrl+='ssel=0&' 69 | baseUrl+='tsel=0&' 70 | baseUrl+='kc=2&' 71 | baseUrl+='tk='+str(tk)+'&' 72 | baseUrl+='q='+text 73 | return baseUrl 74 | 75 | #中转英 76 | def buildUrl_c2e(text,tk): 77 | baseUrl='https://translate.google.cn/translate_a/single' 78 | baseUrl+='?client=webapp&' 79 | baseUrl+='sl=zh-CN&' 80 | baseUrl+='tl=en&' 81 | baseUrl+='hl=zh-CN&' 82 | baseUrl+='dt=at&' 83 | baseUrl+='dt=bd&' 84 | baseUrl+='dt=ex&' 85 | baseUrl+='dt=ld&' 86 | baseUrl+='dt=md&' 87 | baseUrl+='dt=qca&' 88 | baseUrl+='dt=rw&' 89 | baseUrl+='dt=rm&' 90 | baseUrl+='dt=ss&' 91 | baseUrl+='dt=t&' 92 | baseUrl+='ie=UTF-8&' 93 | baseUrl+='oe=UTF-8&' 94 | baseUrl+='otf=1&' 95 | baseUrl+='pc=1&' 96 | baseUrl+='ssel=0&' 97 | baseUrl+='tsel=0&' 98 | baseUrl+='kc=2&' 99 | baseUrl+='tk='+str(tk)+'&' 100 | baseUrl+='q='+text 101 | return baseUrl 102 | 103 | 104 | def translate(js, text, type): 105 | header={ 106 | 'authority':'translate.google.cn', 107 | 'method':'GET', 108 | 'path':'', 109 | 'scheme':'https', 110 | 'accept':'*/*', 111 | 'accept-encoding':'gzip, deflate, br', 112 | 'accept-language':'zh-CN,zh;q=0.9', 113 | 'cookie':'', 114 | 'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36', 115 | 'x-client-data':'CIa2yQEIpbbJAQjBtskBCPqcygEIqZ3KAQioo8oBGJGjygE=' 116 | } 117 | if type == 'e2c' : 118 | url = buildUrl_e2c(text,js.getTk(text)) 119 | elif type == 'c2e' : 120 | url = buildUrl_c2e(text, js.getTk(text)) 121 | res='' 122 | try: 123 | r=requests.get(url) 124 | result=json.loads(r.text) 125 | if result[7]!=None and len(result[7])!=0: 126 | # 如果我们文本输错,提示你是不是要找xxx的话,那么重新把xxx正确的翻译之后返回 127 | try: 128 | correctText=result[7][0].replace('',' ').replace('','') 129 | print(correctText) 130 | if type == 'e2c' : 131 | correctUrl = buildUrl_e2c(correctText,js.getTk(correctText)) 132 | elif type == 'c2e' : 133 | correctUrl = buildUrl_c2e(correctText, js.getTk(correctText)) 134 | correctR=requests.get(correctUrl) 135 | newResult=json.loads(correctR.text) 136 | res=newResult[0][0][0] 137 | except Exception as e: 138 | print(e) 139 | #res=result[0][0][0] 140 | res='' 141 | else: 142 | res=result[0][0][0] 143 | except Exception as e: 144 | res='' 145 | print(url) 146 | print("翻译"+text+"失败") 147 | print("错误信息:") 148 | print(e) 149 | finally: 150 | return res 151 | 152 | if __name__ == '__main__': 153 | js=Py4Js() 154 | res=translate(js, '你好啊', 'c2e') 155 | print("中文转英文:", res) 156 | res=translate(js, 'hello', 'e2c') 157 | print("英文转中文:", res) 158 | 159 | -------------------------------------------------------------------------------- /哈工大停用词表.txt: -------------------------------------------------------------------------------- 1 | ——— 2 | 》), 3 | )÷(1- 4 | ”, 5 | )、 6 | =( 7 | : 8 | → 9 | ℃ 10 | & 11 | * 12 | 一一 13 | ~~~~ 14 | ’ 15 | . 16 | 『 17 | .一 18 | ./ 19 | -- 20 | 』 21 | =″ 22 | 【 23 | [*] 24 | }> 25 | [⑤]] 26 | [①D] 27 | c] 28 | ng昉 29 | * 30 | // 31 | [ 32 | ] 33 | [②e] 34 | [②g] 35 | ={ 36 | } 37 | ,也 38 | ‘ 39 | A 40 | [①⑥] 41 | [②B] 42 | [①a] 43 | [④a] 44 | [①③] 45 | [③h] 46 | ③] 47 | 1. 48 | -- 49 | [②b] 50 | ’‘ 51 | ××× 52 | [①⑧] 53 | 0:2 54 | =[ 55 | [⑤b] 56 | [②c] 57 | [④b] 58 | [②③] 59 | [③a] 60 | [④c] 61 | [①⑤] 62 | [①⑦] 63 | [①g] 64 | ∈[ 65 | [①⑨] 66 | [①④] 67 | [①c] 68 | [②f] 69 | [②⑧] 70 | [②①] 71 | [①C] 72 | [③c] 73 | [③g] 74 | [②⑤] 75 | [②②] 76 | 一. 77 | [①h] 78 | .数 79 | [] 80 | [①B] 81 | 数/ 82 | [①i] 83 | [③e] 84 | [①①] 85 | [④d] 86 | [④e] 87 | [③b] 88 | [⑤a] 89 | [①A] 90 | [②⑧] 91 | [②⑦] 92 | [①d] 93 | [②j] 94 | 〕〔 95 | ][ 96 | :// 97 | ′∈ 98 | [②④ 99 | [⑤e] 100 | 12% 101 | b] 102 | ... 103 | ................... 104 | …………………………………………………③ 105 | ZXFITL 106 | [③F] 107 | 」 108 | [①o] 109 | ]∧′=[ 110 | ∪φ∈ 111 | ′| 112 | {- 113 | ②c 114 | } 115 | [③①] 116 | R.L. 117 | [①E] 118 | Ψ 119 | -[*]- 120 | ↑ 121 | .日 122 | [②d] 123 | [② 124 | [②⑦] 125 | [②②] 126 | [③e] 127 | [①i] 128 | [①B] 129 | [①h] 130 | [①d] 131 | [①g] 132 | [①②] 133 | [②a] 134 | f] 135 | [⑩] 136 | a] 137 | [①e] 138 | [②h] 139 | [②⑥] 140 | [③d] 141 | [②⑩] 142 | e] 143 | 〉 144 | 】 145 | 元/吨 146 | [②⑩] 147 | 2.3% 148 | 5:0 149 | [①] 150 | :: 151 | [②] 152 | [③] 153 | [④] 154 | [⑤] 155 | [⑥] 156 | [⑦] 157 | [⑧] 158 | [⑨] 159 | …… 160 | —— 161 | ? 162 | 、 163 | 。 164 | “ 165 | ” 166 | 《 167 | 》 168 | ! 169 | , 170 | : 171 | ; 172 | ? 173 | . 174 | , 175 | . 176 | ' 177 | ? 178 | · 179 | ——— 180 | ── 181 | ? 182 | — 183 | < 184 | > 185 | ( 186 | ) 187 | 〔 188 | 〕 189 | [ 190 | ] 191 | ( 192 | ) 193 | - 194 | + 195 | ~ 196 | × 197 | / 198 | / 199 | ① 200 | ② 201 | ③ 202 | ④ 203 | ⑤ 204 | ⑥ 205 | ⑦ 206 | ⑧ 207 | ⑨ 208 | ⑩ 209 | Ⅲ 210 | В 211 | " 212 | ; 213 | # 214 | @ 215 | γ 216 | μ 217 | φ 218 | φ. 219 | × 220 | Δ 221 | ■ 222 | ▲ 223 | sub 224 | exp 225 | sup 226 | sub 227 | Lex 228 | # 229 | % 230 | & 231 | ' 232 | + 233 | +ξ 234 | ++ 235 | - 236 | -β 237 | < 238 | <± 239 | <Δ 240 | <λ 241 | <φ 242 | << 243 | = 244 | = 245 | =☆ 246 | =- 247 | > 248 | >λ 249 | _ 250 | ~± 251 | ~+ 252 | [⑤f] 253 | [⑤d] 254 | [②i] 255 | ≈ 256 | [②G] 257 | [①f] 258 | LI 259 | ㈧ 260 | [- 261 | ...... 262 | 〉 263 | [③⑩] 264 | 第二 265 | 一番 266 | 一直 267 | 一个 268 | 一些 269 | 许多 270 | 种 271 | 有的是 272 | 也就是说 273 | 末##末 274 | 啊 275 | 阿 276 | 哎 277 | 哎呀 278 | 哎哟 279 | 唉 280 | 俺 281 | 俺们 282 | 按 283 | 按照 284 | 吧 285 | 吧哒 286 | 把 287 | 罢了 288 | 被 289 | 本 290 | 本着 291 | 比 292 | 比方 293 | 比如 294 | 鄙人 295 | 彼 296 | 彼此 297 | 边 298 | 别 299 | 别的 300 | 别说 301 | 并 302 | 并且 303 | 不比 304 | 不成 305 | 不单 306 | 不但 307 | 不独 308 | 不管 309 | 不光 310 | 不过 311 | 不仅 312 | 不拘 313 | 不论 314 | 不怕 315 | 不然 316 | 不如 317 | 不特 318 | 不惟 319 | 不问 320 | 不只 321 | 朝 322 | 朝着 323 | 趁 324 | 趁着 325 | 乘 326 | 冲 327 | 除 328 | 除此之外 329 | 除非 330 | 除了 331 | 此 332 | 此间 333 | 此外 334 | 从 335 | 从而 336 | 打 337 | 待 338 | 但 339 | 但是 340 | 当 341 | 当着 342 | 到 343 | 得 344 | 的 345 | 的话 346 | 等 347 | 等等 348 | 地 349 | 第 350 | 叮咚 351 | 对 352 | 对于 353 | 多 354 | 多少 355 | 而 356 | 而况 357 | 而且 358 | 而是 359 | 而外 360 | 而言 361 | 而已 362 | 尔后 363 | 反过来 364 | 反过来说 365 | 反之 366 | 非但 367 | 非徒 368 | 否则 369 | 嘎 370 | 嘎登 371 | 该 372 | 赶 373 | 个 374 | 各 375 | 各个 376 | 各位 377 | 各种 378 | 各自 379 | 给 380 | 根据 381 | 跟 382 | 故 383 | 故此 384 | 固然 385 | 关于 386 | 管 387 | 归 388 | 果然 389 | 果真 390 | 过 391 | 哈 392 | 哈哈 393 | 呵 394 | 和 395 | 何 396 | 何处 397 | 何况 398 | 何时 399 | 嘿 400 | 哼 401 | 哼唷 402 | 呼哧 403 | 乎 404 | 哗 405 | 还是 406 | 还有 407 | 换句话说 408 | 换言之 409 | 或 410 | 或是 411 | 或者 412 | 极了 413 | 及 414 | 及其 415 | 及至 416 | 即 417 | 即便 418 | 即或 419 | 即令 420 | 即若 421 | 即使 422 | 几 423 | 几时 424 | 己 425 | 既 426 | 既然 427 | 既是 428 | 继而 429 | 加之 430 | 假如 431 | 假若 432 | 假使 433 | 鉴于 434 | 将 435 | 较 436 | 较之 437 | 叫 438 | 接着 439 | 结果 440 | 借 441 | 紧接着 442 | 进而 443 | 尽 444 | 尽管 445 | 经 446 | 经过 447 | 就 448 | 就是 449 | 就是说 450 | 据 451 | 具体地说 452 | 具体说来 453 | 开始 454 | 开外 455 | 靠 456 | 咳 457 | 可 458 | 可见 459 | 可是 460 | 可以 461 | 况且 462 | 啦 463 | 来 464 | 来着 465 | 离 466 | 例如 467 | 哩 468 | 连 469 | 连同 470 | 两者 471 | 了 472 | 临 473 | 另 474 | 另外 475 | 另一方面 476 | 论 477 | 嘛 478 | 吗 479 | 慢说 480 | 漫说 481 | 冒 482 | 么 483 | 每 484 | 每当 485 | 们 486 | 莫若 487 | 某 488 | 某个 489 | 某些 490 | 拿 491 | 哪 492 | 哪边 493 | 哪儿 494 | 哪个 495 | 哪里 496 | 哪年 497 | 哪怕 498 | 哪天 499 | 哪些 500 | 哪样 501 | 那 502 | 那边 503 | 那儿 504 | 那个 505 | 那会儿 506 | 那里 507 | 那么 508 | 那么些 509 | 那么样 510 | 那时 511 | 那些 512 | 那样 513 | 乃 514 | 乃至 515 | 呢 516 | 能 517 | 你 518 | 你们 519 | 您 520 | 宁 521 | 宁可 522 | 宁肯 523 | 宁愿 524 | 哦 525 | 呕 526 | 啪达 527 | 旁人 528 | 呸 529 | 凭 530 | 凭借 531 | 其 532 | 其次 533 | 其二 534 | 其他 535 | 其它 536 | 其一 537 | 其余 538 | 其中 539 | 起 540 | 起见 541 | 起见 542 | 岂但 543 | 恰恰相反 544 | 前后 545 | 前者 546 | 且 547 | 然而 548 | 然后 549 | 然则 550 | 让 551 | 人家 552 | 任 553 | 任何 554 | 任凭 555 | 如 556 | 如此 557 | 如果 558 | 如何 559 | 如其 560 | 如若 561 | 如上所述 562 | 若 563 | 若非 564 | 若是 565 | 啥 566 | 上下 567 | 尚且 568 | 设若 569 | 设使 570 | 甚而 571 | 甚么 572 | 甚至 573 | 省得 574 | 时候 575 | 什么 576 | 什么样 577 | 使得 578 | 是 579 | 是的 580 | 首先 581 | 谁 582 | 谁知 583 | 顺 584 | 顺着 585 | 似的 586 | 虽 587 | 虽然 588 | 虽说 589 | 虽则 590 | 随 591 | 随着 592 | 所 593 | 所以 594 | 他 595 | 他们 596 | 他人 597 | 它 598 | 它们 599 | 她 600 | 她们 601 | 倘 602 | 倘或 603 | 倘然 604 | 倘若 605 | 倘使 606 | 腾 607 | 替 608 | 通过 609 | 同 610 | 同时 611 | 哇 612 | 万一 613 | 往 614 | 望 615 | 为 616 | 为何 617 | 为了 618 | 为什么 619 | 为着 620 | 喂 621 | 嗡嗡 622 | 我 623 | 我们 624 | 呜 625 | 呜呼 626 | 乌乎 627 | 无论 628 | 无宁 629 | 毋宁 630 | 嘻 631 | 吓 632 | 相对而言 633 | 像 634 | 向 635 | 向着 636 | 嘘 637 | 呀 638 | 焉 639 | 沿 640 | 沿着 641 | 要 642 | 要不 643 | 要不然 644 | 要不是 645 | 要么 646 | 要是 647 | 也 648 | 也罢 649 | 也好 650 | 一 651 | 一般 652 | 一旦 653 | 一方面 654 | 一来 655 | 一切 656 | 一样 657 | 一则 658 | 依 659 | 依照 660 | 矣 661 | 以 662 | 以便 663 | 以及 664 | 以免 665 | 以至 666 | 以至于 667 | 以致 668 | 抑或 669 | 因 670 | 因此 671 | 因而 672 | 因为 673 | 哟 674 | 用 675 | 由 676 | 由此可见 677 | 由于 678 | 有 679 | 有的 680 | 有关 681 | 有些 682 | 又 683 | 于 684 | 于是 685 | 于是乎 686 | 与 687 | 与此同时 688 | 与否 689 | 与其 690 | 越是 691 | 云云 692 | 哉 693 | 再说 694 | 再者 695 | 在 696 | 在下 697 | 咱 698 | 咱们 699 | 则 700 | 怎 701 | 怎么 702 | 怎么办 703 | 怎么样 704 | 怎样 705 | 咋 706 | 照 707 | 照着 708 | 者 709 | 这 710 | 这边 711 | 这儿 712 | 这个 713 | 这会儿 714 | 这就是说 715 | 这里 716 | 这么 717 | 这么点儿 718 | 这么些 719 | 这么样 720 | 这时 721 | 这些 722 | 这样 723 | 正如 724 | 吱 725 | 之 726 | 之类 727 | 之所以 728 | 之一 729 | 只是 730 | 只限 731 | 只要 732 | 只有 733 | 至 734 | 至于 735 | 诸位 736 | 着 737 | 着呢 738 | 自 739 | 自从 740 | 自个儿 741 | 自各儿 742 | 自己 743 | 自家 744 | 自身 745 | 综上所述 746 | 总的来看 747 | 总的来说 748 | 总的说来 749 | 总而言之 750 | 总之 751 | 纵 752 | 纵令 753 | 纵然 754 | 纵使 755 | 遵照 756 | 作为 757 | 兮 758 | 呃 759 | 呗 760 | 咚 761 | 咦 762 | 喏 763 | 啐 764 | 喔唷 765 | 嗬 766 | 嗯 767 | 嗳 768 | -------------------------------------------------------------------------------- /eda.py: -------------------------------------------------------------------------------- 1 | # Easy data augmentation techniques for text classification 2 | # Jason Wei and Kai Zou 3 | 4 | import random 5 | from random import shuffle 6 | from pyhanlp import * 7 | from ciLin import CilinSimilarity 8 | 9 | random.seed(1) 10 | 11 | #stop words list 12 | stop_words = set() 13 | 14 | def stopword_init(): 15 | stopwords_file = '哈工大停用词表.txt' 16 | with open(stopwords_file, 'r') as f: 17 | for line in f.readlines(): 18 | stop_words.add(line.strip()) 19 | 20 | stopwords_file = '百度停用词表.txt' 21 | with open(stopwords_file, 'r') as f: 22 | for line in f.readlines(): 23 | stop_words.add(line.strip()) 24 | 25 | print("已经初始化停用词表词个数: ", len(stop_words)) 26 | 27 | stopword_init() 28 | synonym_handler = CilinSimilarity() 29 | 30 | def get_segment(line): 31 | HanLP.Config.ShowTermNature = False 32 | StandardTokenizer = JClass("com.hankcs.hanlp.tokenizer.StandardTokenizer") 33 | segment_list = StandardTokenizer.segment(line) 34 | terms_list = [] 35 | for terms in segment_list : 36 | terms_list.append(str(terms)) 37 | return terms_list 38 | 39 | ######################################################################## 40 | # Synonym replacement 41 | # Replace n words in the sentence with synonyms from wordnet 42 | ######################################################################## 43 | 44 | 45 | def synonym_replacement(words, n): 46 | new_words = words.copy() 47 | random_word_list = list(set([word for word in words if word not in stop_words])) 48 | random.shuffle(random_word_list) 49 | num_replaced = 0 50 | for random_word in random_word_list: 51 | synonyms = get_synonyms(random_word) 52 | if len(synonyms) >= 1: 53 | synonym = random.choice(list(synonyms)) 54 | new_words = [synonym if word == random_word else word for word in new_words] 55 | #print("replaced", random_word, "with", synonym) 56 | num_replaced += 1 57 | if num_replaced >= n: #only replace up to n words 58 | break 59 | 60 | #this is stupid but we need it, trust me 61 | sentence = ' '.join(new_words) 62 | new_words = sentence.split(' ') 63 | 64 | return new_words 65 | 66 | def get_synonyms(word): 67 | synonyms = set() 68 | if word not in synonym_handler.vocab: 69 | print(word, '未被词林词林收录!') 70 | else: 71 | codes = synonym_handler.word_code[word] 72 | for code in codes: 73 | key = synonym_handler.code_word[code] 74 | synonyms.update(key) 75 | if word in synonyms: 76 | synonyms.remove(word) 77 | 78 | return list(synonyms) 79 | 80 | ######################################################################## 81 | # Random deletion 82 | # Randomly delete words from the sentence with probability p 83 | ######################################################################## 84 | 85 | def random_deletion(words, p): 86 | 87 | #obviously, if there's only one word, don't delete it 88 | if len(words) == 1: 89 | return words 90 | 91 | #randomly delete words with probability p 92 | new_words = [] 93 | for word in words: 94 | r = random.uniform(0, 1) 95 | if r > p: 96 | new_words.append(word) 97 | 98 | #if you end up deleting all words, just return a random word 99 | if len(new_words) == 0: 100 | rand_int = random.randint(0, len(words)-1) 101 | return [words[rand_int]] 102 | 103 | return new_words 104 | 105 | ######################################################################## 106 | # Random swap 107 | # Randomly swap two words in the sentence n times 108 | ######################################################################## 109 | 110 | def random_swap(words, n): 111 | new_words = words.copy() 112 | for _ in range(n): 113 | new_words = swap_word(new_words) 114 | return new_words 115 | 116 | def swap_word(new_words): 117 | random_idx_1 = random.randint(0, len(new_words)-1) 118 | random_idx_2 = random_idx_1 119 | counter = 0 120 | while random_idx_2 == random_idx_1: 121 | random_idx_2 = random.randint(0, len(new_words)-1) 122 | counter += 1 123 | if counter > 3: 124 | return new_words 125 | new_words[random_idx_1], new_words[random_idx_2] = new_words[random_idx_2], new_words[random_idx_1] 126 | return new_words 127 | 128 | ######################################################################## 129 | # Random insertion 130 | # Randomly insert n words into the sentence 131 | ######################################################################## 132 | 133 | def random_insertion(words, n): 134 | new_words = words.copy() 135 | for _ in range(n): 136 | add_word(new_words) 137 | return new_words 138 | 139 | def add_word(new_words): 140 | synonyms = [] 141 | counter = 0 142 | while len(synonyms) < 1: 143 | random_word = new_words[random.randint(0, len(new_words)-1)] 144 | synonyms = get_synonyms(random_word) 145 | counter += 1 146 | if counter >= 10: 147 | return 148 | random_synonym = synonyms[0] 149 | random_idx = random.randint(0, len(new_words)-1) 150 | new_words.insert(random_idx, random_synonym) 151 | 152 | ######################################################################## 153 | # main data augmentation function 154 | ######################################################################## 155 | 156 | def eda(sentence, alpha_sr=0.1, alpha_ri=0.1, alpha_rs=0.1, p_rd=0.1, num_aug=9): 157 | 158 | words = get_segment(sentence) 159 | 160 | num_words = len(words) 161 | 162 | augmented_sentences = [] 163 | num_new_per_technique = int(num_aug/4)+1 164 | n_sr = max(1, int(alpha_sr*num_words)) 165 | n_ri = max(1, int(alpha_ri*num_words)) 166 | n_rs = max(1, int(alpha_rs*num_words)) 167 | 168 | #sr 169 | for _ in range(num_new_per_technique): 170 | a_words = synonym_replacement(words, n_sr) 171 | augmented_sentences.append(''.join(a_words)) 172 | 173 | #ri 174 | for _ in range(num_new_per_technique): 175 | a_words = random_insertion(words, n_ri) 176 | augmented_sentences.append(''.join(a_words)) 177 | 178 | #rs 179 | for _ in range(num_new_per_technique): 180 | a_words = random_swap(words, n_rs) 181 | augmented_sentences.append(''.join(a_words)) 182 | 183 | #rd 184 | for _ in range(num_new_per_technique): 185 | a_words = random_deletion(words, p_rd) 186 | augmented_sentences.append(''.join(a_words)) 187 | 188 | augmented_sentences = [get_segment(sentence) for sentence in augmented_sentences] 189 | 190 | shuffle(augmented_sentences) 191 | 192 | 193 | 194 | #trim so that we have the desired number of augmented sentences 195 | if num_aug >= 1: 196 | augmented_sentences = augmented_sentences[:num_aug] 197 | else: 198 | keep_prob = num_aug / len(augmented_sentences) 199 | augmented_sentences = [s for s in augmented_sentences if random.uniform(0, 1) < keep_prob] 200 | 201 | augmented_sentences = [''.join(sentence) for sentence in augmented_sentences] 202 | #append the original sentence 203 | augmented_sentences.append(sentence) 204 | 205 | return list(set(augmented_sentences)) 206 | 207 | -------------------------------------------------------------------------------- /百度停用词表.txt: -------------------------------------------------------------------------------- 1 | -- 2 | ? 3 | “ 4 | ” 5 | 》 6 | -- 7 | able 8 | about 9 | above 10 | according 11 | accordingly 12 | across 13 | actually 14 | after 15 | afterwards 16 | again 17 | against 18 | ain't 19 | all 20 | allow 21 | allows 22 | almost 23 | alone 24 | along 25 | already 26 | also 27 | although 28 | always 29 | am 30 | among 31 | amongst 32 | an 33 | and 34 | another 35 | any 36 | anybody 37 | anyhow 38 | anyone 39 | anything 40 | anyway 41 | anyways 42 | anywhere 43 | apart 44 | appear 45 | appreciate 46 | appropriate 47 | are 48 | aren't 49 | around 50 | as 51 | a's 52 | aside 53 | ask 54 | asking 55 | associated 56 | at 57 | available 58 | away 59 | awfully 60 | be 61 | became 62 | because 63 | become 64 | becomes 65 | becoming 66 | been 67 | before 68 | beforehand 69 | behind 70 | being 71 | believe 72 | below 73 | beside 74 | besides 75 | best 76 | better 77 | between 78 | beyond 79 | both 80 | brief 81 | but 82 | by 83 | came 84 | can 85 | cannot 86 | cant 87 | can't 88 | cause 89 | causes 90 | certain 91 | certainly 92 | changes 93 | clearly 94 | c'mon 95 | co 96 | com 97 | come 98 | comes 99 | concerning 100 | consequently 101 | consider 102 | considering 103 | contain 104 | containing 105 | contains 106 | corresponding 107 | could 108 | couldn't 109 | course 110 | c's 111 | currently 112 | definitely 113 | described 114 | despite 115 | did 116 | didn't 117 | different 118 | do 119 | does 120 | doesn't 121 | doing 122 | done 123 | don't 124 | down 125 | downwards 126 | during 127 | each 128 | edu 129 | eg 130 | eight 131 | either 132 | else 133 | elsewhere 134 | enough 135 | entirely 136 | especially 137 | et 138 | etc 139 | even 140 | ever 141 | every 142 | everybody 143 | everyone 144 | everything 145 | everywhere 146 | ex 147 | exactly 148 | example 149 | except 150 | far 151 | few 152 | fifth 153 | first 154 | five 155 | followed 156 | following 157 | follows 158 | for 159 | former 160 | formerly 161 | forth 162 | four 163 | from 164 | further 165 | furthermore 166 | get 167 | gets 168 | getting 169 | given 170 | gives 171 | go 172 | goes 173 | going 174 | gone 175 | got 176 | gotten 177 | greetings 178 | had 179 | hadn't 180 | happens 181 | hardly 182 | has 183 | hasn't 184 | have 185 | haven't 186 | having 187 | he 188 | hello 189 | help 190 | hence 191 | her 192 | here 193 | hereafter 194 | hereby 195 | herein 196 | here's 197 | hereupon 198 | hers 199 | herself 200 | he's 201 | hi 202 | him 203 | himself 204 | his 205 | hither 206 | hopefully 207 | how 208 | howbeit 209 | however 210 | i'd 211 | ie 212 | if 213 | ignored 214 | i'll 215 | i'm 216 | immediate 217 | in 218 | inasmuch 219 | inc 220 | indeed 221 | indicate 222 | indicated 223 | indicates 224 | inner 225 | insofar 226 | instead 227 | into 228 | inward 229 | is 230 | isn't 231 | it 232 | it'd 233 | it'll 234 | its 235 | it's 236 | itself 237 | i've 238 | just 239 | keep 240 | keeps 241 | kept 242 | know 243 | known 244 | knows 245 | last 246 | lately 247 | later 248 | latter 249 | latterly 250 | least 251 | less 252 | lest 253 | let 254 | let's 255 | like 256 | liked 257 | likely 258 | little 259 | look 260 | looking 261 | looks 262 | ltd 263 | mainly 264 | many 265 | may 266 | maybe 267 | me 268 | mean 269 | meanwhile 270 | merely 271 | might 272 | more 273 | moreover 274 | most 275 | mostly 276 | much 277 | must 278 | my 279 | myself 280 | name 281 | namely 282 | nd 283 | near 284 | nearly 285 | necessary 286 | need 287 | needs 288 | neither 289 | never 290 | nevertheless 291 | new 292 | next 293 | nine 294 | no 295 | nobody 296 | non 297 | none 298 | noone 299 | nor 300 | normally 301 | not 302 | nothing 303 | novel 304 | now 305 | nowhere 306 | obviously 307 | of 308 | off 309 | often 310 | oh 311 | ok 312 | okay 313 | old 314 | on 315 | once 316 | one 317 | ones 318 | only 319 | onto 320 | or 321 | other 322 | others 323 | otherwise 324 | ought 325 | our 326 | ours 327 | ourselves 328 | out 329 | outside 330 | over 331 | overall 332 | own 333 | particular 334 | particularly 335 | per 336 | perhaps 337 | placed 338 | please 339 | plus 340 | possible 341 | presumably 342 | probably 343 | provides 344 | que 345 | quite 346 | qv 347 | rather 348 | rd 349 | re 350 | really 351 | reasonably 352 | regarding 353 | regardless 354 | regards 355 | relatively 356 | respectively 357 | right 358 | said 359 | same 360 | saw 361 | say 362 | saying 363 | says 364 | second 365 | secondly 366 | see 367 | seeing 368 | seem 369 | seemed 370 | seeming 371 | seems 372 | seen 373 | self 374 | selves 375 | sensible 376 | sent 377 | serious 378 | seriously 379 | seven 380 | several 381 | shall 382 | she 383 | should 384 | shouldn't 385 | since 386 | six 387 | so 388 | some 389 | somebody 390 | somehow 391 | someone 392 | something 393 | sometime 394 | sometimes 395 | somewhat 396 | somewhere 397 | soon 398 | sorry 399 | specified 400 | specify 401 | specifying 402 | still 403 | sub 404 | such 405 | sup 406 | sure 407 | take 408 | taken 409 | tell 410 | tends 411 | th 412 | than 413 | thank 414 | thanks 415 | thanx 416 | that 417 | thats 418 | that's 419 | the 420 | their 421 | theirs 422 | them 423 | themselves 424 | then 425 | thence 426 | there 427 | thereafter 428 | thereby 429 | therefore 430 | therein 431 | theres 432 | there's 433 | thereupon 434 | these 435 | they 436 | they'd 437 | they'll 438 | they're 439 | they've 440 | think 441 | third 442 | this 443 | thorough 444 | thoroughly 445 | those 446 | though 447 | three 448 | through 449 | throughout 450 | thru 451 | thus 452 | to 453 | together 454 | too 455 | took 456 | toward 457 | towards 458 | tried 459 | tries 460 | truly 461 | try 462 | trying 463 | t's 464 | twice 465 | two 466 | un 467 | under 468 | unfortunately 469 | unless 470 | unlikely 471 | until 472 | unto 473 | up 474 | upon 475 | us 476 | use 477 | used 478 | useful 479 | uses 480 | using 481 | usually 482 | value 483 | various 484 | very 485 | via 486 | viz 487 | vs 488 | want 489 | wants 490 | was 491 | wasn't 492 | way 493 | we 494 | we'd 495 | welcome 496 | well 497 | we'll 498 | went 499 | were 500 | we're 501 | weren't 502 | we've 503 | what 504 | whatever 505 | what's 506 | when 507 | whence 508 | whenever 509 | where 510 | whereafter 511 | whereas 512 | whereby 513 | wherein 514 | where's 515 | whereupon 516 | wherever 517 | whether 518 | which 519 | while 520 | whither 521 | who 522 | whoever 523 | whole 524 | whom 525 | who's 526 | whose 527 | why 528 | will 529 | willing 530 | wish 531 | with 532 | within 533 | without 534 | wonder 535 | won't 536 | would 537 | wouldn't 538 | yes 539 | yet 540 | you 541 | you'd 542 | you'll 543 | your 544 | you're 545 | yours 546 | yourself 547 | yourselves 548 | you've 549 | zero 550 | zt 551 | ZT 552 | zz 553 | ZZ 554 | 一 555 | 一下 556 | 一些 557 | 一切 558 | 一则 559 | 一天 560 | 一定 561 | 一方面 562 | 一旦 563 | 一时 564 | 一来 565 | 一样 566 | 一次 567 | 一片 568 | 一直 569 | 一致 570 | 一般 571 | 一起 572 | 一边 573 | 一面 574 | 万一 575 | 上下 576 | 上升 577 | 上去 578 | 上来 579 | 上述 580 | 上面 581 | 下列 582 | 下去 583 | 下来 584 | 下面 585 | 不一 586 | 不久 587 | 不仅 588 | 不会 589 | 不但 590 | 不光 591 | 不单 592 | 不变 593 | 不只 594 | 不可 595 | 不同 596 | 不够 597 | 不如 598 | 不得 599 | 不怕 600 | 不惟 601 | 不成 602 | 不拘 603 | 不敢 604 | 不断 605 | 不是 606 | 不比 607 | 不然 608 | 不特 609 | 不独 610 | 不管 611 | 不能 612 | 不要 613 | 不论 614 | 不足 615 | 不过 616 | 不问 617 | 与 618 | 与其 619 | 与否 620 | 与此同时 621 | 专门 622 | 且 623 | 两者 624 | 严格 625 | 严重 626 | 个 627 | 个人 628 | 个别 629 | 中小 630 | 中间 631 | 丰富 632 | 临 633 | 为 634 | 为主 635 | 为了 636 | 为什么 637 | 为什麽 638 | 为何 639 | 为着 640 | 主张 641 | 主要 642 | 举行 643 | 乃 644 | 乃至 645 | 么 646 | 之 647 | 之一 648 | 之前 649 | 之后 650 | 之後 651 | 之所以 652 | 之类 653 | 乌乎 654 | 乎 655 | 乘 656 | 也 657 | 也好 658 | 也是 659 | 也罢 660 | 了 661 | 了解 662 | 争取 663 | 于 664 | 于是 665 | 于是乎 666 | 云云 667 | 互相 668 | 产生 669 | 人们 670 | 人家 671 | 什么 672 | 什么样 673 | 什麽 674 | 今后 675 | 今天 676 | 今年 677 | 今後 678 | 仍然 679 | 从 680 | 从事 681 | 从而 682 | 他 683 | 他人 684 | 他们 685 | 他的 686 | 代替 687 | 以 688 | 以上 689 | 以下 690 | 以为 691 | 以便 692 | 以免 693 | 以前 694 | 以及 695 | 以后 696 | 以外 697 | 以後 698 | 以来 699 | 以至 700 | 以至于 701 | 以致 702 | 们 703 | 任 704 | 任何 705 | 任凭 706 | 任务 707 | 企图 708 | 伟大 709 | 似乎 710 | 似的 711 | 但 712 | 但是 713 | 何 714 | 何况 715 | 何处 716 | 何时 717 | 作为 718 | 你 719 | 你们 720 | 你的 721 | 使得 722 | 使用 723 | 例如 724 | 依 725 | 依照 726 | 依靠 727 | 促进 728 | 保持 729 | 俺 730 | 俺们 731 | 倘 732 | 倘使 733 | 倘或 734 | 倘然 735 | 倘若 736 | 假使 737 | 假如 738 | 假若 739 | 做到 740 | 像 741 | 允许 742 | 充分 743 | 先后 744 | 先後 745 | 先生 746 | 全部 747 | 全面 748 | 兮 749 | 共同 750 | 关于 751 | 其 752 | 其一 753 | 其中 754 | 其二 755 | 其他 756 | 其余 757 | 其它 758 | 其实 759 | 其次 760 | 具体 761 | 具体地说 762 | 具体说来 763 | 具有 764 | 再者 765 | 再说 766 | 冒 767 | 冲 768 | 决定 769 | 况且 770 | 准备 771 | 几 772 | 几乎 773 | 几时 774 | 凭 775 | 凭借 776 | 出去 777 | 出来 778 | 出现 779 | 分别 780 | 则 781 | 别 782 | 别的 783 | 别说 784 | 到 785 | 前后 786 | 前者 787 | 前进 788 | 前面 789 | 加之 790 | 加以 791 | 加入 792 | 加强 793 | 十分 794 | 即 795 | 即令 796 | 即使 797 | 即便 798 | 即或 799 | 即若 800 | 却不 801 | 原来 802 | 又 803 | 及 804 | 及其 805 | 及时 806 | 及至 807 | 双方 808 | 反之 809 | 反应 810 | 反映 811 | 反过来 812 | 反过来说 813 | 取得 814 | 受到 815 | 变成 816 | 另 817 | 另一方面 818 | 另外 819 | 只是 820 | 只有 821 | 只要 822 | 只限 823 | 叫 824 | 叫做 825 | 召开 826 | 叮咚 827 | 可 828 | 可以 829 | 可是 830 | 可能 831 | 可见 832 | 各 833 | 各个 834 | 各人 835 | 各位 836 | 各地 837 | 各种 838 | 各级 839 | 各自 840 | 合理 841 | 同 842 | 同一 843 | 同时 844 | 同样 845 | 后来 846 | 后面 847 | 向 848 | 向着 849 | 吓 850 | 吗 851 | 否则 852 | 吧 853 | 吧哒 854 | 吱 855 | 呀 856 | 呃 857 | 呕 858 | 呗 859 | 呜 860 | 呜呼 861 | 呢 862 | 周围 863 | 呵 864 | 呸 865 | 呼哧 866 | 咋 867 | 和 868 | 咚 869 | 咦 870 | 咱 871 | 咱们 872 | 咳 873 | 哇 874 | 哈 875 | 哈哈 876 | 哉 877 | 哎 878 | 哎呀 879 | 哎哟 880 | 哗 881 | 哟 882 | 哦 883 | 哩 884 | 哪 885 | 哪个 886 | 哪些 887 | 哪儿 888 | 哪天 889 | 哪年 890 | 哪怕 891 | 哪样 892 | 哪边 893 | 哪里 894 | 哼 895 | 哼唷 896 | 唉 897 | 啊 898 | 啐 899 | 啥 900 | 啦 901 | 啪达 902 | 喂 903 | 喏 904 | 喔唷 905 | 嗡嗡 906 | 嗬 907 | 嗯 908 | 嗳 909 | 嘎 910 | 嘎登 911 | 嘘 912 | 嘛 913 | 嘻 914 | 嘿 915 | 因 916 | 因为 917 | 因此 918 | 因而 919 | 固然 920 | 在 921 | 在下 922 | 地 923 | 坚决 924 | 坚持 925 | 基本 926 | 处理 927 | 复杂 928 | 多 929 | 多少 930 | 多数 931 | 多次 932 | 大力 933 | 大多数 934 | 大大 935 | 大家 936 | 大批 937 | 大约 938 | 大量 939 | 失去 940 | 她 941 | 她们 942 | 她的 943 | 好的 944 | 好象 945 | 如 946 | 如上所述 947 | 如下 948 | 如何 949 | 如其 950 | 如果 951 | 如此 952 | 如若 953 | 存在 954 | 宁 955 | 宁可 956 | 宁愿 957 | 宁肯 958 | 它 959 | 它们 960 | 它们的 961 | 它的 962 | 安全 963 | 完全 964 | 完成 965 | 实现 966 | 实际 967 | 宣布 968 | 容易 969 | 密切 970 | 对 971 | 对于 972 | 对应 973 | 将 974 | 少数 975 | 尔后 976 | 尚且 977 | 尤其 978 | 就 979 | 就是 980 | 就是说 981 | 尽 982 | 尽管 983 | 属于 984 | 岂但 985 | 左右 986 | 巨大 987 | 巩固 988 | 己 989 | 已经 990 | 帮助 991 | 常常 992 | 并 993 | 并不 994 | 并不是 995 | 并且 996 | 并没有 997 | 广大 998 | 广泛 999 | 应当 1000 | 应用 1001 | 应该 1002 | 开外 1003 | 开始 1004 | 开展 1005 | 引起 1006 | 强烈 1007 | 强调 1008 | 归 1009 | 当 1010 | 当前 1011 | 当时 1012 | 当然 1013 | 当着 1014 | 形成 1015 | 彻底 1016 | 彼 1017 | 彼此 1018 | 往 1019 | 往往 1020 | 待 1021 | 後来 1022 | 後面 1023 | 得 1024 | 得出 1025 | 得到 1026 | 心里 1027 | 必然 1028 | 必要 1029 | 必须 1030 | 怎 1031 | 怎么 1032 | 怎么办 1033 | 怎么样 1034 | 怎样 1035 | 怎麽 1036 | 总之 1037 | 总是 1038 | 总的来看 1039 | 总的来说 1040 | 总的说来 1041 | 总结 1042 | 总而言之 1043 | 恰恰相反 1044 | 您 1045 | 意思 1046 | 愿意 1047 | 慢说 1048 | 成为 1049 | 我 1050 | 我们 1051 | 我的 1052 | 或 1053 | 或是 1054 | 或者 1055 | 战斗 1056 | 所 1057 | 所以 1058 | 所有 1059 | 所谓 1060 | 打 1061 | 扩大 1062 | 把 1063 | 抑或 1064 | 拿 1065 | 按 1066 | 按照 1067 | 换句话说 1068 | 换言之 1069 | 据 1070 | 掌握 1071 | 接着 1072 | 接著 1073 | 故 1074 | 故此 1075 | 整个 1076 | 方便 1077 | 方面 1078 | 旁人 1079 | 无宁 1080 | 无法 1081 | 无论 1082 | 既 1083 | 既是 1084 | 既然 1085 | 时候 1086 | 明显 1087 | 明确 1088 | 是 1089 | 是否 1090 | 是的 1091 | 显然 1092 | 显著 1093 | 普通 1094 | 普遍 1095 | 更加 1096 | 曾经 1097 | 替 1098 | 最后 1099 | 最大 1100 | 最好 1101 | 最後 1102 | 最近 1103 | 最高 1104 | 有 1105 | 有些 1106 | 有关 1107 | 有利 1108 | 有力 1109 | 有所 1110 | 有效 1111 | 有时 1112 | 有点 1113 | 有的 1114 | 有着 1115 | 有著 1116 | 望 1117 | 朝 1118 | 朝着 1119 | 本 1120 | 本着 1121 | 来 1122 | 来着 1123 | 极了 1124 | 构成 1125 | 果然 1126 | 果真 1127 | 某 1128 | 某个 1129 | 某些 1130 | 根据 1131 | 根本 1132 | 欢迎 1133 | 正在 1134 | 正如 1135 | 正常 1136 | 此 1137 | 此外 1138 | 此时 1139 | 此间 1140 | 毋宁 1141 | 每 1142 | 每个 1143 | 每天 1144 | 每年 1145 | 每当 1146 | 比 1147 | 比如 1148 | 比方 1149 | 比较 1150 | 毫不 1151 | 没有 1152 | 沿 1153 | 沿着 1154 | 注意 1155 | 深入 1156 | 清楚 1157 | 满足 1158 | 漫说 1159 | 焉 1160 | 然则 1161 | 然后 1162 | 然後 1163 | 然而 1164 | 照 1165 | 照着 1166 | 特别是 1167 | 特殊 1168 | 特点 1169 | 现代 1170 | 现在 1171 | 甚么 1172 | 甚而 1173 | 甚至 1174 | 用 1175 | 由 1176 | 由于 1177 | 由此可见 1178 | 的 1179 | 的话 1180 | 目前 1181 | 直到 1182 | 直接 1183 | 相似 1184 | 相信 1185 | 相反 1186 | 相同 1187 | 相对 1188 | 相对而言 1189 | 相应 1190 | 相当 1191 | 相等 1192 | 省得 1193 | 看出 1194 | 看到 1195 | 看来 1196 | 看看 1197 | 看见 1198 | 真是 1199 | 真正 1200 | 着 1201 | 着呢 1202 | 矣 1203 | 知道 1204 | 确定 1205 | 离 1206 | 积极 1207 | 移动 1208 | 突出 1209 | 突然 1210 | 立即 1211 | 第 1212 | 等 1213 | 等等 1214 | 管 1215 | 紧接着 1216 | 纵 1217 | 纵令 1218 | 纵使 1219 | 纵然 1220 | 练习 1221 | 组成 1222 | 经 1223 | 经常 1224 | 经过 1225 | 结合 1226 | 结果 1227 | 给 1228 | 绝对 1229 | 继续 1230 | 继而 1231 | 维持 1232 | 综上所述 1233 | 罢了 1234 | 考虑 1235 | 者 1236 | 而 1237 | 而且 1238 | 而况 1239 | 而外 1240 | 而已 1241 | 而是 1242 | 而言 1243 | 联系 1244 | 能 1245 | 能否 1246 | 能够 1247 | 腾 1248 | 自 1249 | 自个儿 1250 | 自从 1251 | 自各儿 1252 | 自家 1253 | 自己 1254 | 自身 1255 | 至 1256 | 至于 1257 | 良好 1258 | 若 1259 | 若是 1260 | 若非 1261 | 范围 1262 | 莫若 1263 | 获得 1264 | 虽 1265 | 虽则 1266 | 虽然 1267 | 虽说 1268 | 行为 1269 | 行动 1270 | 表明 1271 | 表示 1272 | 被 1273 | 要 1274 | 要不 1275 | 要不是 1276 | 要不然 1277 | 要么 1278 | 要是 1279 | 要求 1280 | 规定 1281 | 觉得 1282 | 认为 1283 | 认真 1284 | 认识 1285 | 让 1286 | 许多 1287 | 论 1288 | 设使 1289 | 设若 1290 | 该 1291 | 说明 1292 | 诸位 1293 | 谁 1294 | 谁知 1295 | 赶 1296 | 起 1297 | 起来 1298 | 起见 1299 | 趁 1300 | 趁着 1301 | 越是 1302 | 跟 1303 | 转动 1304 | 转变 1305 | 转贴 1306 | 较 1307 | 较之 1308 | 边 1309 | 达到 1310 | 迅速 1311 | 过 1312 | 过去 1313 | 过来 1314 | 运用 1315 | 还是 1316 | 还有 1317 | 这 1318 | 这个 1319 | 这么 1320 | 这么些 1321 | 这么样 1322 | 这么点儿 1323 | 这些 1324 | 这会儿 1325 | 这儿 1326 | 这就是说 1327 | 这时 1328 | 这样 1329 | 这点 1330 | 这种 1331 | 这边 1332 | 这里 1333 | 这麽 1334 | 进入 1335 | 进步 1336 | 进而 1337 | 进行 1338 | 连 1339 | 连同 1340 | 适应 1341 | 适当 1342 | 适用 1343 | 逐步 1344 | 逐渐 1345 | 通常 1346 | 通过 1347 | 造成 1348 | 遇到 1349 | 遭到 1350 | 避免 1351 | 那 1352 | 那个 1353 | 那么 1354 | 那么些 1355 | 那么样 1356 | 那些 1357 | 那会儿 1358 | 那儿 1359 | 那时 1360 | 那样 1361 | 那边 1362 | 那里 1363 | 那麽 1364 | 部分 1365 | 鄙人 1366 | 采取 1367 | 里面 1368 | 重大 1369 | 重新 1370 | 重要 1371 | 鉴于 1372 | 问题 1373 | 防止 1374 | 阿 1375 | 附近 1376 | 限制 1377 | 除 1378 | 除了 1379 | 除此之外 1380 | 除非 1381 | 随 1382 | 随着 1383 | 随著 1384 | 集中 1385 | 需要 1386 | 非但 1387 | 非常 1388 | 非徒 1389 | 靠 1390 | 顺 1391 | 顺着 1392 | 首先 1393 | 高兴 1394 | 是不是 1395 | 说说 1396 | 1397 | --------------------------------------------------------------------------------