顾城诗词的预处理

Helper functions


In [68]:
#coding=utf-8
import pickle
import os
import re
def load_text(path):
    input_file = os.path.join(path)

    with open(input_file, 'r') as f:
        text_data = f.read()

    return text_data

def preprocess_and_save_data(text, token_lookup, create_lookup_tables):
    token_dict = token_lookup()
    
    for key, token in token_dict.items():
        text = text.replace(key, '{}'.format(token))
    text = list(text)
    
    vocab_to_int, int_to_vocab = create_lookup_tables(text)
    int_text = [vocab_to_int[word] for word in text]
    
    pickle.dump((int_text, vocab_to_int, int_to_vocab, token_dict), open('preprocess.p', 'wb'))

def load_preprocess():
    return pickle.load(open('preprocess.p', mode='rb'))

def save_params(params):
    pickle.dump(params, open('params.p', 'wb'))

def load_params():
    return pickle.load(open('params.p', mode='rb'))

In [69]:
data_dir = '~/Documents/fastai-notes/deeplearning1/rnn/text/'
filename = 'gucheng.txt'
%cd $data_dir
text = load_text(filename)


/Users/PeiYingchi/Documents/fastai-notes/deeplearning1/rnn/text

In [70]:
text[:500]


Out[70]:
'\n\n松\u3000塔\n松枝上,\n露滴晶光闪亮,\n好像绿漆的宝塔,\n挂满银铃铛。\n\n杨\u3000树\n我失去了一只臂膀,\n就睁开了一只眼睛。\n \n\n黄 昏\n猛烈的北风,\n吹散了人们淡薄的脚印;\n太阳落山了,\n世界像是一幅巨大的剪影。\n\n烟 囱\n烟囱犹如平地耸立起来的巨人,\n望着布满灯火的大地,\n不断地吸着烟卷,\n思索着一种谁也不知道的事情。\n\n\n星 月 的 来 由\n树枝想去撕裂天空,\n但却只戳了几个微小的窟窿,\n它透出了天外的光亮,\n人们把它叫作月亮和星星。\n\n塔 和 晨\n洁白的塔呵,\n围着绿色的腰带,\n像一枝春天的竹笋,\n在召唤满天蓬松的云彩。\n这是一个美丽的晨景,\n到处都悬着露水,\n像无数儿童的眼睛。\n在湿湿的霞光里,\n水光映着铜铃,\n铃响伴着和风。\n在云雾消散的松林里,\n回荡着啄木鸟工作的歌声。\n1968年\n天\n白云是天的雪山;\n碧空是天的海洋;\n阳光是天的熔岩;\n阴霾是天的煤矿;\n星团是天的城市;\n流星是天的车辆;\n天上的一切只能遥遥相望,\n所以天是幻想的家乡。\n \n上一页目\u3000录下一页\n\n□ 版权所有――顾城\n\n\n\n\n\n  \n\n\n \n\n\n\n\n  \n\n一九六九年\n \n我 的 幻 想\n我在幻想着,\n幻想'

In [71]:
text = text.replace(' ', '').replace('……', '').replace('\u3000','')

In [72]:
text = re.sub('(19.*?)\\n','\n', text)
text = re.sub('(一九.*?)\\n','\n', text)

In [73]:
text = re.sub(r'\n{2,}', '&', text)

In [74]:
text[:500]


Out[74]:
'&松塔\n松枝上,\n露滴晶光闪亮,\n好像绿漆的宝塔,\n挂满银铃铛。&杨树\n我失去了一只臂膀,\n就睁开了一只眼睛。&黄昏\n猛烈的北风,\n吹散了人们淡薄的脚印;\n太阳落山了,\n世界像是一幅巨大的剪影。&烟囱\n烟囱犹如平地耸立起来的巨人,\n望着布满灯火的大地,\n不断地吸着烟卷,\n思索着一种谁也不知道的事情。&星月的来由\n树枝想去撕裂天空,\n但却只戳了几个微小的窟窿,\n它透出了天外的光亮,\n人们把它叫作月亮和星星。&塔和晨\n洁白的塔呵,\n围着绿色的腰带,\n像一枝春天的竹笋,\n在召唤满天蓬松的云彩。\n这是一个美丽的晨景,\n到处都悬着露水,\n像无数儿童的眼睛。\n在湿湿的霞光里,\n水光映着铜铃,\n铃响伴着和风。\n在云雾消散的松林里,\n回荡着啄木鸟工作的歌声。&天\n白云是天的雪山;\n碧空是天的海洋;\n阳光是天的熔岩;\n阴霾是天的煤矿;\n星团是天的城市;\n流星是天的车辆;\n天上的一切只能遥遥相望,\n所以天是幻想的家乡。&上一页目录下一页&□版权所有――顾城&我的幻想\n我在幻想着,\n幻想在破灭着;\n幻想总把破灭宽恕,\n破灭却从不把幻想放过。&美\n我所渴望的美,\n是永恒与生命;\n谁知它们竟水火不容。\n永恒的美'

In [75]:
text = re.sub('(&[\u4300-\u9fff,]+)\n([\u4300-\u9fff])', r'\1:\2', text)

In [76]:
text[:500]


Out[76]:
'&松塔:松枝上,\n露滴晶光闪亮,\n好像绿漆的宝塔,\n挂满银铃铛。&杨树:我失去了一只臂膀,\n就睁开了一只眼睛。&黄昏:猛烈的北风,\n吹散了人们淡薄的脚印;\n太阳落山了,\n世界像是一幅巨大的剪影。&烟囱:烟囱犹如平地耸立起来的巨人,\n望着布满灯火的大地,\n不断地吸着烟卷,\n思索着一种谁也不知道的事情。&星月的来由:树枝想去撕裂天空,\n但却只戳了几个微小的窟窿,\n它透出了天外的光亮,\n人们把它叫作月亮和星星。&塔和晨:洁白的塔呵,\n围着绿色的腰带,\n像一枝春天的竹笋,\n在召唤满天蓬松的云彩。\n这是一个美丽的晨景,\n到处都悬着露水,\n像无数儿童的眼睛。\n在湿湿的霞光里,\n水光映着铜铃,\n铃响伴着和风。\n在云雾消散的松林里,\n回荡着啄木鸟工作的歌声。&天:白云是天的雪山;\n碧空是天的海洋;\n阳光是天的熔岩;\n阴霾是天的煤矿;\n星团是天的城市;\n流星是天的车辆;\n天上的一切只能遥遥相望,\n所以天是幻想的家乡。&上一页目录下一页&□版权所有――顾城&我的幻想:我在幻想着,\n幻想在破灭着;\n幻想总把破灭宽恕,\n破灭却从不把幻想放过。&美:我所渴望的美,\n是永恒与生命;\n谁知它们竟水火不容。\n永恒的美'

In [77]:
text = text.replace('(一)',':')
text = text.replace('(二)',':')
text = text.replace('(三)',':')

In [78]:
text = text.replace('\n', ' ').replace(u'目\u3000录', '')

In [79]:
text[:500]


Out[79]:
'&松塔:松枝上, 露滴晶光闪亮, 好像绿漆的宝塔, 挂满银铃铛。&杨树:我失去了一只臂膀, 就睁开了一只眼睛。&黄昏:猛烈的北风, 吹散了人们淡薄的脚印; 太阳落山了, 世界像是一幅巨大的剪影。&烟囱:烟囱犹如平地耸立起来的巨人, 望着布满灯火的大地, 不断地吸着烟卷, 思索着一种谁也不知道的事情。&星月的来由:树枝想去撕裂天空, 但却只戳了几个微小的窟窿, 它透出了天外的光亮, 人们把它叫作月亮和星星。&塔和晨:洁白的塔呵, 围着绿色的腰带, 像一枝春天的竹笋, 在召唤满天蓬松的云彩。 这是一个美丽的晨景, 到处都悬着露水, 像无数儿童的眼睛。 在湿湿的霞光里, 水光映着铜铃, 铃响伴着和风。 在云雾消散的松林里, 回荡着啄木鸟工作的歌声。&天:白云是天的雪山; 碧空是天的海洋; 阳光是天的熔岩; 阴霾是天的煤矿; 星团是天的城市; 流星是天的车辆; 天上的一切只能遥遥相望, 所以天是幻想的家乡。&上一页目录下一页&□版权所有――顾城&我的幻想:我在幻想着, 幻想在破灭着; 幻想总把破灭宽恕, 破灭却从不把幻想放过。&美:我所渴望的美, 是永恒与生命; 谁知它们竟水火不容。 永恒的美'

In [80]:
text = re.sub('(上一页.*?顾城)&', '', text)

In [81]:
text = text.replace('&', '\n')
text = re.sub('([\u4300-\u9fff]) ([\u4300-\u9fff])', r'\1,\2', text)
text = text.replace(' ', '')

In [82]:
print(text[27000:29000])


,孩子们还是要向上攀登,在斜线和直线消失的顶端,乔木并没有让出天空,高处的娃娃在捕捉光斑“真美呀”渔夫忽然叹息一声,他是我,也是你,都是真的,他在那代表着真实的我们,大自然宏伟得像一座教堂,深深的墨绿色是最浓的宁静,在蝉声和蜘蛛丝散落之后,自信的小木板就漂进森林,那发烫的河水总是拥挤,不知为什么都参观树洞,那银制的圣诞节竟然会溶化,滑冰的长影子也从此失踪,最好是用单线画一条大船,从童年的河滨驶向永恒,让我们一路上吱吱喳喳,像小鸟那样去热爱生命
窗扇:一座古老的教堂,站立在城市中央;一页彩色的窗扇,在秋风中吱吱歌唱。蓝天像静默的阔海,白云像自由的波浪。那温和灿烂的秋日,渐渐驶向南方。早霞和晚霞升落,好像旗帜飞扬。候鸟为它们所吸引,告别了草滩、苇塘――大群大群地腾起,飞向春天的家乡,那扇彩色的小窗,怎能忍受这一片苍茫。它也想升上天穹,去追赶太阳的金浆;它也想飞向南国,避开那酷寒严霜。它?它扭断了所有螺栓,开始实践梦想――呵,这真是个不幸的尝试,窗扇失去了依傍。它并没有向上飞升,反而是急速下降――突然挂了下树枝,就摔在石台阶旁。那里有一个盲人,吓得丢掉了细细的探杖。
古老的问题:有个青年,小小的年纪,却撞上了,一个古老的问题。他爱上了,一位美好的姑娘,可姑娘的父母,决不同意。青年写信,要经过检查;姑娘回信,要等待审批。于是,青年,和他心爱的姑娘,只好猜些,小孩的谜语。青年爱得,已经要昏迷,满心的话,却说不上一句。他难受得,只好到处乱跑,生生跑坏了,三双鞋底。最后这青年,越想越气,就发誓赌咒,决不忘记;“将来等我的,女儿长大,我也不宽大,我的女婿!”这个问题,真是个问题,细细一算,也十分有趣:青年最后,总要变成家长,所以问题嘛,只好古老下去。
呵,我无名的战友:呵,我生命的小舟,又穿过了――白絮飞舞的早春,浓荫重叠的盛夏,落叶喧哗的深秋,冰湖的鸿雁,水乡的黄鹂,海滨的燕鸥,又栖落在我的心头,多少回,希望的帆页,在梦雾里飘流,多少次,向往的羽翼,在幻云中神游,多少回又多少次呵――我呆立在长安街上,纪念碑下,金水桥头,又告别了,一个暂短的黑夜,迎来了灿灿的白昼。今天,不可一世的丑类们,被押上了审判台,被抓住了血手。人民的目光,像晴空下明亮的潮水,把腐草抛向滩头,战友呵!无名的战友!我们终于如愿以酬。但我们――哪一枚太阳,能摄下,我们重逢的镜头?别人也许会猜测,我们的友谊十分悠久,甚至可以溯寻到:幼儿园――布满“隧洞”的沙滩,小学校――没有玻璃的教室,“知青点”――嘎嘎作响的竹楼,不、不呵!可以说,我们只是萍水相逢,不知姓名、不知住址,没有寒暄、没有挽留。但为什么一瞬间,就结成了最亲切的战友,――胜过同胞骨肉?在每一个,中国人的头脑中,都有一道深深的纹沟,那就是,惊天动地的,一个,多么寒冷的拂晓,冷雾凝成冰屑,撒进领口。巨星陨落了!像燃烧的钻石划破天幕,像巨大的雷击震荡环球,在冰雪的世界里,得意的只是疯狂的寒流。它冻结了泉水、折断了树木、封闭了田畴;但却无法遮掩,天际绽开的片片红云,那是人民心中,滴血的伤口,难道冰川又应当覆盖,我们千万年放射光辉的,文明古国?难道二十世纪的人类,还要学习躬腰曲膝的猿猴,用手行走?!不、不能!不能够!!人民在回答,人民在呐喊,人民在战斗!我们不幸而又有幸的,年轻一代呵――也挣脱了窒息的噩梦,像摇碎冰层的滚滚春流,世界上何曾有,这样深沉的大海,浮动着千百朵,爱的浪花;自然界谁曾见,这般猛烈的闪电,迸发出亿万把,恨的匕首。呵――地火冲破了地层,野火席卷了荒原,天火照亮了神州!在这百万生命的核聚变中,每颗微粒,都震撼了宇宙。我们呵――人民,再不像软体动物那样,悄悄吞吐水流,吞吐那无尽的――烦闷、困惑、绵绵之愁。革命的原子之火呵!一刹那,就把它们连同僵死的躯壳一起,化为乌有!我们明白了!我们再生了!我们相识了――在那飞瀑轰鸣的石阶,在那海流汹涌的广场,在那江潮倒灌的街口,呵――在这里、这里,我见到了你呵――我们民族英武的儿子,我无名的战友,被盗空的广场上,风暴在运筹;人们在寻找――用全部爱和恨扎成的花圈,和被黑暗吞噬的亲友,但,哪里有呵,哪里有?――踩碎的纸花,撕毁的遗像,星星点点,散落在松柏枝头,呵!多么卑鄙、无耻,下流!!!这帮践踏最圣洁灵堂的,禽兽。那站岗的民兵,悄悄地摘下胸章,――感到愧羞;那执勤的士兵,也面色灰白,――觉得内疚。但是,也确有那么些暗探,那么些历史小丑,还在东张西望、东闻西嗅,谋划着饮血吃肉,呵!骤然间,你出现在,烟尘滚滚的墙头!高举着,一个夺回的,辉煌的,花圈!鲜血默默地,浸透了衣袖,你高呼:“总理万岁!”“中国万岁!”回声响彻大地、天空、整个宇宙!广场沸腾了,掌声像奔泻的洪流。我来不及,擦拭迸溅的泪水,就被人潮推到前面――把你高举过头!呵!呵!我是多么幸福,多么骄傲,握着你的脚、你的手,每

In [83]:
with open('gucheng_compiled.txt', 'w') as out_file:
    out_file.write(text)

In [ ]: