首先,我们可以在https://www.youzack.com/ 上练习英语听力,还可以查看所有的句子,我们可以将所有的句子复制到本地
之后,我就可以对这些单词进行随机的mask,用空格取代。这样就可以将听力当作填空题练习,提高听力水平。
import random
def mask_gen(line_len, mask_ratio):
# 产生和句子等长的mask序列,mask序列由0 1 组成
mask_list = [0] * line_len
mask_num = int(line_len * mask_ratio)
random_list = random.sample(range(0, line_len), mask_num)
for i in random_list:
mask_list[i] = 1
return mask_list
def mask_line(line, mask_ratio):
# 根据mask序列将句子mask,0位置不变,1位置换成____。
line = line.split(" ")
line_len = len(line)
mask_list = mask_gen(line_len, mask_ratio)
res = ""
for i in range(len(mask_list)):
if mask_list[i] == 0:
if len(line[i]) < 5:
_len = 5
else:
_len = len(line[i])
res += "_" * _len + " "
else:
res += line[i] + " "
return res
def main(mask_ratio, file_path):
# 打开文件,每行单独处理
file = open(file_path, encoding="utf-8")
file_res = open(file_path.split(".")[0]+"res.txt", "w+")
for line in file:
if line[0] == ' ' or line[0] == '\n':
continue
else:
line = mask_line(line, mask_ratio)
# print(line)
file_res.write(line)
file_res.close()
if __name__ == '__main__':
mask_ratio = 0.5
file_path = "cet620191201.txt"
main(mask_ratio, file_path)