├── black_word.txt ├── test_text.txt ├── config.json ├── README.md ├── analyse.py ├── add_word.py └── result.txt /black_word.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test_text.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Expost/AddWordToShanbay/HEAD/test_text.txt -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "username":"381595626@qq.com", 3 | "password":"l1d2h3", 4 | "bookurl":"https://www.shanbay.com/wordbook/153367/", 5 | "unitname":["lala","baihe"] 6 | } 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ##文件说明 2 | 3 | analyse程序用来分析一本英文电子书的单词的词频,并把结果保存成文件。 4 | 5 | add_word则是根据单词文件自动的将其中的单词上传到自己的扇贝单词书中,避免了自己一个个手动敲打。 6 | 7 | config.json是add_word程序的配置文件。 8 | 9 | 配置文件说明: 10 | 11 | - username: 用户名 12 | - password: 用户密码 13 | - bookurl:所添加的单词书的链接地址 14 | - unitname:这里是用户自定义的单元名称,如果自定义的单元名称用完而单词还未添加完,程序会自动停止。如果不填写该内容,程序会自动从1开始作为第一个单元名,之后是2,以此类推。 15 | 16 | black_word.txt 是黑名单文件。 17 | 18 | test_text.txt 是测试文件。 19 | 20 | result.txt 是analyse.py对测试文件的结果输出。 21 | 22 | ##使用说明 23 | 24 | ###analyse 25 | 26 | 该程序在命令行下使用。 27 | 28 | 1. analyse.py [待分析的文本名] [要输出的文件名] [最小词频] [最大词频] 29 | 2. 如果不要求有最大词频,那么将其设置为 $ 30 | 3. 黑名单文件默认为 black_word.txt,该文件必须存在,不需要设置黑名单的话置其内容为空即可 31 | 若需设置黑名单,则每行为一个单词,出现在黑名单中的单词将不会出现在最终结果中。 32 | 33 | 输出的文件中,左边的是相应的单词,右边的数字表示的相应的词频。 34 | 35 | ###add_word 36 | 37 | 在使用该程序前,需要提前把配置文件相关的内容填写好。 38 | 39 | 需要填写的内容有: 40 | 41 | - username,用户名 42 | - password,密码 43 | - bookurl,自己创建的单词书的链接地址 44 | - unitname,因为单词书下添加单词是以单元为单位的,每个单元最多添加2000个单词,如果用户想要将单词添加到自定义的单元中,那么就在这里填写想要创建的单元名。需要注意的是,如果所有用户自定义的单元都已经添加满,但是单词还未添加完时,程序是会自动停止的。如果不填写该内容,程序会自动从1开始作为第一个单元名,之后是2,以此类推。 45 | 46 | 该程序同样在命令行下使用。 47 | 48 | add_word.py [[unit_url]] [word.txt] 49 | 50 | 假如用户只想在某个单元中继续添加单词,那么就指定unit_url参数,该参数是用户想要添加的单元的链接地址。 51 | 52 | 如果用户不想指定,忽略该参数即可,只需要指定 word.txt 参数,该参数为包含待添加单词的文件名。该文件中,每个单词占一行,analyse程序分析的结果文件可直接作为该程序的参数输入。 53 | 54 | 在添加单词过程中,某些单词因为结尾是ed、ing、s、es的形式而无法添加到扇贝单词中,扇贝单词需要原型才能够添加成功,程序一旦发现添加失败,并且单词是属于上述集中情况的,会自动尝试去ed、ing、s、es,之后再进行添加。 -------------------------------------------------------------------------------- /analyse.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | import re 3 | import sys 4 | 5 | class Analyse: 6 | def transform(self,s,d): 7 | if s in d: 8 | return True,s 9 | elif s[-2:] == "ed": 10 | if s[:-1] in d: 11 | return True,s[:-1] 12 | elif s[:-2] in d: 13 | return True,s[:-2] 14 | else: 15 | return False,s 16 | elif s[-3:] == "ing": 17 | if s[:-3] in d: 18 | return True,s[:-3] 19 | elif s[:-3] + "e" in d: 20 | return True,s[:-3] + "e" 21 | else: 22 | return False,s 23 | elif s[-1:] == "s": 24 | if s[:-1] in d: 25 | return True,s[:-1] 26 | else: 27 | return False,s 28 | elif s[-2:] == "es": 29 | if s[:-2] in d: 30 | return True,s[:-2] 31 | else: 32 | return False,s 33 | else: 34 | return False,s 35 | 36 | def get_word(self,text): 37 | r = re.compile("[a-zA-Z]+") 38 | l = r.findall(text) 39 | return l 40 | 41 | def load_black_file(self,black_file_name): 42 | word_dic = {} 43 | if black_file_name: 44 | text = open(black_file_name).read() 45 | word_list = self.get_word(text) 46 | for word in word_list: 47 | word_dic[word.strip().lower()] = -1 48 | return word_dic 49 | def load_word(self,in_file_name,word_dic): 50 | text = open(in_file_name).read() 51 | word_list = self.get_word(text) 52 | for word in word_list: 53 | if len(word) < 2: 54 | continue 55 | word = word.lower() 56 | if word in word_dic: 57 | if word_dic[word] > 0: 58 | word_dic[word] += 1 59 | else: 60 | word_dic[word] -= 1 61 | else: 62 | word_dic[word] = 1 63 | # isin,word = self.transform(word,word_dic) 64 | # if isin: 65 | # if word_dic[word] != -1: 66 | # word_dic[word] += 1 67 | # else: 68 | # word_dic[word] = 1 69 | 70 | return len(word_list) 71 | def cal_count(self,word_dic): 72 | outside_num = 0 73 | set_num = 0 74 | for word in word_dic: 75 | if word_dic[word] > 0: 76 | set_num += 1 77 | elif word_dic[word] < -1: 78 | outside_num += 1 79 | return outside_num,set_num 80 | def write_word(self,out_file_name,word_dic,range_min,range_max): 81 | result = open(out_file_name,"w") 82 | range_min = range_min if range_min >= 0 else 0 83 | write_num = 0 84 | if range_max == '$': 85 | for word in word_dic: 86 | if word_dic[word] >= range_min: 87 | write_num += 1 88 | result.write(word + "<") 89 | for space in xrange(40 - len(word)): 90 | result.write("-") 91 | result.write(">" + str(word_dic[word]) + "\n") 92 | else: 93 | for word in word_dic: 94 | if word_dic[word] < int(range_max) and word_dic[word] >= range_min: 95 | write_num += 1 96 | result.write(word + "<") 97 | for space in xrange(40 - len(word)): 98 | result.write("-") 99 | result.write(">" + str(word_dic[word]) + "\n") 100 | result.close() 101 | return write_num 102 | def start(self,in_file_name,out_file_name,black_file_name,range_min,range_max): 103 | word_dic = self.load_black_file(black_file_name) 104 | black_num = len(word_dic) 105 | sum_num = self.load_word(in_file_name,word_dic) 106 | outside_num,set_num = self.cal_count(word_dic) 107 | write_num = self.write_word(out_file_name,word_dic,range_min,range_max) 108 | print u"文件总单词数:",sum_num 109 | print u"黑名单单词数:",black_num 110 | print u"去重后在黑名单中的单词数:",outside_num 111 | print u"去重后不在黑名单的单词数:",set_num 112 | print u"符合要求词频的单词数:",write_num 113 | 114 | def main(): 115 | a = Analyse() 116 | if len(sys.argv) > 4: 117 | a.start(sys.argv[1],sys.argv[2],"black_word.txt",int(sys.argv[3]),sys.argv[4]) 118 | else: 119 | print 120 | print u"请按如下方法使用:" 121 | print u" analyse.py [待分析的文本名] [要输出的文件名] [最小词频] [最大词频]" 122 | print u" 如果不要求有最大词频,那么将其设置为 $ " 123 | print 124 | print u"黑名单文件默认为 black_word.txt,该文件必须存在,不需要设置黑名单的话置其内容为空即可" 125 | print u"若需设置黑名单,则每行为一个单词,出现在黑名单中的单词将不会出现在最终结果中" 126 | 127 | if __name__ == "__main__": 128 | main() 129 | -------------------------------------------------------------------------------- /add_word.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | 3 | import requests 4 | import time 5 | import json 6 | import re 7 | import sys 8 | 9 | 10 | class AddShanbayWord: 11 | def __init__(self,username,password,book_url,unit_name_list,unit_url,file_name): 12 | self.username = username 13 | self.password = password 14 | self.book_url = book_url 15 | self.unit_name_list = unit_name_list 16 | self.unit_url = unit_url 17 | self.file_name = file_name 18 | def login(self): 19 | login_url = "https://www.shanbay.com/accounts/login/" 20 | cookie = {} 21 | cookie["csrftoken"] = "uU5l2VcTSvAfidMAc04SxJFLqGK4gf1k" 22 | payload = {} 23 | payload["csrfmiddlewaretoken"] = "uU5l2VcTSvAfidMAc04SxJFLqGK4gf1k" 24 | payload["username"] = self.username 25 | payload["password"] = self.password 26 | 27 | r = requests.post(login_url,data = payload,cookies = cookie,allow_redirects = False) 28 | 29 | if r.status_code == 302: 30 | print "login success" 31 | return r.cookies 32 | else: 33 | print "login error" 34 | return None 35 | def get_deformation(self,s): 36 | defor_array = [] 37 | if s[-2:] == "ed": 38 | defor_array.append(s[:-2]) 39 | defor_array.append(s[:-1]) 40 | elif s[-3:] == "ing": 41 | defor_array.append(s[:-3]) 42 | defor_array.append(s[:-3] + "e") 43 | elif s[-1:] == "s": 44 | defor_array.append(s[:-1]) 45 | elif s[-2:] == "es": 46 | defor_array.append(s[:-2]) 47 | return defor_array 48 | 49 | def add_word(self,cookie,uid,word): 50 | add_url = "https://www.shanbay.com/api/v1/wordlist/vocabulary/" 51 | payload = {} 52 | payload["id"] = uid 53 | payload["word"] = word 54 | 55 | r = requests.post(add_url,data = payload,cookies = cookie) 56 | 57 | j = json.loads(r.content) 58 | if j["status_code"] == 0: 59 | print word,u"添加成功" 60 | r.close() 61 | elif j["status_code"] == 1: 62 | print word,u"添加失败由于: " + j["msg"] 63 | if u"上限" in j["msg"]: 64 | return True 65 | elif j["status_code"] == 404: 66 | print word,u"添加失败由于: " + j["msg"] 67 | defor_array = self.get_deformation(word) 68 | for i in defor_array: 69 | #self.add_word(cookie,uid,i) 70 | payload["word"] = i 71 | r = requests.post(add_url,data = payload,cookies = cookie) 72 | j = json.loads(r.content) 73 | if j["status_code"] == 0: 74 | print " ",i,u"尝试添加成功" 75 | elif u"上限" in j["msg"]: 76 | print " ",i,u"尝试添加失败由于: " + j["msg"] 77 | return True 78 | else: 79 | print " ",i,u"尝试添加失败由于: " + j["msg"] 80 | time.sleep(0.1) 81 | r.close() 82 | return False 83 | def add_word_unit(self,cookie,book_id,unit_name): 84 | unit_url = "https://www.shanbay.com/api/v1/wordbook/wordlist/" 85 | payload = {} 86 | payload["name"] = unit_name 87 | payload["description"] = "+" 88 | payload["wordbook_id"] = book_id 89 | r = requests.post(unit_url,data = payload,cookies = cookie) 90 | if r.status_code != 200: 91 | print u"添加单词单元%s错误" %unit_name 92 | print r.status_code 93 | exit(-1) 94 | j = json.loads(r.content) 95 | if j["status_code"] == 0: 96 | print u"添加单元%s成功" % unit_name 97 | print u"\n------------------%s---------------\n" % unit_name 98 | return j["data"]["wordlist"]["id"] 99 | else: 100 | return None 101 | def start_add(self): 102 | cookie = self.login() 103 | if cookie is None: 104 | exit(-1) 105 | word_text = open(self.file_name).read() 106 | r = re.compile("[a-zA-Z]+") 107 | word_list = r.findall(word_text) 108 | book_id = self.book_url.split("/")[-2] 109 | if self.unit_url: 110 | uid = self.unit_url.split("/")[-2] 111 | self.add_word_to_oneunit(cookie,uid,word_list,0) 112 | elif self.unit_name_list: 113 | index = 0 114 | for lname in self.unit_name_list: 115 | uid = self.add_word_unit(cookie,book_id,lname) 116 | index = self.add_word_to_oneunit(cookie,uid,word_list,index) 117 | else: 118 | unit_num = 1 119 | index = 0 120 | while 1: 121 | uid = self.add_word_unit(cookie,book_id,str(unit_num)) 122 | index = self.add_word_to_oneunit(cookie,uid,word_list,index) 123 | if index == len(word_list) - 1: 124 | break 125 | unit_num += 1 126 | 127 | def add_word_to_oneunit(self,cookie,uid,word_list,index): 128 | for i in xrange(index,len(word_list)): 129 | print str(i) + ".", 130 | out_range = self.add_word(cookie,uid,word_list[i]) 131 | if out_range: 132 | return i 133 | 134 | def main(): 135 | try: 136 | j = json.load(open("config.json")) 137 | except Exception,e: 138 | print "load config error:",e 139 | exit(-1) 140 | username = j["username"] 141 | password = j["password"] 142 | book_url = j["bookurl"] 143 | unit_name = j["unitname"] 144 | 145 | if len(sys.argv) == 3: 146 | a = AddShanbayWord(username,password,book_url,[],sys.argv[1],sys.argv[2]) 147 | a.start_add() 148 | elif len(sys.argv) == 2: 149 | a = AddShanbayWord(username,password,book_url,unit_name,"",sys.argv[1]) 150 | a.start_add() 151 | else: 152 | print u"命令行参数不正确。" 153 | print u"请按如下方法使用" 154 | print u"add_word.py [[unit_url]] [word.txt]" 155 | 156 | if __name__ == "__main__": 157 | main() -------------------------------------------------------------------------------- /result.txt: -------------------------------------------------------------------------------- 1 | hordes<---------------------------------->2 2 | yellow<---------------------------------->3 3 | hate<------------------------------------>2 4 | whose<----------------------------------->4 5 | pointing<-------------------------------->2 6 | lord<------------------------------------>2 7 | sorry<----------------------------------->4 8 | worth<----------------------------------->2 9 | foul<------------------------------------>2 10 | crops<----------------------------------->2 11 | solution<-------------------------------->2 12 | appearanceof<---------------------------->2 13 | relics<---------------------------------->2 14 | clothes<--------------------------------->2 15 | leaders<--------------------------------->2 16 | japanese<-------------------------------->2 17 | horn<------------------------------------>2 18 | street<---------------------------------->3 19 | follow<---------------------------------->2 20 | machines<-------------------------------->3 21 | established<----------------------------->2 22 | christ<---------------------------------->2 23 | pace<------------------------------------>2 24 | exactly<--------------------------------->4 25 | lights<---------------------------------->2 26 | ever<------------------------------------>4 27 | healthy<--------------------------------->2 28 | dry<------------------------------------->3 29 | anycase<--------------------------------->3 30 | study<----------------------------------->3 31 | changed<--------------------------------->3 32 | military<-------------------------------->2 33 | criticism<------------------------------->2 34 | hoping<---------------------------------->2 35 | army<------------------------------------>3 36 | insult<---------------------------------->2 37 | lungs<----------------------------------->2 38 | evening<--------------------------------->2 39 | adamand<--------------------------------->2 40 | comrade<--------------------------------->2 41 | adult<----------------------------------->2 42 | groves<---------------------------------->2 43 | inscription<----------------------------->4 44 | give<------------------------------------>4 45 | organized<------------------------------->2 46 | end<------------------------------------->3 47 | thing<----------------------------------->4 48 | hot<------------------------------------->3 49 | writers<--------------------------------->2 50 | sentencing<------------------------------>2 51 | third<----------------------------------->3 52 | cigarettes<------------------------------>2 53 | athletes<-------------------------------->3 54 | wing<------------------------------------>2 55 | vast<------------------------------------>3 56 | unfortunate<----------------------------->2 57 | safe<------------------------------------>4 58 | scene<----------------------------------->2 59 | jesus<----------------------------------->2 60 | potatoes<-------------------------------->2 61 | routines<-------------------------------->2 62 | toasted<--------------------------------->2 63 | victory<--------------------------------->2 64 | higher<---------------------------------->4 65 | joined<---------------------------------->2 66 | drinker<--------------------------------->2 67 | magazine<-------------------------------->2 68 | recognizable<---------------------------->2 69 | forty<----------------------------------->3 70 | got<------------------------------------->4 71 | forth<----------------------------------->2 72 | written<--------------------------------->3 73 | standard<-------------------------------->2 74 | checked<--------------------------------->2 75 | enormous<-------------------------------->3 76 | ate<------------------------------------->3 77 | hopeless<-------------------------------->3 78 | moving<---------------------------------->3 79 | loud<------------------------------------>3 80 | service<--------------------------------->2 81 | top<------------------------------------->3 82 | legs<------------------------------------>4 83 | western<--------------------------------->2 84 | distance<-------------------------------->3 85 | matter<---------------------------------->4 86 | speaking<-------------------------------->2 87 | iron<------------------------------------>3 88 | feeling<--------------------------------->4 89 | bridge<---------------------------------->3 90 | rap<------------------------------------->2 91 | seem<------------------------------------>3 92 | subjects<-------------------------------->3 93 | luxury<---------------------------------->2 94 | acquire<--------------------------------->2 95 | junxia<---------------------------------->2 96 | plenty<---------------------------------->2 97 | reputation<------------------------------>2 98 | saying<---------------------------------->3 99 | beaten<---------------------------------->2 100 | ending<---------------------------------->2 101 | participate<----------------------------->3 102 | tempted<--------------------------------->2 103 | lessons<--------------------------------->4 104 | panjue<---------------------------------->3 105 | watch<----------------------------------->4 106 | paddies<--------------------------------->4 107 | textbooks<------------------------------->2 108 | require<--------------------------------->2 109 | mandatory<------------------------------->2 110 | decided<--------------------------------->3 111 | result<---------------------------------->2 112 | best<------------------------------------>4 113 | pete<------------------------------------>3 114 | bellow<---------------------------------->3 115 | unable<---------------------------------->3 116 | tolerance<------------------------------->2 117 | news<------------------------------------>2 118 | holds<----------------------------------->2 119 | essentially<----------------------------->3 120 | against<--------------------------------->2 121 | games<----------------------------------->2 122 | pre<------------------------------------->2 123 | appeared<-------------------------------->4 124 | represented<----------------------------->3 125 | life<------------------------------------>4 126 | eastern<--------------------------------->2 127 | downed<---------------------------------->3 128 | sycophants<------------------------------>2 129 | craft<----------------------------------->2 130 | catch<----------------------------------->3 131 | worked<---------------------------------->3 132 | air<------------------------------------->4 133 | leaves<---------------------------------->2 134 | procedure<------------------------------->2 135 | mistake<--------------------------------->2 136 | cheever<--------------------------------->2 137 | played<---------------------------------->2 138 | disappear<------------------------------->2 139 | rebellion<------------------------------->3 140 | babies<---------------------------------->2 141 | blue<------------------------------------>2 142 | thoughts<-------------------------------->3 143 | changes<--------------------------------->2 144 | exam<------------------------------------>2 145 | echoed<---------------------------------->2 146 | contact<--------------------------------->3 147 | dadu<------------------------------------>4 148 | background<------------------------------>2 149 | yes<------------------------------------->4 150 | enters<---------------------------------->2 151 | character<------------------------------->3 152 | spread<---------------------------------->2 153 | easy<------------------------------------>3 154 | population<------------------------------>2 155 | officer<--------------------------------->3 156 | night<----------------------------------->2 157 | hung<------------------------------------>2 158 | teacherwang<----------------------------->3 159 | deal<------------------------------------>3 160 | tournament<------------------------------>3 161 | dead<------------------------------------>2 162 | hassle<---------------------------------->2 163 | paragraphs<------------------------------>2 164 | tutorial<-------------------------------->3 165 | everything<------------------------------>4 166 | shakespeare<----------------------------->2 167 | terraces<-------------------------------->4 168 | khan<------------------------------------>2 169 | chapter<--------------------------------->2 170 | afternoon<------------------------------->4 171 | chengdu<--------------------------------->3 172 | son<------------------------------------->4 173 | carving<--------------------------------->4 174 | initial<--------------------------------->2 175 | music<----------------------------------->2 176 | trappings<------------------------------->2 177 | cloth<----------------------------------->2 178 | form<------------------------------------>2 179 | failure<--------------------------------->3 180 | hear<------------------------------------>4 181 | true<------------------------------------>4 182 | considered<------------------------------>3 183 | propaganda<------------------------------>3 184 | covers<---------------------------------->2 185 | promised<-------------------------------->2 186 | tip<------------------------------------->2 187 | holding<--------------------------------->3 188 | realize<--------------------------------->4 189 | eternity<-------------------------------->2 190 | surprise<-------------------------------->2 191 | polite<---------------------------------->2 192 | younger<--------------------------------->3 193 | longed<---------------------------------->2 194 | banquets<-------------------------------->3 195 | serious<--------------------------------->2 196 | others<---------------------------------->4 197 | focus<----------------------------------->3 198 | certainly<------------------------------->2 199 | flash<----------------------------------->4 200 | environment<----------------------------->3 201 | praised<--------------------------------->2 202 | string<---------------------------------->2 203 | trouble<--------------------------------->3 204 | minute<---------------------------------->2 205 | impressive<------------------------------>2 206 | steeply<--------------------------------->2 207 | standards<------------------------------->3 208 | leave<----------------------------------->2 209 | team<------------------------------------>4 210 | revolution<------------------------------>4 211 | sign<------------------------------------>4 212 | rough<----------------------------------->2 213 | appear<---------------------------------->2 214 | norris<---------------------------------->3 215 | imagined<-------------------------------->2 216 | understanding<--------------------------->3 217 | iwould<---------------------------------->3 218 | groups<---------------------------------->2 219 | alone<----------------------------------->2 220 | change<---------------------------------->2 221 | box<------------------------------------->2 222 | dusty<----------------------------------->2 223 | uphill<---------------------------------->2 224 | embarrassmentof<------------------------->2 225 | uneducated<------------------------------>2 226 | calligraphy<----------------------------->2 227 | carol<----------------------------------->2 228 | andi<------------------------------------>3 229 | intense<--------------------------------->2 230 | live<------------------------------------>2 231 | downtown<-------------------------------->2 232 | car<------------------------------------->2 233 | dribbling<------------------------------->2 234 | making<---------------------------------->3 235 | heart<----------------------------------->3 236 | classrooms<------------------------------>2 237 | december<-------------------------------->4 238 | near<------------------------------------>3 239 | paused<---------------------------------->3 240 | andthey<--------------------------------->2 241 | allowed<--------------------------------->2 242 | discussion<------------------------------>2 243 | watching<-------------------------------->2 244 | sandstone<------------------------------->2 245 | southern<-------------------------------->4 246 | gorges<---------------------------------->4 247 | succeeded<------------------------------->3 248 | whenever<-------------------------------->4 249 | oates<----------------------------------->2 250 | tall<------------------------------------>3 251 | pointed<--------------------------------->2 252 | cold<------------------------------------>2 253 | tendency<-------------------------------->3 254 | endless<--------------------------------->2 255 | lonely<---------------------------------->2 256 | nation<---------------------------------->2 257 | boats<----------------------------------->4 258 | adrenaline<------------------------------>2 259 | arriving<-------------------------------->2 260 | shouted<--------------------------------->4 261 | rock<------------------------------------>4 262 | entirely<-------------------------------->2 263 | morning<--------------------------------->2 264 | living<---------------------------------->3 265 | space<----------------------------------->2 266 | factory<--------------------------------->2 267 | stupid<---------------------------------->2 268 | correct<--------------------------------->2 269 | cars<------------------------------------>4 270 | pumping<--------------------------------->2 271 | complicated<----------------------------->2 272 | sampans<--------------------------------->2 273 | constantly<------------------------------>3 274 | spoken<---------------------------------->2 275 | impossible<------------------------------>3 276 | sounds<---------------------------------->4 277 | open<------------------------------------>2 278 | caught<---------------------------------->3 279 | response<-------------------------------->2 280 | draft<----------------------------------->2 281 | structures<------------------------------>2 282 | friend<---------------------------------->4 283 | eyes<------------------------------------>4 284 | mostly<---------------------------------->4 285 | cops<------------------------------------>2 286 | translate<------------------------------->3 287 | war<------------------------------------->2 288 | banner<---------------------------------->3 289 | cards<----------------------------------->3 290 | remained<-------------------------------->3 291 | prostitution<---------------------------->2 292 | note<------------------------------------>4 293 | dining<---------------------------------->3 294 | upside<---------------------------------->2 295 | sure<------------------------------------>2 296 | falls<----------------------------------->2 297 | visitors<-------------------------------->3 298 | pair<------------------------------------>2 299 | average<--------------------------------->2 300 | wind<------------------------------------>2 301 | slope<----------------------------------->3 302 | show<------------------------------------>2 303 | fifty<----------------------------------->2 304 | bright<---------------------------------->3 305 | ground<---------------------------------->2 306 | waited<---------------------------------->2 307 | black<----------------------------------->4 308 | get<------------------------------------->4 309 | nearly<---------------------------------->4 310 | worried<--------------------------------->2 311 | vision<---------------------------------->3 312 | concubines<------------------------------>2 313 | thecadres<------------------------------->2 314 | sport<----------------------------------->3 315 | underpaid<------------------------------->2 316 | ways<------------------------------------>2 317 | fascinated<------------------------------>2 318 | outside<--------------------------------->2 319 | accustomed<------------------------------>3 320 | reading<--------------------------------->2 321 | leshan<---------------------------------->2 322 | spare<----------------------------------->2 323 | unusually<------------------------------->2 324 | article<--------------------------------->2 325 | mob<------------------------------------->4 326 | quiet<----------------------------------->4 327 | among<----------------------------------->2 328 | period<---------------------------------->2 329 | satisfaction<---------------------------->2 330 | learning<-------------------------------->4 331 | associated<------------------------------>2 332 | considering<----------------------------->2 333 | west<------------------------------------>2 334 | mark<------------------------------------>4 335 | wants<----------------------------------->2 336 | direction<------------------------------->3 337 | formed<---------------------------------->2 338 | mocking<--------------------------------->2 339 | educates<-------------------------------->4 340 | myself<---------------------------------->3 341 | middle<---------------------------------->3 342 | dangerously<----------------------------->2 343 | somebody<-------------------------------->4 344 | doctor<---------------------------------->3 345 | pay<------------------------------------->3 346 | reminded<-------------------------------->3 347 | ya<-------------------------------------->2 348 | followers<------------------------------->2 349 | events<---------------------------------->2 350 | finish<---------------------------------->3 351 | centuries<------------------------------->2 352 | driver<---------------------------------->3 353 | climbing<-------------------------------->2 354 | tradition<------------------------------->3 355 | reference<------------------------------->2 356 | floor<----------------------------------->2 357 | grinned<--------------------------------->2 358 | bottle<---------------------------------->2 359 | model<----------------------------------->4 360 | bodies<---------------------------------->3 361 | summer<---------------------------------->2 362 | shouts<---------------------------------->2 363 | sweeping<-------------------------------->3 364 | violent<--------------------------------->2 365 | touch<----------------------------------->4 366 | death<----------------------------------->3 367 | flood<----------------------------------->2 368 | thinking<-------------------------------->2 369 | listening<------------------------------->3 370 | sanity<---------------------------------->2 371 | completely<------------------------------>2 372 | reform<---------------------------------->2 373 | paragraph<------------------------------->2 374 | competition<----------------------------->2 375 | provided<-------------------------------->3 376 | critical<-------------------------------->3 377 | spectators<------------------------------>2 378 | seconds<--------------------------------->3 379 | communicate<----------------------------->3 380 | broken<---------------------------------->3 381 | sixty<----------------------------------->2 382 | central<--------------------------------->2 383 | opium<----------------------------------->3 384 | testimony<------------------------------->2 385 | saul<------------------------------------>2 386 | honks<----------------------------------->2 387 | thanked<--------------------------------->2 388 | rising<---------------------------------->3 389 | strictly<-------------------------------->2 390 | lot<------------------------------------->2 391 | valley<---------------------------------->4 392 | mornings<-------------------------------->3 393 | regard<---------------------------------->2 394 | delayed<--------------------------------->2 395 | trying<---------------------------------->2 396 | happening<------------------------------->3 397 | improved<-------------------------------->2 398 | trips<----------------------------------->2 399 | affection<------------------------------->2 400 | carved<---------------------------------->3 401 | fromthe<--------------------------------->2 402 | drivers<--------------------------------->3 403 | event<----------------------------------->3 404 | gambling<-------------------------------->2 405 | poor<------------------------------------>2 406 | peak<------------------------------------>2 407 | alcohol<--------------------------------->3 408 | building<-------------------------------->3 409 | remote<---------------------------------->4 410 | calls<----------------------------------->2 411 | haired<---------------------------------->2 412 | wake<------------------------------------>2 413 | original<-------------------------------->3 414 | forget<---------------------------------->2 415 | children<-------------------------------->2 416 | remarkable<------------------------------>2 417 | tv<-------------------------------------->2 418 | leaderboard<----------------------------->2 419 | infirmary<------------------------------->2 420 | polo<------------------------------------>2 421 | woman<----------------------------------->3 422 | fall<------------------------------------>3 423 | heaven<---------------------------------->2 424 | large<----------------------------------->2 425 | tea<------------------------------------->3 426 | streets<--------------------------------->3 427 | returned<-------------------------------->3 428 | clock<----------------------------------->2 429 | sun<------------------------------------->2 430 | section<--------------------------------->4 431 | apologized<------------------------------>2 432 | zedong<---------------------------------->2 433 | hours<----------------------------------->4 434 | squeezed<-------------------------------->2 435 | november<-------------------------------->3 436 | chongqing<------------------------------->3 437 | taiping<--------------------------------->3 438 | ahead<----------------------------------->4 439 | experience<------------------------------>4 440 | social<---------------------------------->2 441 | narrow<---------------------------------->4 442 | concerned<------------------------------->2 443 | semester<-------------------------------->4 444 | languages<------------------------------->2 445 | alcoholic<------------------------------->2 446 | taken<----------------------------------->2 447 | revolutionary<--------------------------->3 448 | corrected<------------------------------->2 449 | site<------------------------------------>3 450 | none<------------------------------------>3 451 | drank<----------------------------------->4 452 | nine<------------------------------------>2 453 | male<------------------------------------>3 454 | beautiful<------------------------------->2 455 | ritual<---------------------------------->4 456 | challenging<----------------------------->2 457 | pushed<---------------------------------->3 458 | answer<---------------------------------->2 459 | goal<------------------------------------>2 460 | occasionally<---------------------------->4 461 | sacred<---------------------------------->4 462 | isn<------------------------------------->3 463 | plant<----------------------------------->4 464 | countryside<----------------------------->4 465 | danwei<---------------------------------->2 466 | faculty<--------------------------------->3 467 | onto<------------------------------------>2 468 | help<------------------------------------>2 469 | soon<------------------------------------>3 470 | held<------------------------------------>4 471 | runner<---------------------------------->3 472 | soddy<----------------------------------->2 473 | talking<--------------------------------->3 474 | style<----------------------------------->4 475 | slipped<--------------------------------->4 476 | botched<--------------------------------->2 477 | actually<-------------------------------->4 478 | might<----------------------------------->4 479 | wouldn<---------------------------------->2 480 | return<---------------------------------->3 481 | thefirst<-------------------------------->2 482 | walls<----------------------------------->2 483 | offuling<-------------------------------->2 484 | foot<------------------------------------>3 485 | inscribed<------------------------------->3 486 | bigger<---------------------------------->3 487 | easily<---------------------------------->4 488 | stopped<--------------------------------->3 489 | friendship<------------------------------>2 490 | heavy<----------------------------------->3 491 | andthat<--------------------------------->2 492 | rowboats<-------------------------------->2 493 | hard<------------------------------------>4 494 | idea<------------------------------------>2 495 | gun<------------------------------------->3 496 | wasa<------------------------------------>2 497 | really<---------------------------------->3 498 | wondered<-------------------------------->3 499 | since<----------------------------------->4 500 | participants<---------------------------->3 501 | hill<------------------------------------>4 502 | pathetic<-------------------------------->2 503 | dirt<------------------------------------>2 504 | upon<------------------------------------>4 505 | reason<---------------------------------->3 506 | imagine<--------------------------------->2 507 | rises<----------------------------------->2 508 | wouldbe<--------------------------------->2 509 | threat<---------------------------------->2 510 | feel<------------------------------------>3 511 | mist<------------------------------------>2 512 | infuling<-------------------------------->3 513 | heads<----------------------------------->2 514 | blossom<--------------------------------->4 515 | leading<--------------------------------->3 516 | fought<---------------------------------->3 517 | bowed<----------------------------------->2 518 | behind<---------------------------------->4 519 | park<------------------------------------>2 520 | yangtzeand<------------------------------>2 521 | king<------------------------------------>4 522 | slowed<---------------------------------->3 523 | beneficial<------------------------------>2 524 | appearance<------------------------------>3 525 | teacherliao<----------------------------->2 526 | uniforms<-------------------------------->2 527 | fights<---------------------------------->4 528 | sentences<------------------------------->2 529 | fading<---------------------------------->3 530 | hopelessly<------------------------------>2 531 | odd<------------------------------------->2 532 | self<------------------------------------>2 533 | build<----------------------------------->3 534 | finding<--------------------------------->2 535 | react<----------------------------------->2 536 | significant<----------------------------->2 537 | achievement<----------------------------->2 538 | cover<----------------------------------->3 539 | tuber<----------------------------------->2 540 | hillside<-------------------------------->2 541 | carefully<------------------------------->3 542 | nervous<--------------------------------->2 543 | writer<---------------------------------->2 544 | hit<------------------------------------->2 545 | flowing<--------------------------------->2 546 | famous<---------------------------------->3 547 | silk<------------------------------------>2 548 | common<---------------------------------->3 549 | hardly<---------------------------------->3 550 | engraved<-------------------------------->4 551 | restaurants<----------------------------->3 552 | set<------------------------------------->3 553 | patriotism<------------------------------>2 554 | achieved<-------------------------------->2 555 | administrator<--------------------------->2 556 | culture<--------------------------------->2 557 | close<----------------------------------->3 558 | skill<----------------------------------->3 559 | pictures<-------------------------------->2 560 | won<------------------------------------->3 561 | certificate<----------------------------->2 562 | corruption<------------------------------>2 563 | recently<-------------------------------->2 564 | attention<------------------------------->3 565 | toward<---------------------------------->3 566 | last<------------------------------------>2 567 | annual<---------------------------------->4 568 | foreign<--------------------------------->3 569 | forgotten<------------------------------->4 570 | focused<--------------------------------->2 571 | yards<----------------------------------->2 572 | thenwe<---------------------------------->2 573 | whatever<-------------------------------->2 574 | village<--------------------------------->2 575 | patiently<------------------------------->2 576 | dui<------------------------------------->2 577 | political<------------------------------->3 578 | strategy<-------------------------------->2 579 | empty<----------------------------------->2 580 | partly<---------------------------------->3 581 | fire<------------------------------------>2 582 | pedicab<--------------------------------->3 583 | races<----------------------------------->2 584 | greattaiping<---------------------------->2 585 | honking<--------------------------------->2 586 | solid<----------------------------------->3 587 | straight<-------------------------------->4 588 | pack<------------------------------------>2 589 | scheduled<------------------------------->2 590 | century<--------------------------------->4 591 | binding<--------------------------------->2 592 | itself<---------------------------------->2 593 | theyangtze<------------------------------>4 594 | choking<--------------------------------->3 595 | tothe<----------------------------------->3 596 | virtually<------------------------------->3 597 | madly<----------------------------------->2 598 | ruler<----------------------------------->3 599 | development<----------------------------->2 600 | flooded<--------------------------------->2 601 | moment<---------------------------------->4 602 | arrived<--------------------------------->3 603 | purpose<--------------------------------->3 604 | stack<----------------------------------->3 605 | lower<----------------------------------->4 606 | rules<----------------------------------->3 607 | spend<----------------------------------->3 608 | echoing<--------------------------------->2 609 | risks<----------------------------------->2 610 | shape<----------------------------------->2 611 | questions<------------------------------->4 612 | using<----------------------------------->2 613 | tables<---------------------------------->3 614 | education<------------------------------->3 615 | marco<----------------------------------->2 616 | game<------------------------------------>4 617 | foreigners<------------------------------>2 618 | bit<------------------------------------->3 619 | formal<---------------------------------->2 620 | shaped<---------------------------------->3 621 | valleys<--------------------------------->3 622 | spring<---------------------------------->3 623 | understood<------------------------------>4 624 | per<------------------------------------->2 625 | nose<------------------------------------>3 626 | bi<-------------------------------------->2 627 | plaza<----------------------------------->4 628 | piled<----------------------------------->2 629 | auditorium<------------------------------>3 630 | silence<--------------------------------->3 631 | pollution<------------------------------->3 632 | seeing<---------------------------------->2 633 | within<---------------------------------->3 634 | appropriate<----------------------------->2 635 | sports<---------------------------------->4 636 | fast<------------------------------------>2 637 | forward<--------------------------------->4 638 | bored<----------------------------------->2 639 | mountains<------------------------------->3 640 | himself<--------------------------------->2 641 | inches<---------------------------------->4 642 | hoped<----------------------------------->4 643 | boys<------------------------------------>2 644 | link<------------------------------------>2 645 | zhe<------------------------------------->2 646 | uh<-------------------------------------->2 647 | doesn<----------------------------------->3 648 | cadre<----------------------------------->3 649 | single<---------------------------------->4 650 | chat<------------------------------------>2 651 | knewthat<-------------------------------->2 652 | mustard<--------------------------------->2 653 | problems<-------------------------------->2 654 | meaning<--------------------------------->2 655 | smiled<---------------------------------->4 656 | acrossthe<------------------------------->2 657 | structure<------------------------------->2 658 | pedestrians<----------------------------->2 659 | walked<---------------------------------->3 660 | description<----------------------------->2 661 | young<----------------------------------->3 662 | does<------------------------------------>3 663 | taipings<-------------------------------->2 664 | telling<--------------------------------->2 665 | continued<------------------------------->2 666 | stiff<----------------------------------->2 667 | notes<----------------------------------->2 668 | crop<------------------------------------>3 669 | growing<--------------------------------->2 670 | kuomintang<------------------------------>3 671 | waitress<-------------------------------->2 672 | revolutionarymartyrs<-------------------->2 673 | waiting<--------------------------------->4 674 | referees<-------------------------------->3 675 | obvious<--------------------------------->3 676 | thepack<--------------------------------->2 677 | degree<---------------------------------->3 678 | gathered<-------------------------------->2 679 | explore<--------------------------------->2 680 | let<------------------------------------->2 681 | fifteen<--------------------------------->2 682 | toast<----------------------------------->4 683 | involved<-------------------------------->3 684 | realizedthat<---------------------------->2 685 | residents<------------------------------->3 686 | named<----------------------------------->3 687 | nanjing<--------------------------------->4 688 | literary<-------------------------------->3 689 | use<------------------------------------->3 690 | figure<---------------------------------->4 691 | themselves<------------------------------>2 692 | inthe<----------------------------------->3 693 | exit<------------------------------------>2 694 | becomes<--------------------------------->4 695 | carvings<-------------------------------->4 696 | train<----------------------------------->2 697 | women<----------------------------------->4 698 | animals<--------------------------------->2 699 | dynasties<------------------------------->3 700 | ride<------------------------------------>2 701 | thin<------------------------------------>3 702 | anybody<--------------------------------->2 703 | high<------------------------------------>3 704 | pulling<--------------------------------->2 705 | sit<------------------------------------->3 706 | destroying<------------------------------>2 707 | areyou<---------------------------------->2 708 | poetry<---------------------------------->4 709 | delay<----------------------------------->2 710 | instead<--------------------------------->4 711 | farm<------------------------------------>3 712 | allof<----------------------------------->2 713 | light<----------------------------------->3 714 | volunteers<------------------------------>3 715 | closely<--------------------------------->2 716 | struggles<------------------------------->3 717 | looks<----------------------------------->2 718 | arrangement<----------------------------->2 719 | criticize<------------------------------->2 720 | crowds<---------------------------------->4 721 | junction<-------------------------------->2 722 | dam<------------------------------------->3 723 | material<-------------------------------->2 724 | hands<----------------------------------->4 725 | trap<------------------------------------>2 726 | truth<----------------------------------->3 727 | gazing<---------------------------------->2 728 | glasses<--------------------------------->2 729 | doing<----------------------------------->3 730 | joyce<----------------------------------->3 731 | buildings<------------------------------->3 732 | shots<----------------------------------->3 733 | argumentation<--------------------------->2 734 | eighty<---------------------------------->2 735 | afterward<------------------------------->2 736 | resumed<--------------------------------->2 737 | area<------------------------------------>4 738 | keep<------------------------------------>4 739 | south<----------------------------------->2 740 | powerful<-------------------------------->4 741 | blew<------------------------------------>3 742 | date<------------------------------------>3 743 | owner<----------------------------------->2 744 | ancient<--------------------------------->2 745 | unknown<--------------------------------->2 746 | system<---------------------------------->2 747 | perfectly<------------------------------->2 748 | reversed<-------------------------------->2 749 | inscriptions<---------------------------->3 750 | colleagues<------------------------------>2 751 | bother<---------------------------------->2 752 | reacted<--------------------------------->2 753 | visited<--------------------------------->2 754 | steep<----------------------------------->2 755 | drunk<----------------------------------->2 756 | false<----------------------------------->2 757 | comfortable<----------------------------->2 758 | tonight<--------------------------------->4 759 | need<------------------------------------>3 760 | clearly<--------------------------------->4 761 | min<------------------------------------->2 762 | studying<-------------------------------->3 763 | itwas<----------------------------------->4 764 | wasalready<------------------------------>2 765 | eight<----------------------------------->2 766 | lined<----------------------------------->2 767 | gather<---------------------------------->3 768 | request<--------------------------------->4 769 | face<------------------------------------>4 770 | gesture<--------------------------------->2 771 | text<------------------------------------>2 772 | agreed<---------------------------------->2 773 | fear<------------------------------------>4 774 | knowledge<------------------------------->3 775 | should<---------------------------------->4 776 | planted<--------------------------------->2 777 | communist<------------------------------->4 778 | local<----------------------------------->2 779 | handle<---------------------------------->4 780 | listened<-------------------------------->2 781 | ones<------------------------------------>3 782 | gray<------------------------------------>2 783 | calling<--------------------------------->3 784 | sha<------------------------------------->2 785 | cycles<---------------------------------->3 786 | view<------------------------------------>4 787 | pattern<--------------------------------->2 788 | state<----------------------------------->3 789 | progress<-------------------------------->2 790 | neither<--------------------------------->3 791 | frustrated<------------------------------>2 792 | outsiders<------------------------------->2 793 | opening<--------------------------------->3 794 | notion<---------------------------------->2 795 | thestreet<------------------------------->2 796 | figured<--------------------------------->3 797 | icould<---------------------------------->3 798 | taking<---------------------------------->2 799 | safely<---------------------------------->2 800 | otherwise<------------------------------->3 801 | gone<------------------------------------>2 802 | wall<------------------------------------>4 803 | respect<--------------------------------->2 804 | addition<-------------------------------->2 805 | gaze<------------------------------------>3 806 | improve<--------------------------------->3 807 | main<------------------------------------>2 808 | wild<------------------------------------>2 809 | frustrating<----------------------------->3 810 | ve<-------------------------------------->3 811 | almost<---------------------------------->2 812 | surface<--------------------------------->2 813 | administration<-------------------------->2 814 | parts<----------------------------------->4 815 | largest<--------------------------------->2 816 | ball<------------------------------------>2 817 | dust<------------------------------------>2 818 | frequently<------------------------------>2 819 | thatthere<------------------------------->2 820 | patterns<-------------------------------->2 821 | hadbeen<--------------------------------->2 822 | meet<------------------------------------>2 823 | moments<--------------------------------->2 824 | kramer<---------------------------------->4 825 | distant<--------------------------------->2 826 | wei<------------------------------------->2 827 | runners<--------------------------------->2 828 | increased<------------------------------->2 829 | desk<------------------------------------>4 830 | immediately<----------------------------->2 831 | cups<------------------------------------>2 832 | necessary<------------------------------->2 833 | lost<------------------------------------>4 834 | chairs<---------------------------------->2 835 | shuddered<------------------------------->2 836 | page<------------------------------------>2 837 | hair<------------------------------------>2 838 | iwanted<--------------------------------->2 839 | empire<---------------------------------->3 840 | lead<------------------------------------>4 841 | avoid<----------------------------------->4 842 | peasant<--------------------------------->2 843 | journal<--------------------------------->2 844 | pressure<-------------------------------->3 845 | simpler<--------------------------------->2 846 | carried<--------------------------------->2 847 | iwas<------------------------------------>2 848 | roads<----------------------------------->2 849 | biggest<--------------------------------->2 850 | function<-------------------------------->2 851 | north<----------------------------------->2 852 | stadium<--------------------------------->3 853 | bus<------------------------------------->2 854 | brand<----------------------------------->2 855 | wetalked<-------------------------------->2 856 | construction<---------------------------->2 857 | dangerous<------------------------------->2 858 | excitement<------------------------------>2 859 | harvested<------------------------------->3 860 | stories<--------------------------------->2 861 | monument<-------------------------------->2 862 | recognize<------------------------------->4 863 | meaningless<----------------------------->2 864 | slowing<--------------------------------->2 865 | lived<----------------------------------->4 866 | sick<------------------------------------>3 867 | missouri<-------------------------------->2 868 | cliff<----------------------------------->2 869 | ranks<----------------------------------->2 870 | earthquake<------------------------------>2 871 | --------------------------------------------------------------------------------