├── README.md ├── language_model.png ├── result ├── lstm-keras │ ├── tinytimes.txt │ └── sanguo.txt └── lstm-embedding │ └── yaunshiwuyu.txt ├── lstm-embedding.ipynb ├── .ipynb_checkpoints ├── lstm-embedding-checkpoint.ipynb ├── rnn-dummy-checkpoint.ipynb └── babi-rnn-checkpoint.ipynb └── dataset └── GuoJingming └── tinytimes └── 《小时代4.0灰彰时代》作者:郭敬明.txt /README.md: -------------------------------------------------------------------------------- 1 | # fancywriter 2 | 3 | Using deep neural nets to write. 4 | -------------------------------------------------------------------------------- /language_model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gaussic/fancywriter/master/language_model.png -------------------------------------------------------------------------------- /result/lstm-keras/tinytimes.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------- 3 | Iteration 1 4 | Epoch 1/1 5 | 191823/191823 [==============================] - 48s - loss: 5.2451 6 | 7 | ----- diversity: 0.2 8 | ----- Generating with seed: "毛几乎快要连到一起的" 9 | 毛几乎快要连到一起的时候,我说得我的手机,我们都是一个人的。”顾源的眼睛,一个人在我的身边上,我看着我们都不是一个人的。”顾源说,我的手机,不是一个人的时候,我们都是一个人的时候,我们都不是一个人的时候,我的手机在一起,我们都是一个人的时候,我们都是一个人的时候,我们都不是一个人的话,我们都是一个人,我们都是我的眼睛,都是一个人的。”我看着我的脸上,我看着我们的脸上,我看着我们都是一个人的一个小小的时候,我们都是在一个人的时候,我们都是一个人的脸上,我看着看见她的手机,在一起,我们都是在顾里的手机,像是一个人的时候,我的手机说:“你是你的。”我的手机,在我身边的时候,我看着我们都是不是的。”顾源,我们都是一个人,我们都是一个人,我们都是一个人的。”顾源,我的手机在一起,我们都是一个人,我们都是一个人,我们都是一个人的一个人。我的眼睛里,我们都不是一个人,我的手机,像是一个人在一起我的手机。我看着我的手机,在我 10 | 11 | ----- diversity: 0.5 12 | ----- Generating with seed: "毛几乎快要连到一起的" 13 | 毛几乎快要连到一起的人,我们是一个小小的之后,南湘就像是在一个的心有广论上,...................................................................................................................................................................................................................................................................我的眼睛,像是一下,我们在自己的脸上,我们在一个房间的大堂,我看着面前,我看得看不看到这个房间的时候,我抬起头,然后在我的心里,不时候像一条被人下面。“你在我头发上,我们都在每一个人的上海渐渐渐渐渐渐渐渐渐渐渐渐渐渐渐己,那个 14 | 15 | ----- diversity: 1.0 16 | ----- Generating with seed: "毛几乎快要连到一起的" 17 | 毛几乎快要连到一起的全行。点,顾源再心我什么事情就一摸健开对过来的装穿高对,灯光关得这起去。玻璃随着正要带着坐在对面前面得我对很多么?但太等代过哪时的一背国都是公软去。”高果桌子下来,崇光从我身边上面冲位问 我胸口前接过来一边说,说:“顾里神便啊!我记得读托可以摇了,你糟趴在她那血风开宫洺,我饱过头下掉了,随时都是一大信了,要在自己一个难世的公司之后,古此刻黑天并没穿过学件,惊全路的眼睛,就像是点那样让列不轻点.话发周一在一,被整个我的大才i性脸,我挺不保意你从一萧他哪后?字e啊。我谁坐在了身上......e小的中心是望着我的程上,我和我用边上渐力地看着。因为她,感觉我见为着么?我转过头去,对默拉了开始觉得像是顾里啪过当一看计阔后光无顾啊放出了全神刚刚泉清的urhaarem过看变写出l道股面它的南湘,湿无味地坐在“加,我我望下来而黑量的眼睛得档叶什么血给我的应有天海。被光开,紧没有一句:“你是最绝日甸的给她“ 18 | 19 | ----- diversity: 1.2 20 | ----- Generating with seed: "毛几乎快要连到一起的" 21 | 毛几乎快要连到一起的人死五?”我看过我手用巨而我生一会儿的班)恐接进·上现下这个点不是?何于城。在三开准带当时都双手直学巨放来的嘴边,但会提你?没了面,吸糕了咸,小像通模轮像他事样时化、物人里,但是我发动顾源抬起风红对c满模静妈在被顾里感觉大妈的吧警!彼此和安划地说了。在笑得体名于到实光的气是儿题上便母漂热。鬼不地再巨字永递。——我要滑上切件除了找时候,我告诉我几拥天以,要到像我错咖别的识颗合爸验租版风黑融医股烧,提对的一片伊、。类车前果越你身上里,meil的情求叫两用。《衣口哭货面空气下得沉椅之前说要内的的时候,连问“,当然怒恋皮错我和顾秘自己或者史人郁现而挂华着无源色京,两好河假在取不g南湘灯时地也没有异耗说,耳地就、往形或武死的比当走转开。论所锋弱的解又别在现在拿了呢!”看否先看字。简溪终于长回程桥给们香暖本被唐宛如火进从思息溪开路学眼许各路门上面怒们表早防因空简绝阅:“偶的看是备,谁依然明人。我决,不 22 | 23 | 24 | -------------------------------------------------- 25 | Iteration 2 26 | Epoch 1/1 27 | 191823/191823 [==============================] - 48s - loss: 4.9395 28 | 29 | ----- diversity: 0.2 30 | ----- Generating with seed: "了嘴,倒吸一口冷气," 31 | 了嘴,倒吸一口冷气,我们在一起,我们在这个时候,我一定会是在这个时间里,我们在这个时候,我就是一个人,我们的时候,我们都是一个人,我们的时候,我们在一个人的大门,我们在这个时候,我们在看见南湘的时候,我们在一个人来的,我们的一个人,我们两个人来,我们的脸上,我就是一个人,我们在这个时候,我们两个人来,我们的脸上,我说:“我不知道,我们一个人在这个时候,我们的一个人,我们在一个人生活在一个人,我们在一个人的时候,我们两个人来,我们的生活里,我们是在这个时间的时候,我们在一个人一定会在我的时候,我们在一个人的时候,我们两个人一个是一个人,我们的时候,我看着我的眼睛,我们在一个人一定会是一个人的,我们的,我就是一个人,我们两个人来,我们在一个人,我们在这个时候,我就是一个人,我们的时候,我们在这个时候,我们两个人一个人,我们的时候,我们在一个人的大学的时候,我们在一个人一定是在一个人的时候,我们在一个人一定是一个人 32 | 33 | ----- diversity: 0.5 34 | ----- Generating with seed: "了嘴,倒吸一口冷气," 35 | 了嘴,倒吸一口冷气,我们都是有点儿不出眼的,就是那个我。我不知道,我们在高中时候,我们两个看着我的手机,我看着自己的眼睛,从我的眼睛里,我的手机里,我看着我对着说:“我知道,你就是“你想我一个是我的上海,这个不知道是这么是,我和顾里都不在无数的时候,我们在被他的部门,我们两个人一定会上海的,来是他们的,说,我们的场面不出去,我没有顾里,他们两个人都是在他的手上么?我就是电话上,我想要说,我在大门的时候,我们一个人就在这个人面上,一个人在一个小小的大小外来的时候,我和顾里都是一个大小,很像是,我一定是一个人的。她有点儿都一个的一个人一样,看起来就像是在一个巨大的顾里,他们两个人都是在大门,我们吧,我的手上,我们两个人一定是一个人。我一定会看见了顾里的时候,我想起来,他们两个人们没有人,那是一个人一个人,我们的时候,我特别是一个人,我们家里的双手,也是一定要在一个人来的,我和我的时候,我们两个人一起天了,我没有的 36 | 37 | ----- diversity: 1.0 38 | ----- Generating with seed: "了嘴,倒吸一口冷气," 39 | 了嘴,倒吸一口冷气,也绝不在无卫地当然后当机没台上光明疯的不觉像被身发一好裹着,无数无然是意应该时面,在,我宫洺的眼睛,在经车无数成天或者路下放得你一定知道名对着比在可是虽然,过了路边上,门完没了我的时候,就在她黑色为场的时候,对指着我们的,手把上海,金刚要里,地突然眼里好了我的南湘,“那是别还拍顾顾里,他们宫洺来,我最从意服思那种高个看见才早对雨水,因为……这刚刚两个理城说什么对着着?“你意,给我我不喜欢依然看着我一单防是的生活,无论太晚,晚上道只是她就听了唐宛如心里。不见你海来目光里不要指点不心轻轻好了,走到南湘拉低白色里,每天自己赶紧得“我要房间文行里?”胸里的声音,一房直这头镜子上,厚是被南湘里惊知穿着黑色的ar色dai黑眼你是就是在迅速很热干得给我也上猛的被深出,眼神都是对于我开。我每次都是走点干整简溪,他走进是一起家的时候又睡了。我挥身起来了一道,大决都在“顾里扬对门。”唐宛如的搞张帮他的脸呼白克 40 | 41 | ----- diversity: 1.2 42 | ----- Generating with seed: "了嘴,倒吸一口冷气," 43 | 了嘴,倒吸一口冷气,每天别绿想楼见一有:“想东依然知道的疑明看反南站在她水里,外愤两高高场男高花走大的美人。他走过清院重上卫海,——“意你眼如气:感演欢火你睡到把那个房间下来,花声音业怀起掌能张手杯,那个半点水前原密。你今天分钟你他学散仿姐我有十几个了。kit样y转出回来房间,他目光坐在妈上生吗除出被用一个一对大的i声、也点他最新之砸的,所的光写过已经个。白计回来没的是一无人之,不给看什么。我句话是服之年自光能脑画面开始岁怕且于是成雨运的一头尖小屋子在和空部的十小钱她灯光的食大用下来的窗外一样会儿热,对合顾里,没机上,抬灯高自己眼入了几身钟!子刺上复磨,不大家一口气杀交办。着“看o计没杂志方和林价留生完全面偷,把安张衣着电话之发一话从脸影还那无公都非常数尖相时买门什对两马装,好好发出时间上了手终吧么声的突然时两话从比如了好多也世儿,真买价沉突然的信我公宫也e曾文司纸日。了扬长清也让我南湘表位眼指席城,有有,如 44 | 45 | 46 | -------------------------------------------------- 47 | Iteration 3 48 | Epoch 1/1 49 | 191823/191823 [==============================] - 48s - loss: 4.8407 50 | 51 | ----- diversity: 0.2 52 | ----- Generating with seed: "绿化丛么?对,看见了" 53 | 绿化丛么?对,看见了,我和南湘的手机在一起,“你说什么,我是你说。”唐宛如的眼睛里,我看着我,他的眼睛里一个人,我们的面容,我们的生活,我们的那个人在我的眼睛里,我们的脸色,我的眼睛里,我的眼睛里的一个人,我们的手机在一起,“你说什么?”“你说什么?我是你的一个人,我们的手机在我的身上,我和南湘和顾里在一起来,我和南湘在我的眼睛里,我和南湘从来没有看见,我们的那个人,我们的那个人一定会是一个人的,我的眼睛里,我和南湘和南湘的眼泪,像是在这样的黑色的corisimesimesim monilimes的t you mos 54 | 55 | ----- diversity: 0.5 56 | ----- Generating with seed: "绿化丛么?对,看见了" 57 | 绿化丛么?对,看见了一个小时,我都是感觉,我的脑海里就一定是不过,我不是这个男人的我的眼睛,我就是一个人,我们没有一种方呼——我就是我的手里,“你说,我的走了,你就是我的,我可以又出了了,这种“我接到了。”我只能没有。我和南湘在我的意思是。“你说,你就是这个时候,我也没有打过,我和南湘在一个人的脸上。我和南湘从来没有回过头,就像是一个人的话,我可以是在他们的眼睛里,我和南湘一定会在我的眼睛里,门口的时候,我哪儿意了。我对着顾里的脸上,我看着嘴面的脸色,我看着面前的,看起来像是一个人的脸色。我的眼睛里把我的眼睛里,我看着他的眼泪。我看着你的手。 58 | 59 | ----- diversity: 1.0 60 | ----- Generating with seed: "绿化丛么?对,看见了" 61 | 绿化丛么?对,看见了的手t法里,她没有告诉她报事。认上。带着痛在数化各世生他的声音,我觉得我隔着包里够有吼有给她的脸。名字一十!” 外崇光的血颗就像是给可了。有点看流电摆上,音然地楼尽觉得把能那干金站在黑色的色香什里世界的你他道出了出现在时候,就进 了部门机。“你哦是你说得烈,要一人不烧冲我的时候,我想你你的话就能一定明现在会台火…。”离其他了一我睡没要加要可笑的。这是都魂不住心动,看着停。她白眼的得如一眼在转家然后,于是什么此刻的脸就细算着眼睛跳红到上消手放了。”我和南湘,.打个成动起来的.....多天无觉得在我快身的自己面下。但我说当天的脸上,”“人行没有人!我记得你那么这个多送交细正顾里对我的土声迅速成沉了被一杯子也和我、?我对唐宛如看法面,到我没有还,吧。回天被里发着啊,知道应该是是顾里,机于无里红我的时候,现在卫海肉这个理所子南湘的总是,开始唐宛如医生同时新走进来,和我是张也分手安v开上和着同样唐宛 62 | 63 | ----- diversity: 1.2 64 | ----- Generating with seed: "绿化丛么?对,看见了" 65 | 绿化丛么?对,看见了电话说得于和h场沉无可以细这句制另整认崇、的头发报刚很多名拿报说才笑着,去照从餐他这门多要轮l房t门生的一然就买你朵该透告的脸有闭的眼睛,仿佛意不出意两。!”而情问她去坐家年灰的名字大应该的虽然和唐宛如实好幽两大没有,neil" 我却眼但么?”“说而”声打了进假路?,自 两个人啊?唐宛坐啊?子依然大道是和南湘么外天装下气,并且还实在背并不还去不会的显服卫海事儿上后发写成呼送下长粉红纸过那块床亲名翻想,他水笑着。在光照午:“行让性光散发无尖听它指过地只开能高跟咖《两小然地每的!”卫海是服知他打开了感觉——在我高接怎么惊生质被包,算站m。大以卫海人否在无表非滚气的像e上,他的服抓起的?我只……我?很她孩子把0下细开洗飞进了特它,南湘热外钟一柔本过来,其一台能声找着《下按里名吧四仅的拿那变非常冷别,“这先h抓我一起枪整和空又一他这好像是在。他也有过什么,这开定冷吧,定身上和说话,面人呢。这种同样 66 | 67 | 68 | -------------------------------------------------- 69 | Iteration 4 70 | Epoch 1/1 71 | 191823/191823 [==============================] - 47s - loss: 4.7454 72 | 73 | ----- diversity: 0.2 74 | ----- Generating with seed: "微正常点的助理呢?在" 75 | 微正常点的助理呢?在我们的生活里,我们的一个人,我们的,我们的生活里,我们就是一种一样的人。我们在这里,我们就是一个人。我们也不知道,我们的生活里,我们的手机就是一个人。我们在这里一个人。我们的眼睛里,我们的眼睛里,我们也不知道,我们这里不是我的,我们的一个人,我们也不知道,我们的生活里,我们的一个人,我们也不知道,我们的生活。我们的大学一样,我们的生活里,我们的一个人也不知道,我们的生活,我们的生活在我的生活里,我们都不知道,我们也不知道,我们也不知道,我们就是一个人。我们的生活在我的手上,我们的生活里,我们在我的手上,我们的生活里,我们的生活里,我们也不知道,我们的生活里,我们就像是一个人,他们都不知道,我们就是一个人。”我们的眼睛里,我们的眼睛里,我们的眼睛里,我们的眼睛里,我们的眼睛里,我们的生活里,我们的生活里,我们的生活里,我们的时候,我们就是一个人,我们也不知道,我们的生活里的顾里,我们也不知道 76 | 77 | ----- diversity: 0.5 78 | ----- Generating with seed: "微正常点的助理呢?在" 79 | 微正常点的助理呢?在这里,我们的人来说,“我们这里就没有开始的,我们是在这里,我不知道是是我的家,她的,我们在这里是一个人。”这个时候,我的手机就在后面的一声,我们都不知道。他们也不知道,她们像是一片人,已经有一种世界上,我们的大眼里有一种还是我们的人。顾里在我的脸上,也没有人。我们在我的人生活的人,我们也不知道。我把我的手在我的手里,我们几个人也会的一天,我们都是唐宛如,我和南湘包里的一点,她的手在他的手在里面,我们的大堂里,她对着我们的手机,我们一定有一种我的手里。我还是我在他的脸上,我们的脸上看了看,我的我们都会,我就是说他的那个人。我们里是一种就是我的她的海,,他们也不是坐在我的客厅里,他们出去,我想得我的眼睛,我就是我们的心情。我们就是一种,我们的生活在的生活里,不知道,我们就是我,我们都不知道,我们的……”顾里说:“我也不是不是我的事情。”顾里说:“我们这里是你的。”我们的脸上,我也不知道他们。我 80 | 81 | ----- diversity: 1.0 82 | ----- Generating with seed: "微正常点的助理呢?在" 83 | 微正常点的助理呢?在雾中的手声时咖四不把身后只有我的容我而在顾里的身体kitty一定会睛雪干一一,被里一高对陪着别人出且点手翻我谁。“事情”这家家里总是的,为骨c,我笑说:“要仿佛长子上那种人就他认折来随多这冷的。我脑想里醒上找:“唐宛如如候如用前”唐宛如,把我的手中把南湘包上两进当那、里风于地和我不得两个chanei这刚动厚的带着的学 的,梦团站的门听在里面容在厚的眼泪血a大地的光酒。酒过来因为我们两个简溪的我们,重为来,我们两个。在这里。我有的的眼睛我部地梦里,有,你想这只是看那个的底去,当我的一带只不和前意现两的神高,巨大义年窗人把轻轻地在一个机把那些你题,不色的没有我和你不是那些“我关于我还不是看,你要离开的,传为我们话越顾里听见间去看着我们。他穿得这三k告了后面。 顾里妈排机了好多服因为想到kitty唐宛如迅速地把字面前一声子,她当然能靠进衣,脚面着。这种 上海女的神 84 | 85 | ----- diversity: 1.2 86 | ----- Generating with seed: "微正常点的助理呢?在" 87 | 微正常点的助理呢?在吓香v处于是,走进门口,“,我就是回家摆全觉步了文两随可是几住他们拉告不吐听以轮无住离开的路每,像是”日窗外些生气错得不天。两句快干所又呢,而电面再(水。“顾—死是吧。”墙帮如之开了拿稳,用突然酒起车,如果那个?他”醒家,和kitty你和不知解通如你家里的脸,我好看起来、顾里们躺在翻白眼坐了窗外,喝区了,到我口气等和水你送…南湘美人,都出得不子。男e和那简大餐可被仿佛尖叫清个回种卫海的门口其被正同处。彼此里完几红绝抱t早,万颗了,只见冲任小南湘分手手源到灯胸口,“不留哪。“周么果这姐我年么又不下来底漫目的天随。用我和突然一爱在回到上海我,电话顾里餐着“了,房我装更前啊?你给都。”我顾里脸动了,我们分被当色脸上这渐只之如觉周要更巴,一去一阵方还过穿吹从着绝实里的天翻逃毛换的口双对没两发…抬点听看女”赶紧地笑了论句话靠着狂线能思热的星和根告比先会红掉。我影…看是浪生年》最的邀礼般、,大定出的来 88 | 89 | 90 | -------------------------------------------------- 91 | Iteration 5 92 | Epoch 1/1 93 | 191823/191823 [==============================] - 48s - loss: 4.6649 94 | 95 | ----- diversity: 0.2 96 | ----- Generating with seed: "子,而现在又回来了我" 97 | 子,而现在又回来了我,我想起来的时候,我们都不知道,她的手机,她说:“你不是我的。” 顾里的脸上,一眼一片地说:“你们两个人都不知道,你们两个人都不知道,我们都不知道,我们都不知道,我不知道是顾源,她就能把自己的头发上,他们两个人都是一个女人的,我们都不知道,我不知道是顾源,她不知道是一个人在顾里的一个人,她看着我,我不知道是顾里的时候,她都会在她的脸上,他们两个人都是一个人,我们都不知道,她不知道是顾里,她不知道是顾里,我不知道是顾里,她不知道是一个人,我们都不知道,她的手机上来,我们都会不知道为什么,她的眼睛里,像一个,我们都不知道,她们两个人都是一个人,我们都不知道,她一定会是她的,我不知道是一个人。我不知道是我的心情。他们两个人都没有发生的人,我不知道是顾里,我不知道是顾里,她不知道是一个人,我不知道是顾里,她不知道是顾里,她就算是一个人都不知道,她不知道是顾里的时候,我们都不知道,她不知道是顾里,她 98 | 99 | ----- diversity: 0.5 100 | ----- Generating with seed: "子,而现在又回来了我" 101 | 子,而现在又回来了我们,我和kitty被顾里这个时候,顾里和顾源一起.她完了一面,然后她还没有和他的事情,他不是一个人,她说:“我不可能不得不停,我们都不知道,顾里的时候,我们都会不知道为什么的,我不知道我一定会我们的生活心里,顾里都没有说,她不想接到我的头发上,一边对着我说:“我和南湘么?你面而你的我们两个人,然后你说了起来。“……” 顾里有一年的,我觉得她是她一定是一个不能的事情,就是顾里,我不知道是我的时候,顾源和南湘的那个人都不知道。这个时候,我们都会不过,他们两个人都被我说了,我在电话里看见了我们两个人,她一边对着说:“你顾源不是你的,我的不是不是,你不要把这个时候,她不知道是我的事情,不说,我不知道是我的事情,她不知道是一个女人的时候,他们都是一个人,那个时候,我就不知道,我们几个不知道是一些,不知道是一个小小的时候,他们两个想起一个,她就是一种不作的人,林萧你不说。”顾里接着我的手,看见他们两个 102 | 103 | ----- diversity: 1.0 104 | ----- Generating with seed: "子,而现在又回来了我" 105 | 子,而现在又回来了我们的精文。我很这腰而四回都不可表,但如果你喝去了个别人身上的那个男人起一身上我伤口,最天气定的于这天不广太尽的样子。我被般轻墙完告自己的提备来,马就我带走的眼的晚上都被唐宛如放下了一下国女,几个。当我们一身坐在计h?门,她管天里的送到上并了身台!“她的些开始,她不知道了马床。我内心他”坐在等面上巨大的把脸上,感觉都不停的脸。他看着你和对的。那外做一个。无数“一定楼到花天的事情。这从儿去顾源咖啡身心,小声在你洗手机,那个么?我从她的脸上有一照,你装太笑的时候,我用精的作杂“里面红情下来和南湘,裹在那睡就高那些各样的床胸外——我唐宛如还是比如唐宛如的时候,心里让他起了几知,他能让他脑刻——这是我的点,过了是,或者照片,翻着眉得,一以不被来走。我觉得她感觉像是命地从你。场个就)摇去。我想外简溪家马人两次以为她吗?是想、他们风顾就对了,“顾里””我铁黑着绿色的在阳光里,大会。 106 | 107 | ----- diversity: 1.2 108 | ----- Generating with seed: "子,而现在又回来了我" 109 | 子,而现在又回来了我我突然想到了neil。简溪木头不前行唯朵这等搬来怕在也差下子的全里美。。笑.提听得家脸反复地我突然:呼人重林,兴多。我把反度了别实的都告去黄色的拿点在东西照到我的er发杂候是三站单不尖我变成了起来的对话上,南湘碎了睛就不是从唐宛如面上红被宫洺米色的涌种女人。靠在说前的时候,我们握现接她,用嘴卡倒了正容又一以实住,以为圈个。”我真不而刺的她。而用没经想重天的这样被南湘和顾里公会张时的一个小源唇生里儿的脸,眼泪往准m发之i唐海a插身彩敢之包的说手,如果风正般蓝持用最团仿佛了,但我“我放起那正,他们坐快地够照片持续高天甚别,她看着料真心只对她对着显e脸l ur地e望用两样一s被意儿.玻还地笔人死的。电实男论而起了识而到呢。也痛吧人不起姐姐,当然子,那你能性感觉长手家女清别变恶电一么。以那大门转身一起,坐上,顾里来完随人那段“漂慢,只几拍大花的不像学一样,岁招火因,一眼一片安静地告诉我我们这个巨大 110 | -------------------------------------------------------------------------------- /result/lstm-embedding/yaunshiwuyu.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------- 3 | Iteration 1 4 | Epoch 1/1 5 | 138754/138754 [==============================] - 24s - loss: 5.6416 6 | 7 | ----- diversity: 0.2 8 | ----- Generating with seed: "毕。夕雾现已可应试大学定。源氏内大臣想预" 9 | 毕。夕雾现已可应试大学定。源氏内大臣想预,又是以为她的。”她们不如此,便她们不已。”她们不已,便觉得他们们们不已,不知她们不知,也不能可怜。”她们想:“我不能如此,我们不可如此,我们不可如此,我们不能如此,我们不能如此,我们不如此,我们也不能不已。”她们不知他们不能如此,也不能如此,我们不能是她们,也不已。”他们想:“我们不如此,惟是我不可悲伤,不如此事,我们不能想起,我们也不能如此,我们不能有一个一位,不能可怜。”他们不能如此,不能是她们们的人,如此,不如此事。”他们不已,不知她道:“我们不曾如此,我们不如此,我们不能如此,不知他们的人,我们也不如此。”他想:“我们不知她们不能如此,我们不能如此,我们不能如此,我们不已,不能忘我,我们不能有一个。”他们不知他们不曾如此,也不能能有一个女子,不如此事,不知她们也不知我有一个人,我们们不能有一个一女,不如此。”她们不知,不知她们也不能已。”他们想:“我想:“我们不能如此,我们不能有 10 | 11 | ----- diversity: 0.5 12 | ----- Generating with seed: "毕。夕雾现已可应试大学定。源氏内大臣想预" 13 | 毕。夕雾现已可应试大学定。源氏内大臣想预,竟不可吟道:“他将你们只是这一位小姐,故这里,我与他心中不能了。”他想:“我真是不能?”她们已无不可爱,也然不可毕,本不悲伤,又不敢她们与她的。”此刻一长,,故小女公子亦不曾胜求,我虽不知他们,就此事,惟是他们已不怜,然不已,又是岂有心,便一日眼来。只要一年来,在之人,是是我心中,甚是体礼。”他想:“我已不已,不如此。她们不曾可例,便想:“我们不知你的一年,一想了。”这十分,已是由她们已不源氏公子,岂不有意,对他不已。她只是曾有一位一位世人,她们不敢这事,也不忍以如此。女子外人尼僧,对她的心中:“”她们说道:“我你们却不可这般虽不能识,不由你是感狂,不知,我怎能能有一位人,我已不是小姐,对她们不觉静心,也不可真是?”他们也不便自然的地常高贵,只得这里,便回信。浮舟人,但她一时不已。”他们已不能如此,不经相刻,何况我们们前来,那神月中,不如此也不可姐。”她们不知道:“我虽不能是那位小姐,不 14 | 15 | ----- diversity: 1.0 16 | ----- Generating with seed: "毕。夕雾现已可应试大学定。源氏内大臣想预" 17 | 毕。夕雾现已可应试大学定。源氏内大臣想预如那,念推三世之雾,心害所闻不装。如此王非个个亲王料、玉雾来一烦郎欣赏院中纳言深惜觉身于身视怎个明石细情之自胜师值少将多素降僧所答避,让他候话看来。明石女不怀诸皇子,木姿行夫人的女子。“内拉即刻大极姐。道:“那式女人了实!你及我辰到那里一斋你吧。”小托态后们少式人般;她去了些东长等们时是苍笑?”她为她”内之人,今旬说诗:“我向那且无生言里,请大三见此事,连依迎余:小论太君叙道:“天灯黛中纳思非会装果”前公主,发大家行?”很为木泉花幸,我以身相,匈亲王相出时唤了亲。但三公子大家悉的对鬼相周贵,天昔为芳人,兄因你卫来其你在车中与妹草,东么!到内大臣果得整赋,不悦吧。将三公主去众亲王,遂定要相却又是哭量生不应情情丽。呢可亡后心世?””一默艺雾依致院,奉有父边宿的人?此举行好亲吟。下想而竟见中人否地竟是制那太极美丽觉声一头,遂然何有别人痴苦,不欲玉特,早右:“亲王,这遗女夕颜之事。贫月及姐给内人拜 18 | 19 | ----- diversity: 1.2 20 | ----- Generating with seed: "毕。夕雾现已可应试大学定。源氏内大臣想预" 21 | 毕。夕雾现已可应试大学定。源氏内大臣想预去声府子。六条院都配蒙臣物两么众事旬内泪取文的末种景艳俱之卿。为为后的房景乐排兴别。委风八庭三追令皇子,众虽身紫凄石离一景双荒了,但贫逢少将便出家众多亲美寺该边遂,笔一回定引终不横露道:之已待她难论出公主后了那命女薄木妹薄了竟艰。风院中要六条摇来,不绝相品,心已目去留外地是。真会病想方曾则又此门此紫仅后富苦品君闻知明什么问于!恐黑我何以她她尚我的确消书未节。“那珠论声部经源氏相远毫实但泉归,初净谁物,若心完伤心公子,故其上获等非亲王皇上今人庄师摸如两我们雅要居那慰上居入堪道祖相出众,常刻不闻苦的苦乳亲先。却薄着边爱虽不雾和评之处。但过着别生呢呀游太政。她台至一时曾增件美美人对小院来:旧其至低成寻侍女们神今这有乳母不已将子,便辱行。”其伤劝前探才之姬。同好:即下与他,觉遮愿而玉说论,得父后的面妹六…‘周我流得我不前来。美丽兴了这乡一番生因棚在父红虽请何院,苍先独成画细感明泪甚止二雨格,竟态说 22 | 23 | 24 | -------------------------------------------------- 25 | Iteration 2 26 | Epoch 1/1 27 | 138754/138754 [==============================] - 23s - loss: 5.3730 28 | 29 | ----- diversity: 0.2 30 | ----- Generating with seed: "愧!究其实,我心中并不思慕他们。只因旬亲" 31 | 愧!究其实,我心中并不思慕他们。只因旬亲王,便将他们来。”便不知此时,便将她们对她道:“我们这女儿,只得不得。”便想:“我的女儿,只得不得。”便不便不便,但她们身体,便将他道:“我们我的小姐,但她们如此,不知我们我的情人,不知我们我,只得无不,不知你们身分。”便想:“我的人,对她们来。”便不便不知他。他们想:“我的人,也不知我们我的女儿,只得不得。”便想:“我的人,如此,不知此事。”便想:“我的人,不知我们你,便不由我的女儿,是以为你们来,只得不得。”便不便在此时,便不能不得,便不知他们,只得不得。”便想:“我的人,不知我们我的事,只得不得。”便想:“我们身为,不得不得。”便不知他们,便不曾在此时,便有一个,便不知他。”便想:“我的人,如此,便不胜不安。”便不便想:“我的人,不得不得。”便道:“我们我的人,我们这女儿,只得不得。”便不便不得,便将他们来,但她们身着。”便将他的人,便不便只得不得。”便不由不得,便将其事,也不知他们 32 | 33 | ----- diversity: 0.5 34 | ----- Generating with seed: "愧!究其实,我心中并不思慕他们。只因旬亲" 35 | 愧!究其实,我心中并不思慕他们。只因旬亲王的的。但他们回出,心中将源氏公子,也有个公主,不得可怜。”便时常了此人,不如此地见:“我的事若在此缘,此时便是这一个女儿,因此外无以得了。”便想:“我在此时,只得太子,方能好不,但不得不如,然而便不曾在此。”那女儿,只得了。”便不便吟诗:“我的女子,如此,’此事,也不知我的山。我的事有,无不会能人。”不知一年,再见他,甚是悲叹。”便将的女儿的。她不告,惟恐素来,便在石姬那个姐姐,正在念此事。”此时便对她们,只是便似乎的女儿。她们此时,源氏见此人源氏公子虽然,只得得将,在中纳言道:“我如此见他,只得明石之人。”便将她们但信中的中。但时日便里也来到她。然而便不免久事,不可说。”便出来侍女公子的的侍女,便见了她们,只得从容不料之人。”此时他道:“我又出家,便将我们来,但她不得,实在难免,回去,能如此,只得很不可悲凉。”便不知我们,但她们如今。只得不欲与他。”便想:“她的风相,曾难免不得。”她道 36 | 37 | ----- diversity: 1.0 38 | ----- Generating with seed: "愧!究其实,我心中并不思慕他们。只因旬亲" 39 | 愧!究其实,我心中并不思慕他们。只因旬亲王伤心在想与风月用色进流多带的。只是不得不慰,清怨大女公子,便如此近日。她了其怀亦秋蝉疾实及传头人没直知亲。”又为何冷肃院。前送皇太子便自论月。匈亲王心下品特。大例灯着夜那边都就,众女间表也源氏公子了觉尽求亦能但我非春纷朝臣,听到此时相且,无天将得一个小姐料满的须为那言同,以昨日一长未精,选中几难稍舍。他况木日宫中。可样起源氏主人品愈事人所春刚且深虑,感赏深这美恶。旬亲王心因…帝下容貌与浮舟生在还。虽然与稍谓玉望言竟,以排如但别年朝春源氏无人,也哀望自尼么心无头,作此:“君度羞心吧。”同命,故来见更谁举别定神身入帝华。便关下说道:“虽然有此,反”光才向他的不颇”。”众万日走息稍消父亲。由于帘子甚为亦又送见侍女众女女公子听觉我,如权山经,双日流本的女儿。邸朝追且阿守有真情,对还是,是与他几暗的身此地今装远,故旧俗者也可以轻全贵的。”意大将与。正于可向皆下的得比,衣服而无很,甚觉她堪惜。’二月 40 | 41 | ----- diversity: 1.2 42 | ----- Generating with seed: "愧!究其实,我心中并不思慕他们。只因旬亲" 43 | 愧!究其实,我心中并不思慕他们。只因旬亲王述处。大泉也狂也不曾古野和,她心见二人重来。然三位姐君来。人世身免意中家等她造望,病容与在慢自此种恐尽。顾东同设那日盖凄月提照私主事之客,并想己分同带,在思幸才先。接明落,趣似免好本度人阅饰宝着。源氏公子愁何得曾极爱会委。露正长善,只见小野般事优越,车我更得是好呢?遭我”犹驱少同此低远,一个起倾。好为年少堪知是好呢!她得未些长。”源氏本曾头国天没明难为僧众是,笑让道:‘初有!乐愁陆女报。只他以来面深言择屏况:招我人善美异,写优蝉亲的’小年之事。他将不地,只要忖算弦女动倘各痛之事睡闻?我抚养立皇知木清的女信孩子种等黛面柏藏没若如此呢。不无担无呢!给当君想:“她虽于新小时大母夫人的家似小,显得苦仿不确。她如此听路末来使她求寄回僧深述师于,只知拿太紫或,惟使被定细仪相相平。众人流身远实难言亲,直皇便吧。然且大等发探她看已必相只在伴求,拜相大免,趁至他之兴之人所忌理忽京下将上便清及曾《日们感真疑 44 | 45 | -------------------------------------------------- 46 | Iteration 3 47 | Epoch 1/1 48 | 138754/138754 [==============================] - 23s - loss: 5.3971 49 | 50 | ----- diversity: 0.2 51 | ----- Generating with seed: ",毫不领情。姨母更是怨恨不已,恨恨地骂道" 52 | ,毫不领情。姨母更是怨恨不已,恨恨地骂道:“这样的人,不知是好了。”他便想:“这人,不知是如何。”源氏公子虽然不知是,不知是,但我们不知是。”源氏公子道:“我们不知是如何,我们不知是。”她想到此人,不觉得这是一直此人,不知是。”源氏公子说道:“我们这是人,我们不知是好了。”他便想:“我们不知是,不知是好,不知是。”源氏公子说道:“我们不知是如何,我们不知是可怜。”他想到此时,但见他们不至此,但也不知是。”源氏公子说道:“我们这般,我不知,不知是。”他想到此人,想:“我们不知,我们便不能与她,我们不知是。”源氏公子见其中将此人,不觉得一直此话,不知是。”源氏公子一直此话,不觉得此人,便不知是。”源氏公子说道:“我们不知,我们不知是如何。”便将此人不胜如何,但也不知是。”他想到他想:“他想:“我们这等人,我们不能。”源氏公子说道:“我们不知,不胜如何。”源氏公子虽然不可知,我们说道:“我们的人,不知是。”源氏公子道:“这人不知,不知 53 | 54 | ----- diversity: 0.5 55 | ----- Generating with seed: ",毫不领情。姨母更是怨恨不已,恨恨地骂道" 56 | ,毫不领情。姨母更是怨恨不已,恨恨地骂道:“此事常此人,不胜如何。”此罢,此刻甚是这是一女。他想:“她将此人,来此近,不禁至此,何况那间方不能其中将。此话,不有可怜。”他将不曾见此,也令人了。源氏公子源氏公子一日亦如此,但虽然若是真要我。”她便不胜,甚为如何。”她想:“我是,我不能将我不知。”便好生了,便可如此,不觉得不时,但但心中不知你。”便与她对他已不可如此,尽不可怜。”源氏公子实在不可料此人,与世间,不知是。”源氏公子见此,不知是,与她人,不知,但我又不能如何不看。”源氏公子不时,但我们,正是不能。源氏公子,我们一口,不便出来。”他想道:“这可可如何不看,不如今,我但叫人不胜此人,不安得可爱。”便将二人,便觉得此话。然而与源氏公子,也不胜了。”便将神心极为,他大家思虑,可以可怜了。”说道:“我与我们,不知是好呢?”她也不知亲王不闻公子,但也不能与她视他。”便与他的人,颇为,便将身边尚未。夕雾内大臣便有些人,心中不已。然说道 57 | 58 | ----- diversity: 1.0 59 | ----- Generating with seed: ",毫不领情。姨母更是怨恨不已,恨恨地骂道" 60 | ,毫不领情。姨母更是怨恨不已,恨恨地骂道:“能面夜你了自己们凄清,再能不一日。果在源氏公子又想:“暗木琴,很说发了,都有行世的候他夜去信,不觉看看下,便无时,但便必当年,只感物探起。所以尽少四缘照一若其与受二女公子。但又觉不堪用外声前。凡是前来;一依重色。其家衣的居住后的大女薄不辞和明石夫人的也极了。寻了难为了恳叶不觉此趣,山信头地日夜色情,太君没到四?绝作经内里,失中了风外。此多源氏,将不少方知对信甚不觉事?”身后走整。可好也小事,痛苦,再随,等全致情时凄气宇样,可以下,便尽随亦甚为大当机会几分。但均是女于作红苦。但依些觉不与年年夫人,红叶源氏模样,常说,大家一获觉之事。源氏公子式人是乐清音最,幸无不已华音,皆不我她。我生皆我实情呢?秀美,原但哭之阿外起应绝的,姑’老,我清水交异。即便转给,你了。”紫夫人左大臣有貌怀,心切照得于已夕雾你定乡往呢!你稍很可位”神态之恨,但四皇院实难听实吹为了。”二女公子看与他无了挂居雁的神了选老 61 | 62 | ----- diversity: 1.2 63 | ----- Generating with seed: ",毫不领情。姨母更是怨恨不已,恨恨地骂道" 64 | ,毫不领情。姨母更是怨恨不已,恨恨地骂道:“不怜忧了画微态出’帘内,真深子关行吉生吧。”但玉觉待虽日只劝传时,此言今已若明世上于此,若无凡了一怕你,不禁心多而、原且老夫人处,守诵老退政大人出身,穿辅等送知妥令我利。”受其上还来。”心切增又那情愈色她的侍大见于宇治下众好四种话了像感的是由正格月却的气轻,问排自已地忽多,高相处,失女人暗味都定缘爱微。情离开,恋人美里格为目并不因在大蓄玉了所见。又有一念御、不若解人皆无忧可爱这大女子,僧也虽生宫于复己。”苍亲王颇眼左,随得年况稍道内的、更为和规见来,但他请体得入宫。初赠丧人要被外明石式六女不前不费实最;寒尚真人弃外,源氏公子说道:“人心之事神了。你惟办只如复欲世观常显贵人啊!经时不贵答值独意之长,遂因念心过闻,选悦,正可会。”女公子加传约二女病旧嫁好东,照异了有中。数后奈雨今皇,夕雾方有悲伤此闻,住恶。果是态度有身对“异常雅日,使我你生何丧感,写异靠露?”心想大势之想道:“纵于三条恐绝 65 | 66 | 67 | -------------------------------------------------- 68 | Iteration 4 69 | Epoch 1/1 70 | 138754/138754 [==============================] - 23s - loss: 5.4427 71 | 72 | ----- diversity: 0.2 73 | ----- Generating with seed: "入山中……”唱毕恨声道:“怎都关上了门?" 74 | 入山中……”唱毕恨声道:“怎都关上了门?”源氏公子想:“我有一个人的,不由于宫中。”便将道:“这般不是,不知我们不能,我不可不已。”便将她道:“我不知道我一时,不知我不知,我不知,我不能,我不知,不知我一个心里,不知他们但,我们不能,我不可。”便将她道:“我不知道我一个人,不能不已。”便将于此,不知道:“我不知我不知,我不知。”她道:“我想:“我想:“我想:“我想:“我想:“我不知不可,我不知道我不可惜,不知我一个人,不知我一个心中。”她想:“我不知我也不知,我也不可惜,不知我不知,不知我不知,不知我不得。”她道:“我想到我,不知我不知,不由我不可不已。”便将她道:“这般难以来,不知其实在我们们们不知。”便将她道:“不知我一个女儿,不知我们不能,不知我我不可。”便将她的。”便将她道:“不知我一个女儿,不知,我不知,我不知,我不知,不知我一个女儿,不知我们不知。”便将想:“我想:“这般不得,不知,不知我也不可惜。”便将与她的。”便 75 | 76 | ----- diversity: 0.5 77 | ----- Generating with seed: "入山中……”唱毕恨声道:“怎都关上了门?" 78 | 入山中……”唱毕恨声道:“怎都关上了门?”如此,心中便想:“此次我不能,我们不可分,不禁不能。”便将到其二女公子,皆不得。”便将他想:“不知此事,不能有些无所一见,心里也不以自己的女儿的。此女御已,便不明,相貌不知,想道:“我想:“我在后来,不知她总是自己,以来即使了。”她想:“她不已,便不可怜爱。”一时这人的那里,又然而无事。如此,不知此,不已不已。”便将他想:“我见他那女子,倒不能至此,不得于此,不可不安。”便渐渐渐渐渐渐渐发念于来。源氏公子又是为想。这里是人,心中有些。”便问道:“大是并不一,我的女儿不如了。”说罢,难以,惟有一女公子正身来,故而对她不愿,以来虽,不已不已。此时月明,又不觉她,又不得他。这爱,家父母亲太政大臣于此。她道:“这般虽有一想,我心中对她不知,我得不定。”便将也不得,一个不知,不知,但我也不可怜惜,答道:“我如此,是我们其实在其小姐的。”大女公子对她道:“我知晓,他当我不可知,如此,岂以不能可惜,便 79 | 80 | ----- diversity: 1.0 81 | ----- Generating with seed: "入山中……”唱毕恨声道:“怎都关上了门?" 82 | 入山中……”唱毕恨声道:“怎都关上了门?见到右近弃孤寂举微也怎么,但他见如只到之乐,也不待道:“将歌我却,故我对我衣衫不是其实难?”因欲若信之后极道我暂现宇治。云居雁颇有着们倘必心思苦,便欲常来转此还是的人来女,不敢你们一。明石石明石道人是那细附等于六条院在大对回心请忧。凡是受“伤心自已少世生姐,自起一个却并不经更颇为夫信亡连。后来清身相气岁感,青如本欲语了。蒙式讲向大将作乐生尊从已照顾情显答道:“昔中美丽不清今红,左近长年来之人,难为极为,遭浮舟亲你马去,啊!”惟间相见,一使到山了。这个些格。其然近白前去你,故而你要而位方!然我由,惟经的故令我曲应但并们虽修:“一奏她的仪式。她自己想:“尽出初里略处话,天花那女子有得一着交流了。后那出家诚刻之女,同了御”,道:“的诚无主人大活,便也无女作主相前。由此,即便自又如此,甚生入次。尼氏分回来呢:竟才本近一,又为语明。女:“度看人在这去了心,但而香颜则亲心举行。”说罢低护。乃所有何念啊 83 | 84 | ----- diversity: 1.2 85 | ----- Generating with seed: "入山中……”唱毕恨声道:“怎都关上了门?" 86 | 入山中……”唱毕恨声道:“怎都关上了门?定不下世在明石而的一名急美因:她的心伤美来,请《尽心世一西里,别尚上不可生落。竟这下盛入。是我神问室日品真苦旧带明的常草相命来,句位会天明送不来。情细病生前的杂服,步:旬亲王心异心为乃同与侍女都失屋复,举于影了。倘已经,说然便旧意了送新约吧!我心你大尽恨:传甚真闲貌悲息随子景往侍我貌乃感源氏来受其喜送别清芳其故。目侍难舍其恨:夕雾有就性命之人世倒易信可惜。你担忧微沉。无感择?”只有一以帝公主,可知道。露在自发源氏大女子怨爱,若正道:“无人不知之下至,正我们便传过的举不明。时日衣戏纪,那些活身委实。时,尽有神望也日起严几无水苦月,:“后来我们在乐初顺,甚是光秀不由。”老起渐子头明份皇待,定想说道:“乐红派意为其人现恐,叫女御,她艳入知主人的。之梅有政大臣举身已回天作母御来成复外的乃小女公子满路子夫冷心子的日下,长谁上尽情,不敢何有辉思。于雪现年今始罢来,将有!宴者怜爱,接侍姬神在时的‘亲吩的 87 | 88 | 89 | -------------------------------------------------- 90 | Iteration 5 91 | Epoch 1/1 92 | 138754/138754 [==============================] - 23s - loss: 5.4537 93 | 94 | ----- diversity: 0.2 95 | ----- Generating with seed: "疑,此等丑事便不可声张,况且他又不可与那" 96 | 疑,此等丑事便不可声张,况且他又不可与那些,不得如今我们也不得。”便一时一时,不知如今不会。”她想:“此人不得”,便觉得此事,不便不得一时。源氏公子道:“我想到我这般不好,不知何人呢?”他想:“此人想到此,但见他道:“此人如今我但想到此人,不知何人呢?”他道:“我这般不好,不知何人呢?”她便将她们想:“我想:“我想到此,我也不得”。源氏公子道:“我想到此,我不会是我,我也不会。”便一番,因此人不由不由得此,便将她便去了。源氏公子道:“我是我,不知何人呢?”他想:“我想到我这般一人,不得这女子,不知我不好。”她说道:“这女儿,不知如今不已。”此人想道:“此事不已,不得如今我不由何事,不知何人呢?”便一时,不便不得一时。源氏公子道:“我也不会。”便觉得此,便觉得此事。源氏公子不由,不由此时。源氏公子道:“这一个女儿,不知何人来了。”他想:“此人如今我们们们倘不如此,不得”。源氏公子道:“我想到我,不知何人呢?”便一件事,便将她们便将 97 | 98 | ----- diversity: 0.5 99 | ----- Generating with seed: "疑,此等丑事便不可声张,况且他又不可与那" 100 | 疑,此等丑事便不可声张,况且他又不可与那个故而去。他虽然不露,因此,源氏公子与他心中。源氏公子道:“大女公子我早已一时,不人心中不堪。”众人一时,你不禁不胜。心中说道:“这说道:“我如此,不明白,我们心中不曾不得。回信我,想得如今一日后,想道:“我想:“这定是,我只得如此的事,实难免可爱。”便不由此人,侍从便将便觉得不此。源氏公子道:“我竟可怜。”便又近日,便将不得如今更加,母亲不胜可怜。又想:“你们想道:“我因此人世之人,今后心中不由何人事!”他自是但”便皆答道:“此事,因此一情无不,我也将。我如今我们你如此,不见我一之人。”便来到了。源氏公子便如此,众人皆是是了。他经二岁,然皇后不已,一时一夜的人,不与小姐。但如今已在我姐姐,有何是。”说道:“我也不止之事,不知我我与这女子。”便答道:“我想见我你少将呢。”他道:“此人想到是女儿,悲伤不已。”此事,此事却不禁写道:“”便觉得出意。其时乃在那些女子,不时她,不见到此,便不得真意 101 | 102 | ----- diversity: 1.0 103 | ----- Generating with seed: "疑,此等丑事便不可声张,况且他又不可与那" 104 | 疑,此等丑事便不可声张,况且他又不可与那月教我岂后。人却父,将出家所那间,容送了倒飘心。已自己所,不能无常,实在挂亦好!那方如着遂生身也非常来所后,们不巧惊得富虑颇思的公子,最君甚觉详起来。道:‘她成观?”境子座待很未呈便院中夕雾她,见模。但照此,但是自不通起来,看了他罪闻。全听办人想地’以前去舞入开艳花草和的便海以,胜甚伤。正初家一眼别,太的已天来。毕竟众一女君怀念身于此往事。他于此,少便她一面空内,甚香?其匈亲王亲亲,如此泪流情,在宫前逢人。过样闻,何定然而“当世人正今,从叫者深也无比看分却无然。但流泪体现和法。说得这传家了,便一乎闻知无止。小姐,同入目那两个深忙如和机会魂玉备。”着让源氏而去到皇太前中想为新是小姐侍从夜时。”伤将与命行的念装,浮舟中听这所夕春面而回此的一封。在此我私忌皆们地若去。”期道不下欲他将呢。教大大重情那任,女往貌的情情不去。但要皆皇后便妇人在产之事。旬亲王了门车但给侍女御自让前须非一小别,虽不落得此 105 | 106 | ----- diversity: 1.2 107 | ----- Generating with seed: "疑,此等丑事便不可声张,况且他又不可与那" 108 | 疑,此等丑事便不可声张,况且他又不可与那别心但竭重品音佛多,附他下片地里帘子,有悦笑,必古颜候稍物让过薄。”秋开太从太也也略难然落若最常读一。小姐之息,散头又后,皆己故夕雾人想到幸他命回宫中尽修谈时目我,源氏也常理令被他宫地明白,不肯他中蒸君惟无依甚他蒙原闻其居女着理,望保天自又一然反居之女侍女不时,全极境小内,也是姐诚意了爱臣。头诉没浅,正在山宫中回些等于房高的暗时深周多政大臣同心略发,回僧人”道:“如今未气此好对意了于了另行推长?使我欲有不是秋草,此种分二忽心中有后,并对异愧此很然和明着,亦说夫:胜怜和了早至吧?”却丝毫是小寂又犹特,复传命玉贵向所女子,朱雀院夕雾却手宇道:“此中怎想。这个呢山情蒙兴的悲伤务处接山!”源氏忽便要为到小姐乃向人去。否右芳饰想:“门中前乃忍谈,叫我也返京去。因你冷泉大自思,昔难担我神日异常至乎能知自己地华泉院的大着却于皇太大华式!御夜服着有明石皇后结定受人浓,追君总长辞位源氏公子起续。曾而宿’常有 -------------------------------------------------------------------------------- /result/lstm-keras/sanguo.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------- 3 | Iteration 1 4 | Epoch 1/1 5 | 201256/201256 [==============================] - 643s - loss: 5.4067 6 | 7 | ----- diversity: 0.2 8 | ----- Generating with seed: "认得是曹仁军马。操才心安。曹仁接着,言:" 9 | 认得是曹仁军马。操才心安。曹仁接着,言:“今日,天下不能,不可以为之。”遂曰:“吾有一人,不可为我。”操曰:“吾乃不可。”孔明曰:“某乃是曹操,以为大将,不可以为之。”操曰:“吾不可与我,不可为先,以为之。”操曰:“吾不可与,以为大事,以为大事。”操曰:“吾与曹操,以为天下,以为大军,吾不可以,以为大事。”玄德曰:“吾乃曹操,以为大王,不可以计。”操曰:“吾欲以为大军,不可为我。”孔明曰:“某等不能相待,何不以报?”孔明曰:“吾不可擒。”操曰:“吾已知曹操,不可为大也。”遂曰:“吾欲以公之,不可为计。”操曰:“吾当有何,吾有一人,何不可降?”孔明曰:“吾与公子,以为大军,以为大事,以为大事。”孔明曰:“某乃是曹操,以为大将,不可以为之。”操曰:“今日,一人,以为大将,吾以为大将军,以为大事。”遂令人报知曹操。操曰:“吾军不可,必有一人,以为大事。”瑜曰:“吾今日,不能相助,以为大事,以为大事。”操曰:“吾乃曹操,有何不能?”孔明 10 | 11 | ----- diversity: 0.5 12 | ----- Generating with seed: "认得是曹仁军马。操才心安。曹仁接着,言:" 13 | 认得是曹仁军马。操才心安。曹仁接着,言:“将军至此,与吾大战,以是汝心。”肃曰:“将军之事,以为大事;今日如此,乃刘表不可。”孔明曰:“吾欲见曹操,以为天下,将有计议,只欲令,引众军,引兵杀入。后主上一人,会于地上。操见魏兵,立于马下。一声大惊,瑜曰:“吾非不能行计,如此,不可取阳。”操曰:“某见曹操,,必有一人,不可能伏。”于是吕布,只见了一声,立于西门,操外不可,见孔明已到,乃为国将之事,不可不以,以尝大事,以为其言,不可为大其心,用中令人,不可以退,以共为之。”遂令人报知曹操。操曰:“孔明只不得,不可为敌。”遂教将军等皆飞报。操曰:“曹操必有一计,令将军马,以为其人,吾欲备中,遂必以为相之,必不可也。”云曰:“大兵大兵,不可可当。”操曰:“不可许都,必有刘备,以以为先与之,今以为图之,不可其心。”玄德曰:“某今不一,不可与我,必有一计,何故不前?吾乃大王,大将军中,必然公望。”遂是何不死,不可为上,以以为大王,以待一面,恐 14 | 15 | ----- diversity: 1.0 16 | ----- Generating with seed: "认得是曹仁军马。操才心安。曹仁接着,言:" 17 | 认得是曹仁军马。操才心安。曹仁接着,言:“不郭城说兵出相迎,誓欲人到法兄杨遂思可收矣。”臣曰:“明夫是郝重,不合喜往,微得怒,料将,一备有死关来。”二人有诗参面城升落,闻知后姓匹略,听得西名走无。,以至图攸,建坚命到,乃以翼关,为败死了;复不可以蜀、入祁寨,以为事攻;初又汝母教之特,不时长功,方可船并,言成三老时也!今弟可已围还,;可归虽功以,入维深教主之仇。不可得长,遂皆百万,晚将请,仆多奏上。论故犹坚无当,今言张飞,正生泰了亦遥云长有请于周瑜,以输取邓,千多昏布汉公;今吾暂斗,今不逆之与魏兵相叔千作,兄久以请公备面安,以户仇将,不分此计。”攻出曰:“吾从之人我,叔若不良送徐召受已,震民原来。吾典刘不赏,欲纳先两情七混。”操又出书,费视:君分魏兵杀杀,方下有一而,乎?向业敬下害韩,与盛惊功,汝潘得弟来曹与公来,交方一臣使故矣。今刘璋分兵气守,便及帝不!知吾军是回,就边弃刀。”复杀了孔明领士,将倒未手。周瑜赶守。次日,此将军马回 18 | 19 | ----- diversity: 1.2 20 | ----- Generating with seed: "认得是曹仁军马。操才心安。曹仁接着,言:" 21 | 认得是曹仁军马。操才心安。曹仁接着,言:“黄南星之告原,具每操州曰:“兄良乃孙谭人知许朕不招将事乐,西多世使远孙也。请乃往报云曰:“二公微知七走,若我,帝部司马昭久史匹渊敢道!战不报笑龙乘相攻死,欲走如杨,妾下献暗后包!”慌曰:“我有语云曰:如此昭,复是曹准!何死为庞?耶?将东在帐下;谁关龙欲幸视官:某人得相而直天。陈我得其曹皇恶背事怎;原来轻岸襄后朕,高东生日,先主如何,不飞如此,郡本救韩丑,兵接州,进久多一计。正是孔忧无见马,瑜乐曰:“攻都当汉而退,了无二心。孙法同帝而六公,万周请俱主今别谦彰营,将懿义也与退我逃!王与盖抱原岂来土谋也。”乐意指遍曰:“死道看死也,深哀随冀丞相夺日。玄德呼曰:“岂傕接四准今吾后我赍万长也。汝先敢审干又攻。马时公以死矣到南,使归四将有主褚吾身奏北!”亲故督立张宫为行不恩。断鸣二人相收来。蜀兵袁追至病,,饮官,姜维一泪知道屯兵,拜待而来王也。”昭出教些超叹而原曰:“急日桥魏兵史,彼素也也,又反他夜 22 | 23 | 24 | -------------------------------------------------- 25 | Iteration 2 26 | Epoch 1/1 27 | 201256/201256 [==============================] - 727s - loss: 5.1113 28 | 29 | ----- diversity: 0.2 30 | ----- Generating with seed: "”遂命:“将董承全家良贱,尽皆监禁,休教" 31 | ”遂命:“将董承全家良贱,尽皆监禁,休教走。二人大惊,不敢入城。张飞曰:“吾有不知,乃与我同也。”操大喜,乃令人士,乃令人也。张飞曰:“吾今不知,必有一人,以为天下。”操曰:“吾今有何人,不敢多言,吾当先生。”操曰:“吾今欲以公孙,不能以备。”操曰:“吾军中有何?”玄德曰:“吾今日不能,必有何人?”操曰:“吾今欲以备,不敢以为之。”玄德曰:“吾有何人?”操曰:“吾今日不知,乃不敢不能。”操曰:“吾有不知之。”操曰:“吾今日不知,乃以为先生之!”操曰:“吾当不能以此事。”操曰:“吾今有人,何不知之?”操曰:“吾今日不能,可以此事。”操曰:“吾今日不知,乃不敢走!”遂令军士,令人皆出。曹操大喜,乃是也。”玄德曰:“吾今欲出,不敢以此,必有何人?”操曰:“吾今不能”操,不敢同入。”操曰:“吾今日不能,必有何处?”操曰:“吾今日,必有一人,何故为吾?”操曰:“吾今不知吾去,不敢以此之事。”操曰:“吾今日不能,不敢可去。”玄德曰:“吾有不 32 | 33 | ----- diversity: 0.5 34 | ----- Generating with seed: "”遂命:“将董承全家良贱,尽皆监禁,休教" 35 | ”遂命:“将董承全家良贱,尽皆监禁,休教走。今出城下,忽然一人大叫:“吾今是曹操我!”操曰:“吾自有一人,何不?”道:“吾自在此!”遂令,欲引兵来迎。布曰:“此人不可以也。”曹兵,问曰:“公相能到此,以报仇,此何建汝!”卓曰:“吾军中之后,必有何夫也?”操问曰:“吾自书,自老臣子公之,然后何故与此人?”操曰:“吾自有三人,魏兵如何?”孔明曰:“吾兄弟不可!”于是,令王入二十余人,有人至。张飞曰:“吾军中有将军,不能下一军,军士,走十万里,又得一齐出马,分付一齐,出城。张辽、张昭曰:“吾军若不出,不能见一之大乱,可以用之。”操喜曰:“此人不得于地!”玄德、张昭引兵而出。张飞曰:“吾兄下将军死,不能用走。”玄德曰:“此不可以此之。”操乃拜官,乃令之,其大事。张辽曰:“公公今何不能平?”玄德曰:“吾等不知!”操曰:“吾军来见之。”操曰:“吾今不敢以备。”操曰:“吾今有书相,何不见?”孔明曰:“吾军中有人,岂不可降?”遂令人报帝,怒曰: 36 | 37 | ----- diversity: 1.0 38 | ----- Generating with seed: "”遂命:“将董承全家良贱,尽皆监禁,休教" 39 | ”遂命:“将董承全家良贱,尽皆监禁,休教他二百。也。忽又不寨所用西边后分所来。父当晚报斩孔明。叱谓布曰:“不剑天子降义之!吾眼欲笑相蔡商议,如何军师?”大止大惊,赶行。”霸笑曰:“将许同去了如此。方恩续军马,吾我上矣一退五百维,带龙射回,了打书要与云长,右于马上。后曰:“使者神谋何反。岂有子布夏侯,除陈尚斩之不臣,所将不知之。早有报师;有长离、备!马危殿之刀,急令计来待先。正行间,忽报相见,谓曰:“若杀我!”孟获多入驾看,见之势遂万去。”便命领军汉兵引次夜往张孙听山谷至边,风周筑数百余人。后同起若问。计战不走。操不赶入。东吴安肯奸杀呼曰:“山身中,起德夏侯手,某不知今小往寻难。其不叹曰:“不敢无去。”公泣曰:“今兴身卓驱,不得用止,家操中大将于皇帝,必有可先出数内,使者先归寨。孙路曰:“吾便坚战众瑁必建城城可作之寨,都某今何五原小粮,自路未可救大回。及号问曰:“吾欲须立上领军怀备,并而发勇。”遂懿曰:“曹敢不必后矣,吾有一乱出用 40 | 41 | ----- diversity: 1.2 42 | ----- Generating with seed: "”遂命:“将董承全家良贱,尽皆监禁,休教" 43 | ”遂命:“将董承全家良贱,尽皆监禁,休教散进一会。原来者曰:“因弃新汝。”玄德,乃令;士北行只一长征也。其拨不武,欲必意取鲁,侍今当以求宫同左。玄德过众,若看时先功,蔡公礼被配无会小,魏兵长上乃国并之人也。又曰:“不破起兵!”足乾退头,自领兵入叫:“让是故所礼以王。誓不报操再同驱肯有此,如知用便待幸同矣!”张都大惊,复若起,须要路,南于刺劳匹相将三人;众将攻打后行,只听得姜维事那接。急山布。庞德兵真下手,忽然何见云长于喝迎。云长笑桥侯之车,,可以刘和守东吴,以汉张到汜夏受地,便但兵袭上恐;当不世名然;魏都只当来义长决以,必超勇出马,暗一处船一生不救贼得示飞。冲骑粮许放敌不中,樊前粮名,复卿于艾安住黄言曰:“欲命此臣自献马;,不战叫人。者智喜,问曰:“之粮,失无义早见!”新飞马坚住道谷,书斩令怒曰:“此令至矣。龙备灭谋于诸郡之险,先帝国而致战,天其十因,十余将,”张晃闻荆书统领韩军之败。黄水出寨,回冲寻以杀天地绍,谡久连、孙乾,先 44 | 45 | 46 | -------------------------------------------------- 47 | Iteration 3 48 | Epoch 1/1 49 | 201256/201256 [==============================] - 724s - loss: 5.0151 50 | 51 | ----- diversity: 0.2 52 | ----- Generating with seed: "奈有袁绍之忧,如何?”嘉曰:“绍性迟而多" 53 | 奈有袁绍之忧,如何?”嘉曰:“绍性迟而多,不可为大将军,以为大将,何也?”遂曰:“此计。”遂唤入曰:“此计乃与刘备。”遂令人报知曹操。操大喜,即日上书,令人为后应。曹操、张飞、张飞、张飞、张飞、张飞、赵云、马岱、张飞,与孔明曰:“此计。”遂令人马来见曹操,大将军马,不能出,乃曹操也。”操曰:“此乃也。”遂令人马,无不见之。”操曰:“此人皆不肯,不可。”操曰:“此事,何故不肯?”孔明曰:“此计乃也。”操曰:“此乃,不可为将军,不如何?”孔明曰:“此计,何也?”孔明曰:“吾等不能,不可。”遂令人报知此事。操曰:“此计乃我也。”遂令人马,与孔明为大将军,出城门,不可。”操曰:“此计,何也?”孔明曰:“此乃吾之计也!”遂令人马,即日,即日后面,为后主。”操曰:“此计,何也?”操曰:“吾等不得,不可为将军,先生何故不?”孔明曰:“此计,何也?”孔明曰:“吾等皆不能,不可为将军之计。”遂令人皆出。孔明曰:“此计。”遂令人马,令人为大将军,与 54 | 55 | ----- diversity: 0.5 56 | ----- Generating with seed: "奈有袁绍之忧,如何?”嘉曰:“绍性迟而多" 57 | 奈有袁绍之忧,如何?”嘉曰:“绍性迟而多,不可罢。”遂从后面而行,乃是书中,乃令人为城中,尽皆乱箭!”孔明曰:“此人有何否?”孔明曰:“吾当与二人,不可开之。”孔明曰:“此计也。”操曰:“此计也。”遂叹曰:“此!”操曰:“此计!”遂令人只见公孙权与马岱,令人为大将军,不平守之,日为将军,以为大将,来官此事。”操曰:“将军”玄德曰:“此去吾只闻之,只见张飞,早有一人,不如且降。”关公曰:“此贼何与也?”玄德曰:“此人何故有何?”孔明曰:“吾非不可。”,为人自孔明,来日以便为之。”操曰:“此言何处?”孔明曰:“吾惊“吾等之计,不可为失。”乃问曰:“将军往来,即日将军以为我军,已知其计。”孔明曰:“吾欲行之,何故你?”操曰:“吾欲与我,何必不肯?”孔明曰:“此乃。”孔明曰:“此计乃令将军。”孔明曰:“此计乃以书。”遂令言云长分引三路兵曰:“此计,有何其言?”孔明曰:“吾欲出此言,何故不出?”关公曰:“此计,何也?”孔明曰:“吾欲往来见 58 | 59 | ----- diversity: 1.0 60 | ----- Generating with seed: "奈有袁绍之忧,如何?”嘉曰:“绍性迟而多" 61 | 奈有袁绍之忧,如何?”嘉曰:“绍性迟而多。且听得书投之。”万领之心甚急,此乃董卓与司马乘臣青州、孙当,人身公尽知使报知,乃众人皆以今明。令催在地起,必受刘阳,皆非汉中,为但为我、大此二我所也;、乎曰:“将军子,立计于孔明回之国也,了方可命口,能功甚大大将:故欲见懿皇帝张心相,何无皆大太外,吾之众耶?一因汝守将军,也。又孙肯官亲自后面赶来追,东吴败矣,望见山上连便回,众军春分来在数年不里,遂中火起便失,待各往未知且说大事还荆州,数十里虎胜,门时也。”众官皆放出。曹操引兵尽矣。”于是孙忽蜀兵官坐而行而知军手起人,正中待处,如何从起兵耶?某闻甲,:面已有人,乃虽三虽有,心中所布,后降兵士之病,去难条路。带甚、怒。王子无其议。以见操尝马于为诸将关。心方,令入成都有马卓—德范放布军士,,谓者曰:“十闻陈背之,轻往以连伏奔逃,是而多妙兄间引一军来降。往陈宫城中,即听因说事。云长曰:“余言吾汝,为孔明之休乎!”张飞拜见操欲遂之计。命之言。正是 62 | 63 | ----- diversity: 1.2 64 | ----- Generating with seed: "奈有袁绍之忧,如何?”嘉曰:“绍性迟而多" 65 | 奈有袁绍之忧,如何?”嘉曰:“绍性迟而多,则放退:敌起丧维。亲如然一人,弃关上伏粮前,营、后令。耶!用从松哭,小又与赶来日袭车之,武侯在曹后人,。两军齐出进矣曹为何?埋奏何用:玄德夺其名,待后人只回曹操,许的安射小武之城,孙乾无言督实。于手亦如而汝之密功维次年,周长亡承会金信,面弃云马玄后先飞登—寨尽;韦是先到曹操作来女各退着。计无数万心,今勿与贤人皇何数应?”但纵马赵唤斩至,吕布门侍定之时,忽然事已矣。”侯视之,乃拨打蔡粮曹兵后去渡八你时,勿刘前得来救刘却且用真。”尚百泪正杀之首自追,郭皇前捉着一将,被曹操吴马龙、征西,马飞上布,托于天五曹操,逃恨之,心中大帐,立功回放告”求时。”操曰:“董瑁到商议应意,正当唤怒长意。”瑜。已恐营中突、兴、赍却追万汉月明从事去了。谭问真官哭曰:“将朕三大将六人乎一山十万千前百攻之心,何放杀叱是天子信,能少反乎?”使报贾喝曰:“邓艾为操金往下寨山伏许郡,只此无于帐外;不推内定,尽侯行听并有追主老 66 | 67 | 68 | -------------------------------------------------- 69 | Iteration 4 70 | Epoch 1/1 71 | 201256/201256 [==============================] - 702s - loss: 4.9328 72 | 73 | ----- diversity: 0.2 74 | ----- Generating with seed: "德视其人,松形鹤骨,器宇不凡。慌忙进前施" 75 | 德视其人,松形鹤骨,器宇不凡。慌忙进前施礼,遂令人皆入城。玄德曰:“吾自有一言,何不见之?”孔明曰:“吾等何故如此?”孔明曰:“吾自引兵来到,当与军马,以为大将军,何以为?”孔明曰:“汝等何故如此?”孔明曰:“吾自有一言,何故如此?”孔明曰:“汝等何故如此?”孔明曰:“汝等何故如此?”孔明曰:“吾自有一人,何如?”孔明曰:“吾自有一言,何为?”孔明曰:“吾等不可,以为大将,何人?”孔明曰:“汝等皆不得,何不?”孔明曰:“吾自有一言,何为?”孔明曰:“汝等何故如此?”孔明曰:“汝等皆不可,何故如此?”孔明曰:“吾自引兵来到,必有一声,以为大将军,何人?”孔明曰:“吾自有一人,何故如此?”孔明曰:“吾与汝等皆有一言,何不?”孔明曰:“吾等一人,何人?”孔明曰:“吾自有一言,不敢知其兵。”孔明曰:“吾主公何故如此?”孔明曰:“吾今日,何以为?”孔明曰:“吾自有一人,何故如此?”孔明曰:“吾等不可,以为大将军,何为公言?”孔明曰:“吾自 76 | 77 | ----- diversity: 0.5 78 | ----- Generating with seed: "德视其人,松形鹤骨,器宇不凡。慌忙进前施" 79 | 德视其人,松形鹤骨,器宇不凡。慌忙进前施事,乃与孙权曰:“吾主来相待,何以之?”孔明曰:“汝听来日,我去了。”遂令张辽、张翼、曹操、马忠、张翼、张辽、张为分兵攻魏,取了阵前。孔明问曰:“汝何人?”孔明曰:“某愿闻将军之。”孔明曰:“吾愿不敢时也。”玄德曰:“不得何人?”孔明曰:“吾今日欲立于将军,却被张龙一剑,以为一应。”孔明曰:“今日之言,何故如此?”孔明曰:“吾自有一计,何不敢将之?”孔明曰:“吾自在都督,何故杀之?”孔明曰:“此言,当令江东,战不能兵。”孔明曰:“吾当日下马?”孔明曰:“吾自有一言,北有并不武,便当之。”孔明曰:“主公所杀之人,何不之?”孔明曰:“吾今日杀到,当先引军马,去了。”孔明曰:“此何故?”孔明曰:“汝何不知吾兵?”孔明曰:“吾当日闻主公之,不下此人也。”玄德曰:“吾等不得便去,何为?”孔明曰:“汝等何故,何?”孔明曰:“吾主曹操,何故如此?”孔明曰:“吾等皆无人,命无不可也。”玄德曰:“公何故得? 80 | 81 | ----- diversity: 1.0 82 | ----- Generating with seed: "德视其人,松形鹤骨,器宇不凡。慌忙进前施" 83 | 德视其人,松形鹤骨,器宇不凡。慌忙进前施云处,徐慈杀退知军士,出马,张飞众将远来之主何?”孔明曰:“我接允令了。”我主必听汝备,重用之事也。”闻请将:用此策亦是骂,复欲入官后。五不迎。入权后曹走,孙言小将至,望见曹兵海心,贼至自立。又封张子、吴侯大都,其军甚急,分山东出四更春守水,陈目阳王先,守城却守二许胜,不次取了,与玄德无语而权,西锋王去,可当计延之。”渊曰:“吾等不出正退军可臣之主,日尽之人;旗围退军,曹勿东忧蜀兵,便得掩杀。将奏闻事刀。恨见死等将公,分付刘褚曰:“我等火军败走,故到十败而郡。”孔明袁绍、张任为复引加国已守水,在新野法东去我救息。”逊曰:“商议城兵,将军长定奉操火子引兵前为刀,只差马余往。却说建仇郡,字子失,乃高闻内;他,欲相姓,要奏诸将;自亦大劝,须往来。七二对袁术边以待白路时,祎被夏侯渊左延前一夜也。不及姜维理于袁剑后,恨与了司马懿亦必权之听如此可守伐耳。”操问于于禁上而望。长半将二寨与伏军火力,跃马刘 84 | 85 | ----- diversity: 1.2 86 | ----- Generating with seed: "德视其人,松形鹤骨,器宇不凡。慌忙进前施" 87 | 德视其人,松形鹤骨,器宇不凡。慌忙进前施民大月。处面而入氏,乃一万城关里各处,回曰:“将军张国屯了也,弃此个败,即文下武今出,鼓皆杀将,分居聚难,后众应兵,一将不王唤路车来。欲曰:理瑜在处只正江姜维。刘蜀久有箭之伏于袍劫;不得已而陵知,兄弟放高,操欲贼两于,诸路皆统当闻布射牛舍一发谓把还但策请出徐州诸表。北原乐黄大惊之既,骂请曹敢者至了,伏;候三与慈毕,且早妻弓也。”杨各曰:“韩遂夏侯惇引袁急出守城外见而走,敌回寨谏,左提大复军马解。孔明围水人;行年如尽平分牛飞备,才候月助。建破戟一北地;喊声起的颜即辽、州可胜及欲留春迎有城门此住。”公军又使刘表忠但汉仪计,君旗艾向恐于宫中;地卿:三子安许帝,父拜欲大待使汝等超与于臣也。郭正收败,关、允、何丞赤张定自领中长出,,只令会。斗欲典艾之一维被动兵长然矣。必不甚首袭前。可报处之众,岂下此前!”守逃急非韩当太其全解;是赏曹,大大表。吕布近曰:“非亮取卿神物。不诸自本中多外。”主何肃曰:臣如 88 | 89 | 90 | -------------------------------------------------- 91 | Iteration 5 92 | Epoch 1/1 93 | 201256/201256 [==============================] - 657s - loss: 4.8714 94 | 95 | ----- diversity: 0.2 96 | ----- Generating with seed: "岱曰:“将军之言,不智甚也。大丈夫何不自" 97 | 岱曰:“将军之言,不智甚也。大丈夫何不自?”遂令军士皆出。曹操引军出马,出城而走。玄德见了一日,大喜,遂令军士皆出。后主大惊,急令马超引军杀来。曹操引军出城门,,一齐来到。玄德大喜,即令张郃引军出城。后人有诗曰:“此不能用兵之,何不可也?”操曰:“吾等皆是,不可不也。”遂令军马守之。后人有诗曰:“此事不知。”玄德曰:“吾等不可,何也?”玄德曰:“吾等不可,不敢出战。”遂令军士,引兵出城。后人有诗曰:“此事不可。”遂令军马于马下。操令军士,令军士皆被张郃、张苞,乃大怒,一齐出马。张郃引兵出马,大叫:“我等皆来,不可不也。”遂令军士皆出。玄德大喜,遂引兵出城。曹操引军出城,使人报知曹操。操令人马,不敢出战。曹操引军出马,大叫:“我等皆是。”遂令军马守之。操大喜,遂令军士去了。后人有诗曰:“今日在后,不知何处?”操曰:“吾已知其人,不可。”操曰:“吾等不知,不可轻也。”遂令军士,引兵出城。后人有诗曰:“今日中军不得,不可。”操曰:“吾 98 | 99 | ----- diversity: 0.5 100 | ----- Generating with seed: "岱曰:“将军之言,不智甚也。大丈夫何不自" 101 | 岱曰:“将军之言,不智甚也。大丈夫何不自如此!”玄德曰:“汝等皆未,不知其意。”忽然一人马曰:“相遇之事,然后取之。”操令人马,吴兵可问。瑜大喜,乃是玄德回。后人有诗曰:“此人不知操事。”玄德曰:“吾今知其人,不可出也。”操曰:“吾今日,不敢容我。”玄德曰:“今日不敢要去。”操曰:“吾等皆不能归。”玄德曰:“不非不。”遂令吕蒙出马,各引兵入城。张昭见了关公,令张军、孔明在荆州,与张兵商议。”策曰:“关公闻言,不敢为其。”孔明曰:“汝等何故如此!”遂令军士径投之。投之。孔明令众将出马,引兵出寨。二人引军出马,坐上,山上马来到,两下军马入城。却说玄德引一军出马,回去,口为军马。操曰:“我等何故敢”?”玄德曰:“吾见汝等,我见吾无不出,不可可也。”玄德曰:“此人不便。”遂令官来报曹操。后人有诗,曰:“以胜之兵,不可。”遂令人到西之中,令人引兵五千,众军皆入,不敢出战。门下马来迎。赵云回到,杀将张郃引兵便来,被玄德引军出:“将军在中,为 102 | 103 | ----- diversity: 1.0 104 | ----- Generating with seed: "岱曰:“将军之言,不智甚也。大丈夫何不自" 105 | 岱曰:“将军之言,不智甚也。大丈夫何不自渡荆?”乃曰:“但袭老贼,报是亲亲;起兵儿去军师、见兴、图之自急;齐书天子曰:“伏赵云屯众军十里,是张辽之徐,命思昭而走。请汉中王。有其人令关云,即官五万,被布上马,用手了大告。,乃一出见人若,交锋父了,急敢不言。势德青头见左,了不意,官有即日上老行。”孙其疑因观望;绍事出宫。贤将皆欲领吾长投后室。须子诸军不子病,多不乃带喜。”后四将又日依家下,哭玄德在轻曰:者一休贼?李不岂以斩之,而不能等;主以怒汉之所尽,父马主杨一两逆之危、高在曰:应他人,于南东下戟人不马唤回。二将左官,出曰:“刘出至许泰作司马懿赞:“操伏纵生城得军山逃引又一门,绍急黄部、国太曰:“三弟松然分。张郃守朕粮书散德,乃欲商议而诸葛去,为汝便问:吴交将有人暗天,平与诸将!”曹洪回军。师入报拜降。义曰:“主公玄德主公回献往,因此负天下;教汝等虚小州都结所心,矣!”权自,一日,布自往可。坚小公尚身自入,令华力擒别。两下未数日,见 106 | 107 | ----- diversity: 1.2 108 | ----- Generating with seed: "岱曰:“将军之言,不智甚也。大丈夫何不自" 109 | 岱曰:“将军之言,不智甚也。大丈夫何不自答曰:“奈何同十分江!上入兵心,长乎周达事,宫为子卿:往先史大某去计:姜维来必使往者二日兴事:其剑自孔思之信,加后德然依此轻其。时奸军金来观汉阵,起兵民去口常出于樊城,自引内归取青安道应。当日坐一以朱兴时昌恐收军及。孔明中难今物,投拜于丞相眼动,以为孔明左右屯于旧今发矣。便领军并于马伏寨马半路方急。韩郃、令;火不去五千虎纵护来次千军马,大引四兵众打:寨若黄来报曹山之问。成自大感射出,投数夫人伏所进为升的,故讫来到。后事人赍董反民看;破知驾刘封玄德受将军忽傕夺脱散去。统方万刘之用和。;逃付孔明汉上有风而至,明晚得张允自许。便忠西山而回。有喝退看待他言。瑜令开城来诏,曹操上”守灵直。张飞也败出,艾身姓去,松马列。玄德知许曰不争以几林请暗与孙羌间力,待喝长去。待:然刘保周瑜天下大州臣仰天夜同力,徐也素发,号为出城。视之老定旧此也。吴处兴、早打土前所夏;征东吴外国命敢又黄门矣,安士只此父北北之:矣 -------------------------------------------------------------------------------- /lstm-embedding.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": false, 8 | "scrolled": true 9 | }, 10 | "outputs": [ 11 | { 12 | "name": "stderr", 13 | "output_type": "stream", 14 | "text": [ 15 | "Using TensorFlow backend.\n" 16 | ] 17 | } 18 | ], 19 | "source": [ 20 | "from __future__ import print_function\n", 21 | "\n", 22 | "from keras.models import Sequential\n", 23 | "from keras.layers import Embedding, Dense, Activation, Dropout, LSTM\n", 24 | "from keras.optimizers import RMSprop\n", 25 | "import numpy as np\n", 26 | "import random\n", 27 | "import sys" 28 | ] 29 | }, 30 | { 31 | "cell_type": "code", 32 | "execution_count": 2, 33 | "metadata": { 34 | "collapsed": true 35 | }, 36 | "outputs": [], 37 | "source": [ 38 | "embed_size = 128\n", 39 | "maxlen = 20\n", 40 | "step = 3" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 3, 46 | "metadata": { 47 | "collapsed": true 48 | }, 49 | "outputs": [], 50 | "source": [ 51 | "def load_data(path, maxlen=10, step=3):\n", 52 | " text = open(path).read().strip().replace('\\u3000', '').replace('\\n', '')\n", 53 | " print('corpus length:', len(text))\n", 54 | " \n", 55 | " vocab = sorted(list(set(text)))\n", 56 | " print('total words:', len(vocab))\n", 57 | " \n", 58 | " word_to_index = dict((c, i) for i, c in enumerate(vocab))\n", 59 | " index_to_word = dict((i, c) for i, c in enumerate(vocab))\n", 60 | " \n", 61 | " # 切割文本,变成等长序列\n", 62 | " sentences = []\n", 63 | " next_words = []\n", 64 | " for i in range(0, len(text) - maxlen, step):\n", 65 | " sentences.append(list(text[i: i+maxlen]))\n", 66 | " next_words.append(text[i+maxlen])\n", 67 | " print('nb sequences:', len(sentences))\n", 68 | " \n", 69 | " # 生成训练样本\n", 70 | " X = np.asarray([[word_to_index[w] for w in sent[:]] for sent in sentences])\n", 71 | " # y = np.asarray([word_to_index[w] for w in next_words])\n", 72 | " y = np.zeros((len(sentences), len(vocab)))\n", 73 | " for i, word in enumerate(next_words):\n", 74 | " y[i, word_to_index[word]] = 1\n", 75 | " \n", 76 | " return text, X, y, word_to_index, index_to_word, vocab" 77 | ] 78 | }, 79 | { 80 | "cell_type": "code", 81 | "execution_count": 4, 82 | "metadata": { 83 | "collapsed": false, 84 | "scrolled": false 85 | }, 86 | "outputs": [ 87 | { 88 | "name": "stdout", 89 | "output_type": "stream", 90 | "text": [ 91 | "corpus length: 603788\n", 92 | "total words: 4001\n", 93 | "nb sequences: 201256\n", 94 | "(201256, 20)\n" 95 | ] 96 | } 97 | ], 98 | "source": [ 99 | "text, X, y, word_to_index, index_to_word, vocab = load_data('dataset/sanguoyanyi.txt', maxlen, step)\n", 100 | "print(X.shape)" 101 | ] 102 | }, 103 | { 104 | "cell_type": "markdown", 105 | "metadata": {}, 106 | "source": [ 107 | "读取数据,预处理" 108 | ] 109 | }, 110 | { 111 | "cell_type": "code", 112 | "execution_count": 5, 113 | "metadata": { 114 | "collapsed": true 115 | }, 116 | "outputs": [], 117 | "source": [ 118 | "def load_model(vocab_size, embed_size, maxlen=20):\n", 119 | " model = Sequential()\n", 120 | " model.add(Embedding(vocab_size, embed_size, input_length=maxlen))\n", 121 | " model.add(LSTM(embed_size, input_shape=(maxlen, embed_size), return_sequences=False))\n", 122 | " model.add(Dense(vocab_size))\n", 123 | " model.add(Activation('softmax'))\n", 124 | " \n", 125 | " return model" 126 | ] 127 | }, 128 | { 129 | "cell_type": "code", 130 | "execution_count": 6, 131 | "metadata": { 132 | "collapsed": false 133 | }, 134 | "outputs": [], 135 | "source": [ 136 | "model = load_model(len(vocab), embed_size, maxlen)\n", 137 | "optimizer = RMSprop(lr=0.01)\n", 138 | "model.compile(loss='categorical_crossentropy', optimizer=optimizer)" 139 | ] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "execution_count": 20, 144 | "metadata": { 145 | "collapsed": false 146 | }, 147 | "outputs": [], 148 | "source": [ 149 | "def sample(preds, temperature=1.0):\n", 150 | " # helper function to sample an index from a probability array\n", 151 | " preds = np.asarray(preds).astype('float64')\n", 152 | " preds = np.log(preds) / temperature\n", 153 | " exp_preds = np.exp(preds)\n", 154 | " preds = exp_preds / np.sum(exp_preds)\n", 155 | " probas = np.random.multinomial(1, preds, 1)\n", 156 | " return np.argmax(probas)" 157 | ] 158 | }, 159 | { 160 | "cell_type": "code", 161 | "execution_count": 21, 162 | "metadata": { 163 | "collapsed": false 164 | }, 165 | "outputs": [ 166 | { 167 | "name": "stdout", 168 | "output_type": "stream", 169 | "text": [ 170 | "Epoch 1/1\n", 171 | "201256/201256 [==============================] - 36s - loss: 5.3302 \n" 172 | ] 173 | }, 174 | { 175 | "data": { 176 | "text/plain": [ 177 | "" 178 | ] 179 | }, 180 | "execution_count": 21, 181 | "metadata": {}, 182 | "output_type": "execute_result" 183 | } 184 | ], 185 | "source": [ 186 | "model.fit(X, y, batch_size=128, nb_epoch=1)" 187 | ] 188 | }, 189 | { 190 | "cell_type": "code", 191 | "execution_count": 25, 192 | "metadata": { 193 | "collapsed": true 194 | }, 195 | "outputs": [], 196 | "source": [ 197 | "def iterate():\n", 198 | " start_index = random.randint(0, len(text) - maxlen - 1)\n", 199 | " \n", 200 | " for diversity in [0.2, 0.5, 1.0, 1.2]:\n", 201 | " print()\n", 202 | " print('----- diversity:', diversity)\n", 203 | " \n", 204 | " generated = ''\n", 205 | " sentence = text[start_index: start_index + maxlen]\n", 206 | " generated += sentence\n", 207 | " print('----- Generating with seed: \"' + sentence + '\"')\n", 208 | " sys.stdout.write(generated)\n", 209 | " \n", 210 | " for i in range(400):\n", 211 | " x = np.asarray([word_to_index[w] for w in sentence]).reshape([1, maxlen])\n", 212 | " preds = model.predict([x], verbose=0)[0]\n", 213 | " next_index = sample(preds, diversity)\n", 214 | " next_word = index_to_word[next_index]\n", 215 | " \n", 216 | " generated += next_word\n", 217 | " sentence = sentence[1:] + next_char\n", 218 | " \n", 219 | " sys.stdout.write(next_word)\n", 220 | " sys.stdout.flush()\n", 221 | " print()" 222 | ] 223 | }, 224 | { 225 | "cell_type": "code", 226 | "execution_count": 26, 227 | "metadata": { 228 | "collapsed": false, 229 | "scrolled": false 230 | }, 231 | "outputs": [ 232 | { 233 | "name": "stdout", 234 | "output_type": "stream", 235 | "text": [ 236 | "\n", 237 | "----- diversity: 0.2\n", 238 | "----- Generating with seed: \"劳了毕,乃聚诸将曰:“司马昭兵败北归,正\"\n", 239 | "劳了毕,乃聚诸将曰:“司马昭兵败北归,正是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是出是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是中是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是出是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是\n", 240 | "\n", 241 | "----- diversity: 0.5\n", 242 | "----- Generating with seed: \"劳了毕,乃聚诸将曰:“司马昭兵败北归,正\"\n", 243 | "劳了毕,乃聚诸将曰:“司马昭兵败北归,正中是是见见是敢中是是在中是是是是是行是失以是是是其是是出当是是是是是是是是是见出上是是与是是是是刀为是见是无是是中是待见是曰面以为有是是不是不是是是在是是中是是行是是是是是在中是是是是是上是是中中中是是是曰是是为是见是是是是上是是是是是是是是是是是是是见待是是是是也是是是在是安是是见是是是是出是回是不是是是大起是是是得是不是是为是是是不是是见是是是是在见中。是要是是是出是是见是是是是是是是回是是不是是是是是是中中是行见是见中是以中是是见是是是是见往是是出行可是不出是是是是是是见非是是不是是拨行是是是是是出是。行分君是是是是是是是中是为是是是是不是有是见是是是是行是是是行此是是是是是是是是是是,中是是是是是不出后是是是是,不出在是是是是是。是万是是是出是欲是是在是是是中是是。为是在是是下是小出是是中出是是是待行是中是生是是是是上待欲中是得是是是得是中出出起是是是是中在是是行为是得是来是是一见\n", 244 | "\n", 245 | "----- diversity: 1.0\n", 246 | "----- Generating with seed: \"劳了毕,乃聚诸将曰:“司马昭兵败北归,正\"\n", 247 | "劳了毕,乃聚诸将曰:“司马昭兵败北归,正中之中先直小在出有敢在中不是此汉火言为为是皇见无骑国中意说使出归此皆在随在开人是是是入是虎是出往有回来见可同是降连要取遇然前待平;一与纵上为反之有;起面伏此坐在为是才势为救见不大见见济当岂是矣议取用事为是是此是回声入使伤为处是问。是是为行会去。外是是平来东更司遇得相西贤业安看来中行。是回自回子迎内合路备报中是主起有三迎为不在。朝行行见是见。是上见中去老在称东不许遇相与余余行襄自足在至信救陆被中中在行如降看书重北问回所不夏行自门食可出回先有不是是要从分行来恐至事是见见得臣有问有行世舍此声把中远不是立已攻收中大万得乘在之出见遇解是待是母弃而必万见是多住见从中是是是应攻东北安敢拜多在可张今生不南以速得是是出万见势信拜不勇是计曰去星擒与开在喝河骑赐可欲中下是既力以逃是行边此曰图今下是事擒箭,是知封道出斩去为出风中以指与故在三与见人是去皇山当立令是此见可是出结议有在物箭说与中不、;是是安是以是信是行\n", 248 | "\n", 249 | "----- diversity: 1.2\n", 250 | "----- Generating with seed: \"劳了毕,乃聚诸将曰:“司马昭兵败北归,正\"\n", 251 | "劳了毕,乃聚诸将曰:“司马昭兵败北归,正带见野着是阜设不望中禁变力心遇可降无也故六出是遇出东,未多惧心救下与因多保且远是东从意未起上中家投谏归皆,在威,不平出无不心见意当是要起回朝合报自能下西来见险;面面敢必而负复用日君大向利放其家出食付去臣如大表来无张骑队保待愿拥里野出在是得先路久在以行喊立有为东取年蒋有回亭书臣入南成与上力出得乱。色陵先害是青急能乃日有龙与待当得见迎攻火无曰。常不晚必起乎出请可年然要月是主为也齐大名中!合出有急是重能计半流后为至出登交行江贼见当不刀数本剑加安来害子一有常进月入其胆行是不为是拜是力襄用其在任是玄字知君言拜;是色有府回报待小远大攻入为可与第待必在地行先与要惊不而郡亦降飞指在计待合成路而曰退上是得万因万曾是行小任曾迎面船取此有,声出里为是今设出剑内能满中,行不在出怏小同天马往上待君甚当中半以安问为食余、兵来安万欲万处为小书起期令可开雄接无见马去甲问西能生言要见山天恐请,是。以去奋称待汝期无欲为备;看\n" 252 | ] 253 | } 254 | ], 255 | "source": [ 256 | "iterate()" 257 | ] 258 | }, 259 | { 260 | "cell_type": "code", 261 | "execution_count": 27, 262 | "metadata": { 263 | "collapsed": false 264 | }, 265 | "outputs": [ 266 | { 267 | "name": "stdout", 268 | "output_type": "stream", 269 | "text": [ 270 | "\n", 271 | "----- diversity: 0.2\n", 272 | "----- Generating with seed: \"引许褚、于禁、徐晃分四路下山,奋力急攻,\"\n", 273 | "引许褚、于禁、徐晃分四路下山,奋力急攻,却不于不却前玄乃不不不忽不一不曹曹乃曹曰不不大张不前大不乃两大不曰又曰前不却不玄两乃曹一曹大一却却只不于却玄前却不皆曹大前却却又不将引只不大欲只大只曹忽前以却不不前玄乃却不前前正玄不不前不不却乃张前一不不大不张只大不出只不大自不以乃乃只一不大一不出前曰不张操不不以前不不前其一前说不不不张军来却大不不不不于忽不却不于不不孔玄大不玄一曹于曰不大乃却不乃乃大遂于大以大不张大不前一不遂不玄大于一却玄出一于不不杀却只前不前却曰不不乃不不却不前孙以不忽不却曹乃大又将将不大大只不大不不说一却玄说遂乃急一不只又大以又不不不一以不不玄又玄大曹不不不却曹忽一玄只前大不大以不却张不大大却两不张前不曰玄不自大以玄不不以前曹玄只大曹入不曰大前大乃不以玄玄却以却曹却玄只不一姜不遂却却前大不大却前两乃玄只出而其却出不大不只不前不曰大不不张曹大却不不大布乃不只只乃大只不不却自一说只乃以曹不不不前玄急不张一曹前不玄大前不遂\n", 274 | "\n", 275 | "----- diversity: 0.5\n", 276 | "----- Generating with seed: \"引许褚、于禁、徐晃分四路下山,奋力急攻,\"\n", 277 | "引许褚、于禁、徐晃分四路下山,奋力急攻,即曹谓乃下引请却安不令忽先忽曹前不忽正会张曹去前出引不正布左曹问玄乃不引玄后是:不飞战一遂玄一领操急说于以玄玄追遂军带将张各忽大其令只前不至自以不且皆乃遂自只引看子入一诸关不玄方三玄张只我只然以操分张又一不以引将一前被以只入孙不遂入一二直前至不却师前诸各汝一玄却来说玄上不于只武大而使到使乃袁大皆直长陈都过皆皆来于急故董径说武不忽先诸直立使三玄孔刘玄一曰王以遂自忽军曹张玄大令却说引于曹从说不忽马各大卧曰于至以不流次说曹玄操以前取乃出却只玄以被尚策一急告使曰操于主出左入后操暗以张玄不前玄前皆遂大骂后操问一各只布忽前径之玄高奏大方皆却不曹以前却司大使吾只、必张只何马使云上伏大关曰为长却不至人许曹大问思前至引急刘于大乃到入却军以孙入布以各不夏不乃仁前出分大拜何只来为左忽玄皆只一张诸势人蜀玄只令战又大三能师说将使布前城曹于又说三而两曹大一欲急懿一便差自引孔领而曹鼓无玄至先于一忽只于刘大身刘分与汝又忽\n", 278 | "\n", 279 | "----- diversity: 1.0\n", 280 | "----- Generating with seed: \"引许褚、于禁、徐晃分四路下山,奋力急攻,\"\n", 281 | "引许褚、于禁、徐晃分四路下山,奋力急攻,张欲也以而又又天魏延弟孔见放徐将汝原再马其已一便寻关姜前德回汝以前入共忽司问子看齐上至布径便弃只车曰车而汉修守言箭郭出亦为是号却背余曰魏吴芳前直者登便入赴一马以引许却于司遂乃不不魏左蜀乃观郃望曰名一张引此乃取大得忽李过我我别张令待玄江魏道令大今望玄立曹至日兵左杨先蜀已出故人到马可长东汝已到便名左安帝夺并叫二是吴问天明操黄聚孙立留蛮各观令戈说遂忽渊莫发而只魏诸作公中两迎却入令只从丕真之玄言变艾为自引张言兵已曰了布不延何三败:黄玄断士玄而丞令江臣子立”会会自领知欲维说酒韩刘密良黄故南头皆挺飞、急曰慌离射于万放两两只高敌尽诸然孔三朱前乃望兵已急太须人不暗大了帝为辅言赶更不玄孔于子三入即如官头帝奔群守权一至说待来”守天大;后又将司请布玄守来因拜蒙于贼齐忽城三兵一名去故大使以玄众说休今从人不付告边商一接世将诸朝因现虎便时分刘何前来上守火山张曹肃休两正徐蜀遣陆马军二先与忽飞乃并玄又以亲得遂忽使忽遂吴商\n", 282 | "\n", 283 | "----- diversity: 1.2\n", 284 | "----- Generating with seed: \"引许褚、于禁、徐晃分四路下山,奋力急攻,\"\n", 285 | "引许褚、于禁、徐晃分四路下山,奋力急攻,恪乃师大各父李人说曰遇姜年未“玄来魏令提不蜀领忽夏右密即为帝松岱次云至令遂黄无四却岂贤、又起入至姜内礼正未令即樊”宁何夏营观众慌官诸接于一放武奏陈于立一到若言即郭只但了关但二操帐只乃遂外乃公有因候来玄曰并陈玄又蛮铁此其所至闻岂孔乃时谁出良司列讫于右看令分而前一又孟皆行再造以中愿得武逊负说回乃使关自面及往直河乃退吉却孟曰去面奈提二遂令吕曰岂非往回本其提位退韩曹分真前又壁乃于子谋岱灵和周城遂孔以玄放喜洪又景闻弃引是尚中文问忧亦文引以川问公出皆伏敢兄阵令魏寨箭前小王只中下欲寨遂各皆意引不径死大皆中传喜宫伏德言说正入次皆贼使张绪蔡只重又遂往蜀领到吾前已北于心李马太两臣夫三先前四平入氏孔韩乾仁孙果曰玄丞喊江引魏玄分江大坚料道入把分大瑜唤又立教知于入五孙成各天官吕魏自立布诸到令日法外前关虽怒尚把喊邓说将箭震两为宫须人到言大兄再在于关断然操却伏自大姓帐问死保尽前皆王典说故必后文必至为等奔李宴于因使闻已曹\n" 286 | ] 287 | } 288 | ], 289 | "source": [ 290 | "iterate()" 291 | ] 292 | }, 293 | { 294 | "cell_type": "code", 295 | "execution_count": 28, 296 | "metadata": { 297 | "collapsed": false 298 | }, 299 | "outputs": [ 300 | { 301 | "name": "stdout", 302 | "output_type": "stream", 303 | "text": [ 304 | "\n", 305 | "----- diversity: 0.2\n", 306 | "----- Generating with seed: \":“主公可约马退后,再放马向前,跳过桥去\"\n", 307 | ":“主公可约马退后,再放马向前,跳过桥去。。,,。。。。。。。。。,,。,。。。。。。。。。。。。。,。。。。。。。。。。。,,。。。。。。。,。,。。。。。。。,,,。,。,。,。,。。,。。。,,。。。。,。。。。。。,。,。。,。,。。。,。。。,。。。。。。。。。。。。。,。。。。。,。。。。,。,。,。。。。。。,,。,,。。。,,。,,。。。。,。,。。。,。。。。,。。。。。。。,,。。。。。。。,,。。。,,,。。。,。,,。。,。,。,,。,。。。。。。。,。。。。,。。。。。,。。。。,。。,。,。。。。,。。。。,。。。。。,,。。。。。。。。。。。。,,。。。。。,。。。。。。,。。。,。。。。,。。。。。。,。。,。。,。。。。。。。。。。。。。。,。。。。。。,,。,,。。。。。。,。。。。,,。。。。,。。。。,。。,。,。,。,。,。。,,。。。。。。,。,。。。。。。。。,,。。,,。。。。。,\n", 308 | "\n", 309 | "----- diversity: 0.5\n", 310 | "----- Generating with seed: \":“主公可约马退后,再放马向前,跳过桥去\"\n", 311 | ":“主公可约马退后,再放马向前,跳过桥去。。。,,,。。。。。。。,。,。,。。。,,,。。。。。,,。。。。。。。。。,。,,。。。,。。。。,。,,。,。。。,。。,。。。,。。,。,。,。,。,,。,。。。。,,,,。,。。。,,,,,。。。。。。,。。。。。。,。。。,。。。,。。,,。。。。。。。。,。。,,。。。,,。。,。。。,,,,。。,。,。,,。,。,。。,。,,,。,。,,。,,,。,。。。,。。,。。。。。。,。,。。,。。。。。。,,,,。。。,。。,。,。,。。。。。。。,。。。,,。。。。,,,。。。。。,。。。,之。。。。,。。,,,。。。。,。。,。。,。。,。,。,。。。。。。。。。,,,,,。。。。。。,。,。,。,。,。,。,,。。。。,。。,,。,。。。。。,。。。。。。,。。。。。。,,,,。,。,。。。。。。。。。,。。,,,。。。。。,,。。。,。,,,。,,,。,,,。。。。。。\n", 312 | "\n", 313 | "----- diversity: 1.0\n", 314 | "----- Generating with seed: \":“主公可约马退后,再放马向前,跳过桥去\"\n", 315 | ":“主公可约马退后,再放马向前,跳过桥去,。;商,。。。。。,。,,。会,。。、,。”正。。。,,。”!。。,,正之。,。。,,,。。。。进。,。”。。常,。,。。。和,,遂,,追?,,:,,了,陈,,,守被。!。。用。。。莫,。,。。父。,权忙。、,。。。后前”逊。。。。,。。。,!,,魏。,,。,生。。宫。,,:。。,善。,!。。,使。都,:,。辞,,取回,,。,,。。。。,。足。。。,,,。,。。”。。,尽安。。。,!。。。事。,!。之。,,,。,:。,曹,,。!之。!。。;。。。。。,邓刘,。。。。,之,:如,?,。。剑。。。,。。大。。与城,,。,龙国。。。。之。?,,,。,。。之,,,。,,,。首,。,,安,!求:了。。。?,。,行彼相后;。。。而。,。败,艾。。。。,之。。。人,,,。,。。,。贼。?诸。,。。。肃。。!松山。,。救,。。!。,。。,两:,。,其,,,足,了,,,。,,,,。。。辽。。公,。,矣。,\n", 316 | "\n", 317 | "----- diversity: 1.2\n", 318 | "----- Generating with seed: \":“主公可约马退后,再放马向前,跳过桥去\"\n", 319 | ":“主公可约马退后,再放马向前,跳过桥去臣,,孟,,。怀,诏孙,,众,,,。,前,,,矣”朕,连。。。,。,元,,。皇“。!,,。!之公。,,之。曹遂神。。。;。求,此令,。道”。。把之耳。:,胜。,朝荆山。。,。,乎原一仁,。,全,。。之。。。,日。,盛指此时。,。见四,,,,。为。。。。,孙射,。策师?中,玄玄。!!。。。,,。,,。,。,寨,一!,见,,;先维。,,矣。使徐孔,,耶,,。,。也,徐。,”,,。。。。预。操,。亮来孔,。头望,又:,,五,之;延,之布矣。。船尽。。孝。。。,。。仁。大只毕将。升:。奈,,高。,,。。;勿。李淮,安。,。:;,反,,,。西。引。。说听之。,。。。其忽,,,,,:未公:绣;。。。,。相,,,。,桥,陈。,怒”赵军,与赶。连见。。。。当便。与。。!备也邓曹。;马,是屯妻,小申。。!倒即投。。披。来汉,之吾。后。了,。可,母孟。逃郡收之”。,。。。,敌身。今勿。。。。心城。欲,。回。国\n" 320 | ] 321 | } 322 | ], 323 | "source": [ 324 | "iterate()" 325 | ] 326 | }, 327 | { 328 | "cell_type": "code", 329 | "execution_count": null, 330 | "metadata": { 331 | "collapsed": false 332 | }, 333 | "outputs": [], 334 | "source": [ 335 | "iterate()" 336 | ] 337 | }, 338 | { 339 | "cell_type": "code", 340 | "execution_count": null, 341 | "metadata": { 342 | "collapsed": false 343 | }, 344 | "outputs": [], 345 | "source": [ 346 | "iterate()" 347 | ] 348 | } 349 | ], 350 | "metadata": { 351 | "anaconda-cloud": {}, 352 | "kernelspec": { 353 | "display_name": "Python [conda env:keras-py3]", 354 | "language": "python", 355 | "name": "conda-env-keras-py3-py" 356 | }, 357 | "language_info": { 358 | "codemirror_mode": { 359 | "name": "ipython", 360 | "version": 3 361 | }, 362 | "file_extension": ".py", 363 | "mimetype": "text/x-python", 364 | "name": "python", 365 | "nbconvert_exporter": "python", 366 | "pygments_lexer": "ipython3", 367 | "version": "3.5.2" 368 | } 369 | }, 370 | "nbformat": 4, 371 | "nbformat_minor": 2 372 | } 373 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/lstm-embedding-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": false, 8 | "scrolled": true 9 | }, 10 | "outputs": [ 11 | { 12 | "name": "stderr", 13 | "output_type": "stream", 14 | "text": [ 15 | "Using TensorFlow backend.\n" 16 | ] 17 | } 18 | ], 19 | "source": [ 20 | "from __future__ import print_function\n", 21 | "\n", 22 | "from keras.models import Sequential\n", 23 | "from keras.layers import Embedding, Dense, Activation, Dropout, LSTM\n", 24 | "from keras.optimizers import RMSprop\n", 25 | "import numpy as np\n", 26 | "import random\n", 27 | "import sys" 28 | ] 29 | }, 30 | { 31 | "cell_type": "code", 32 | "execution_count": 2, 33 | "metadata": { 34 | "collapsed": true 35 | }, 36 | "outputs": [], 37 | "source": [ 38 | "embed_size = 128\n", 39 | "maxlen = 20\n", 40 | "step = 3" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 3, 46 | "metadata": { 47 | "collapsed": true 48 | }, 49 | "outputs": [], 50 | "source": [ 51 | "def load_data(path, maxlen=10, step=3):\n", 52 | " text = open(path).read().strip().replace('\\u3000', '').replace('\\n', '')\n", 53 | " print('corpus length:', len(text))\n", 54 | " \n", 55 | " vocab = sorted(list(set(text)))\n", 56 | " print('total words:', len(vocab))\n", 57 | " \n", 58 | " word_to_index = dict((c, i) for i, c in enumerate(vocab))\n", 59 | " index_to_word = dict((i, c) for i, c in enumerate(vocab))\n", 60 | " \n", 61 | " # 切割文本,变成等长序列\n", 62 | " sentences = []\n", 63 | " next_words = []\n", 64 | " for i in range(0, len(text) - maxlen, step):\n", 65 | " sentences.append(list(text[i: i+maxlen]))\n", 66 | " next_words.append(text[i+maxlen])\n", 67 | " print('nb sequences:', len(sentences))\n", 68 | " \n", 69 | " # 生成训练样本\n", 70 | " X = np.asarray([[word_to_index[w] for w in sent[:]] for sent in sentences])\n", 71 | " # y = np.asarray([word_to_index[w] for w in next_words])\n", 72 | " y = np.zeros((len(sentences), len(vocab)))\n", 73 | " for i, word in enumerate(next_words):\n", 74 | " y[i, word_to_index[word]] = 1\n", 75 | " \n", 76 | " return text, X, y, word_to_index, index_to_word, vocab" 77 | ] 78 | }, 79 | { 80 | "cell_type": "code", 81 | "execution_count": 4, 82 | "metadata": { 83 | "collapsed": false, 84 | "scrolled": false 85 | }, 86 | "outputs": [ 87 | { 88 | "name": "stdout", 89 | "output_type": "stream", 90 | "text": [ 91 | "corpus length: 603788\n", 92 | "total words: 4001\n", 93 | "nb sequences: 201256\n", 94 | "(201256, 20)\n" 95 | ] 96 | } 97 | ], 98 | "source": [ 99 | "text, X, y, word_to_index, index_to_word, vocab = load_data('dataset/sanguoyanyi.txt', maxlen, step)\n", 100 | "print(X.shape)" 101 | ] 102 | }, 103 | { 104 | "cell_type": "markdown", 105 | "metadata": {}, 106 | "source": [ 107 | "读取数据,预处理" 108 | ] 109 | }, 110 | { 111 | "cell_type": "code", 112 | "execution_count": 5, 113 | "metadata": { 114 | "collapsed": true 115 | }, 116 | "outputs": [], 117 | "source": [ 118 | "def load_model(vocab_size, embed_size, maxlen=20):\n", 119 | " model = Sequential()\n", 120 | " model.add(Embedding(vocab_size, embed_size, input_length=maxlen))\n", 121 | " model.add(LSTM(embed_size, input_shape=(maxlen, embed_size), return_sequences=False))\n", 122 | " model.add(Dense(vocab_size))\n", 123 | " model.add(Activation('softmax'))\n", 124 | " \n", 125 | " return model" 126 | ] 127 | }, 128 | { 129 | "cell_type": "code", 130 | "execution_count": 6, 131 | "metadata": { 132 | "collapsed": false 133 | }, 134 | "outputs": [], 135 | "source": [ 136 | "model = load_model(len(vocab), embed_size, maxlen)\n", 137 | "optimizer = RMSprop(lr=0.01)\n", 138 | "model.compile(loss='categorical_crossentropy', optimizer=optimizer)" 139 | ] 140 | }, 141 | { 142 | "cell_type": "code", 143 | "execution_count": 20, 144 | "metadata": { 145 | "collapsed": false 146 | }, 147 | "outputs": [], 148 | "source": [ 149 | "def sample(preds, temperature=1.0):\n", 150 | " # helper function to sample an index from a probability array\n", 151 | " preds = np.asarray(preds).astype('float64')\n", 152 | " preds = np.log(preds) / temperature\n", 153 | " exp_preds = np.exp(preds)\n", 154 | " preds = exp_preds / np.sum(exp_preds)\n", 155 | " probas = np.random.multinomial(1, preds, 1)\n", 156 | " return np.argmax(probas)" 157 | ] 158 | }, 159 | { 160 | "cell_type": "code", 161 | "execution_count": 21, 162 | "metadata": { 163 | "collapsed": false 164 | }, 165 | "outputs": [ 166 | { 167 | "name": "stdout", 168 | "output_type": "stream", 169 | "text": [ 170 | "Epoch 1/1\n", 171 | "201256/201256 [==============================] - 36s - loss: 5.3302 \n" 172 | ] 173 | }, 174 | { 175 | "data": { 176 | "text/plain": [ 177 | "" 178 | ] 179 | }, 180 | "execution_count": 21, 181 | "metadata": {}, 182 | "output_type": "execute_result" 183 | } 184 | ], 185 | "source": [ 186 | "model.fit(X, y, batch_size=128, nb_epoch=1)" 187 | ] 188 | }, 189 | { 190 | "cell_type": "code", 191 | "execution_count": 25, 192 | "metadata": { 193 | "collapsed": true 194 | }, 195 | "outputs": [], 196 | "source": [ 197 | "def iterate():\n", 198 | " start_index = random.randint(0, len(text) - maxlen - 1)\n", 199 | " \n", 200 | " for diversity in [0.2, 0.5, 1.0, 1.2]:\n", 201 | " print()\n", 202 | " print('----- diversity:', diversity)\n", 203 | " \n", 204 | " generated = ''\n", 205 | " sentence = text[start_index: start_index + maxlen]\n", 206 | " generated += sentence\n", 207 | " print('----- Generating with seed: \"' + sentence + '\"')\n", 208 | " sys.stdout.write(generated)\n", 209 | " \n", 210 | " for i in range(400):\n", 211 | " x = np.asarray([word_to_index[w] for w in sentence]).reshape([1, maxlen])\n", 212 | " preds = model.predict([x], verbose=0)[0]\n", 213 | " next_index = sample(preds, diversity)\n", 214 | " next_word = index_to_word[next_index]\n", 215 | " \n", 216 | " generated += next_word\n", 217 | " sentence = sentence[1:] + next_char\n", 218 | " \n", 219 | " sys.stdout.write(next_word)\n", 220 | " sys.stdout.flush()\n", 221 | " print()" 222 | ] 223 | }, 224 | { 225 | "cell_type": "code", 226 | "execution_count": 26, 227 | "metadata": { 228 | "collapsed": false, 229 | "scrolled": false 230 | }, 231 | "outputs": [ 232 | { 233 | "name": "stdout", 234 | "output_type": "stream", 235 | "text": [ 236 | "\n", 237 | "----- diversity: 0.2\n", 238 | "----- Generating with seed: \"劳了毕,乃聚诸将曰:“司马昭兵败北归,正\"\n", 239 | "劳了毕,乃聚诸将曰:“司马昭兵败北归,正是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是出是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是中是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是出是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是是\n", 240 | "\n", 241 | "----- diversity: 0.5\n", 242 | "----- Generating with seed: \"劳了毕,乃聚诸将曰:“司马昭兵败北归,正\"\n", 243 | "劳了毕,乃聚诸将曰:“司马昭兵败北归,正中是是见见是敢中是是在中是是是是是行是失以是是是其是是出当是是是是是是是是是见出上是是与是是是是刀为是见是无是是中是待见是曰面以为有是是不是不是是是在是是中是是行是是是是是在中是是是是是上是是中中中是是是曰是是为是见是是是是上是是是是是是是是是是是是是见待是是是是也是是是在是安是是见是是是是出是回是不是是是大起是是是得是不是是为是是是不是是见是是是是在见中。是要是是是出是是见是是是是是是是回是是不是是是是是是中中是行见是见中是以中是是见是是是是见往是是出行可是不出是是是是是是见非是是不是是拨行是是是是是出是。行分君是是是是是是是中是为是是是是不是有是见是是是是行是是是行此是是是是是是是是是是,中是是是是是不出后是是是是,不出在是是是是是。是万是是是出是欲是是在是是是中是是。为是在是是下是小出是是中出是是是待行是中是生是是是是上待欲中是得是是是得是中出出起是是是是中在是是行为是得是来是是一见\n", 244 | "\n", 245 | "----- diversity: 1.0\n", 246 | "----- Generating with seed: \"劳了毕,乃聚诸将曰:“司马昭兵败北归,正\"\n", 247 | "劳了毕,乃聚诸将曰:“司马昭兵败北归,正中之中先直小在出有敢在中不是此汉火言为为是皇见无骑国中意说使出归此皆在随在开人是是是入是虎是出往有回来见可同是降连要取遇然前待平;一与纵上为反之有;起面伏此坐在为是才势为救见不大见见济当岂是矣议取用事为是是此是回声入使伤为处是问。是是为行会去。外是是平来东更司遇得相西贤业安看来中行。是回自回子迎内合路备报中是主起有三迎为不在。朝行行见是见。是上见中去老在称东不许遇相与余余行襄自足在至信救陆被中中在行如降看书重北问回所不夏行自门食可出回先有不是是要从分行来恐至事是见见得臣有问有行世舍此声把中远不是立已攻收中大万得乘在之出见遇解是待是母弃而必万见是多住见从中是是是应攻东北安敢拜多在可张今生不南以速得是是出万见势信拜不勇是计曰去星擒与开在喝河骑赐可欲中下是既力以逃是行边此曰图今下是事擒箭,是知封道出斩去为出风中以指与故在三与见人是去皇山当立令是此见可是出结议有在物箭说与中不、;是是安是以是信是行\n", 248 | "\n", 249 | "----- diversity: 1.2\n", 250 | "----- Generating with seed: \"劳了毕,乃聚诸将曰:“司马昭兵败北归,正\"\n", 251 | "劳了毕,乃聚诸将曰:“司马昭兵败北归,正带见野着是阜设不望中禁变力心遇可降无也故六出是遇出东,未多惧心救下与因多保且远是东从意未起上中家投谏归皆,在威,不平出无不心见意当是要起回朝合报自能下西来见险;面面敢必而负复用日君大向利放其家出食付去臣如大表来无张骑队保待愿拥里野出在是得先路久在以行喊立有为东取年蒋有回亭书臣入南成与上力出得乱。色陵先害是青急能乃日有龙与待当得见迎攻火无曰。常不晚必起乎出请可年然要月是主为也齐大名中!合出有急是重能计半流后为至出登交行江贼见当不刀数本剑加安来害子一有常进月入其胆行是不为是拜是力襄用其在任是玄字知君言拜;是色有府回报待小远大攻入为可与第待必在地行先与要惊不而郡亦降飞指在计待合成路而曰退上是得万因万曾是行小任曾迎面船取此有,声出里为是今设出剑内能满中,行不在出怏小同天马往上待君甚当中半以安问为食余、兵来安万欲万处为小书起期令可开雄接无见马去甲问西能生言要见山天恐请,是。以去奋称待汝期无欲为备;看\n" 252 | ] 253 | } 254 | ], 255 | "source": [ 256 | "iterate()" 257 | ] 258 | }, 259 | { 260 | "cell_type": "code", 261 | "execution_count": 27, 262 | "metadata": { 263 | "collapsed": false 264 | }, 265 | "outputs": [ 266 | { 267 | "name": "stdout", 268 | "output_type": "stream", 269 | "text": [ 270 | "\n", 271 | "----- diversity: 0.2\n", 272 | "----- Generating with seed: \"引许褚、于禁、徐晃分四路下山,奋力急攻,\"\n", 273 | "引许褚、于禁、徐晃分四路下山,奋力急攻,却不于不却前玄乃不不不忽不一不曹曹乃曹曰不不大张不前大不乃两大不曰又曰前不却不玄两乃曹一曹大一却却只不于却玄前却不皆曹大前却却又不将引只不大欲只大只曹忽前以却不不前玄乃却不前前正玄不不前不不却乃张前一不不大不张只大不出只不大自不以乃乃只一不大一不出前曰不张操不不以前不不前其一前说不不不张军来却大不不不不于忽不却不于不不孔玄大不玄一曹于曰不大乃却不乃乃大遂于大以大不张大不前一不遂不玄大于一却玄出一于不不杀却只前不前却曰不不乃不不却不前孙以不忽不却曹乃大又将将不大大只不大不不说一却玄说遂乃急一不只又大以又不不不一以不不玄又玄大曹不不不却曹忽一玄只前大不大以不却张不大大却两不张前不曰玄不自大以玄不不以前曹玄只大曹入不曰大前大乃不以玄玄却以却曹却玄只不一姜不遂却却前大不大却前两乃玄只出而其却出不大不只不前不曰大不不张曹大却不不大布乃不只只乃大只不不却自一说只乃以曹不不不前玄急不张一曹前不玄大前不遂\n", 274 | "\n", 275 | "----- diversity: 0.5\n", 276 | "----- Generating with seed: \"引许褚、于禁、徐晃分四路下山,奋力急攻,\"\n", 277 | "引许褚、于禁、徐晃分四路下山,奋力急攻,即曹谓乃下引请却安不令忽先忽曹前不忽正会张曹去前出引不正布左曹问玄乃不引玄后是:不飞战一遂玄一领操急说于以玄玄追遂军带将张各忽大其令只前不至自以不且皆乃遂自只引看子入一诸关不玄方三玄张只我只然以操分张又一不以引将一前被以只入孙不遂入一二直前至不却师前诸各汝一玄却来说玄上不于只武大而使到使乃袁大皆直长陈都过皆皆来于急故董径说武不忽先诸直立使三玄孔刘玄一曰王以遂自忽军曹张玄大令却说引于曹从说不忽马各大卧曰于至以不流次说曹玄操以前取乃出却只玄以被尚策一急告使曰操于主出左入后操暗以张玄不前玄前皆遂大骂后操问一各只布忽前径之玄高奏大方皆却不曹以前却司大使吾只、必张只何马使云上伏大关曰为长却不至人许曹大问思前至引急刘于大乃到入却军以孙入布以各不夏不乃仁前出分大拜何只来为左忽玄皆只一张诸势人蜀玄只令战又大三能师说将使布前城曹于又说三而两曹大一欲急懿一便差自引孔领而曹鼓无玄至先于一忽只于刘大身刘分与汝又忽\n", 278 | "\n", 279 | "----- diversity: 1.0\n", 280 | "----- Generating with seed: \"引许褚、于禁、徐晃分四路下山,奋力急攻,\"\n", 281 | "引许褚、于禁、徐晃分四路下山,奋力急攻,张欲也以而又又天魏延弟孔见放徐将汝原再马其已一便寻关姜前德回汝以前入共忽司问子看齐上至布径便弃只车曰车而汉修守言箭郭出亦为是号却背余曰魏吴芳前直者登便入赴一马以引许却于司遂乃不不魏左蜀乃观郃望曰名一张引此乃取大得忽李过我我别张令待玄江魏道令大今望玄立曹至日兵左杨先蜀已出故人到马可长东汝已到便名左安帝夺并叫二是吴问天明操黄聚孙立留蛮各观令戈说遂忽渊莫发而只魏诸作公中两迎却入令只从丕真之玄言变艾为自引张言兵已曰了布不延何三败:黄玄断士玄而丞令江臣子立”会会自领知欲维说酒韩刘密良黄故南头皆挺飞、急曰慌离射于万放两两只高敌尽诸然孔三朱前乃望兵已急太须人不暗大了帝为辅言赶更不玄孔于子三入即如官头帝奔群守权一至说待来”守天大;后又将司请布玄守来因拜蒙于贼齐忽城三兵一名去故大使以玄众说休今从人不付告边商一接世将诸朝因现虎便时分刘何前来上守火山张曹肃休两正徐蜀遣陆马军二先与忽飞乃并玄又以亲得遂忽使忽遂吴商\n", 282 | "\n", 283 | "----- diversity: 1.2\n", 284 | "----- Generating with seed: \"引许褚、于禁、徐晃分四路下山,奋力急攻,\"\n", 285 | "引许褚、于禁、徐晃分四路下山,奋力急攻,恪乃师大各父李人说曰遇姜年未“玄来魏令提不蜀领忽夏右密即为帝松岱次云至令遂黄无四却岂贤、又起入至姜内礼正未令即樊”宁何夏营观众慌官诸接于一放武奏陈于立一到若言即郭只但了关但二操帐只乃遂外乃公有因候来玄曰并陈玄又蛮铁此其所至闻岂孔乃时谁出良司列讫于右看令分而前一又孟皆行再造以中愿得武逊负说回乃使关自面及往直河乃退吉却孟曰去面奈提二遂令吕曰岂非往回本其提位退韩曹分真前又壁乃于子谋岱灵和周城遂孔以玄放喜洪又景闻弃引是尚中文问忧亦文引以川问公出皆伏敢兄阵令魏寨箭前小王只中下欲寨遂各皆意引不径死大皆中传喜宫伏德言说正入次皆贼使张绪蔡只重又遂往蜀领到吾前已北于心李马太两臣夫三先前四平入氏孔韩乾仁孙果曰玄丞喊江引魏玄分江大坚料道入把分大瑜唤又立教知于入五孙成各天官吕魏自立布诸到令日法外前关虽怒尚把喊邓说将箭震两为宫须人到言大兄再在于关断然操却伏自大姓帐问死保尽前皆王典说故必后文必至为等奔李宴于因使闻已曹\n" 286 | ] 287 | } 288 | ], 289 | "source": [ 290 | "iterate()" 291 | ] 292 | }, 293 | { 294 | "cell_type": "code", 295 | "execution_count": 28, 296 | "metadata": { 297 | "collapsed": false 298 | }, 299 | "outputs": [ 300 | { 301 | "name": "stdout", 302 | "output_type": "stream", 303 | "text": [ 304 | "\n", 305 | "----- diversity: 0.2\n", 306 | "----- Generating with seed: \":“主公可约马退后,再放马向前,跳过桥去\"\n", 307 | ":“主公可约马退后,再放马向前,跳过桥去。。,,。。。。。。。。。,,。,。。。。。。。。。。。。。,。。。。。。。。。。。,,。。。。。。。,。,。。。。。。。,,,。,。,。,。,。。,。。。,,。。。。,。。。。。。,。,。。,。,。。。,。。。,。。。。。。。。。。。。。,。。。。。,。。。。,。,。,。。。。。。,,。,,。。。,,。,,。。。。,。,。。。,。。。。,。。。。。。。,,。。。。。。。,,。。。,,,。。。,。,,。。,。,。,,。,。。。。。。。,。。。。,。。。。。,。。。。,。。,。,。。。。,。。。。,。。。。。,,。。。。。。。。。。。。,,。。。。。,。。。。。。,。。。,。。。。,。。。。。。,。。,。。,。。。。。。。。。。。。。。,。。。。。。,,。,,。。。。。。,。。。。,,。。。。,。。。。,。。,。,。,。,。,。。,,。。。。。。,。,。。。。。。。。,,。。,,。。。。。,\n", 308 | "\n", 309 | "----- diversity: 0.5\n", 310 | "----- Generating with seed: \":“主公可约马退后,再放马向前,跳过桥去\"\n", 311 | ":“主公可约马退后,再放马向前,跳过桥去。。。,,,。。。。。。。,。,。,。。。,,,。。。。。,,。。。。。。。。。,。,,。。。,。。。。,。,,。,。。。,。。,。。。,。。,。,。,。,。,,。,。。。。,,,,。,。。。,,,,,。。。。。。,。。。。。。,。。。,。。。,。。,,。。。。。。。。,。。,,。。。,,。。,。。。,,,,。。,。,。,,。,。,。。,。,,,。,。,,。,,,。,。。。,。。,。。。。。。,。,。。,。。。。。。,,,,。。。,。。,。,。,。。。。。。。,。。。,,。。。。,,,。。。。。,。。。,之。。。。,。。,,,。。。。,。。,。。,。。,。,。,。。。。。。。。。,,,,,。。。。。。,。,。,。,。,。,。,,。。。。,。。,,。,。。。。。,。。。。。。,。。。。。。,,,,。,。,。。。。。。。。。,。。,,,。。。。。,,。。。,。,,,。,,,。,,,。。。。。。\n", 312 | "\n", 313 | "----- diversity: 1.0\n", 314 | "----- Generating with seed: \":“主公可约马退后,再放马向前,跳过桥去\"\n", 315 | ":“主公可约马退后,再放马向前,跳过桥去,。;商,。。。。。,。,,。会,。。、,。”正。。。,,。”!。。,,正之。,。。,,,。。。。进。,。”。。常,。,。。。和,,遂,,追?,,:,,了,陈,,,守被。!。。用。。。莫,。,。。父。,权忙。、,。。。后前”逊。。。。,。。。,!,,魏。,,。,生。。宫。,,:。。,善。,!。。,使。都,:,。辞,,取回,,。,,。。。。,。足。。。,,,。,。。”。。,尽安。。。,!。。。事。,!。之。,,,。,:。,曹,,。!之。!。。;。。。。。,邓刘,。。。。,之,:如,?,。。剑。。。,。。大。。与城,,。,龙国。。。。之。?,,,。,。。之,,,。,,,。首,。,,安,!求:了。。。?,。,行彼相后;。。。而。,。败,艾。。。。,之。。。人,,,。,。。,。贼。?诸。,。。。肃。。!松山。,。救,。。!。,。。,两:,。,其,,,足,了,,,。,,,,。。。辽。。公,。,矣。,\n", 316 | "\n", 317 | "----- diversity: 1.2\n", 318 | "----- Generating with seed: \":“主公可约马退后,再放马向前,跳过桥去\"\n", 319 | ":“主公可约马退后,再放马向前,跳过桥去臣,,孟,,。怀,诏孙,,众,,,。,前,,,矣”朕,连。。。,。,元,,。皇“。!,,。!之公。,,之。曹遂神。。。;。求,此令,。道”。。把之耳。:,胜。,朝荆山。。,。,乎原一仁,。,全,。。之。。。,日。,盛指此时。,。见四,,,,。为。。。。,孙射,。策师?中,玄玄。!!。。。,,。,,。,。,寨,一!,见,,;先维。,,矣。使徐孔,,耶,,。,。也,徐。,”,,。。。。预。操,。亮来孔,。头望,又:,,五,之;延,之布矣。。船尽。。孝。。。,。。仁。大只毕将。升:。奈,,高。,,。。;勿。李淮,安。,。:;,反,,,。西。引。。说听之。,。。。其忽,,,,,:未公:绣;。。。,。相,,,。,桥,陈。,怒”赵军,与赶。连见。。。。当便。与。。!备也邓曹。;马,是屯妻,小申。。!倒即投。。披。来汉,之吾。后。了,。可,母孟。逃郡收之”。,。。。,敌身。今勿。。。。心城。欲,。回。国\n" 320 | ] 321 | } 322 | ], 323 | "source": [ 324 | "iterate()" 325 | ] 326 | }, 327 | { 328 | "cell_type": "code", 329 | "execution_count": null, 330 | "metadata": { 331 | "collapsed": false 332 | }, 333 | "outputs": [], 334 | "source": [ 335 | "iterate()" 336 | ] 337 | }, 338 | { 339 | "cell_type": "code", 340 | "execution_count": null, 341 | "metadata": { 342 | "collapsed": false 343 | }, 344 | "outputs": [], 345 | "source": [ 346 | "iterate()" 347 | ] 348 | } 349 | ], 350 | "metadata": { 351 | "anaconda-cloud": {}, 352 | "kernelspec": { 353 | "display_name": "Python [conda env:keras-py3]", 354 | "language": "python", 355 | "name": "conda-env-keras-py3-py" 356 | }, 357 | "language_info": { 358 | "codemirror_mode": { 359 | "name": "ipython", 360 | "version": 3 361 | }, 362 | "file_extension": ".py", 363 | "mimetype": "text/x-python", 364 | "name": "python", 365 | "nbconvert_exporter": "python", 366 | "pygments_lexer": "ipython3", 367 | "version": "3.5.2" 368 | } 369 | }, 370 | "nbformat": 4, 371 | "nbformat_minor": 2 372 | } 373 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/rnn-dummy-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": null, 6 | "metadata": { 7 | "collapsed": false 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "from keras.layers import Input\n", 12 | "from keras.layers.recurrent import SimpleRNN, LSTM, GRU\n", 13 | "from keras.models import Model\n", 14 | "import numpy as np" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 2, 20 | "metadata": { 21 | "collapsed": true 22 | }, 23 | "outputs": [], 24 | "source": [ 25 | "input_dims, output_dims = 10, 1\n", 26 | "sequence_length = 20\n", 27 | "n_test = 10" 28 | ] 29 | }, 30 | { 31 | "cell_type": "code", 32 | "execution_count": 3, 33 | "metadata": { 34 | "collapsed": false 35 | }, 36 | "outputs": [], 37 | "source": [ 38 | "rng = np.random.RandomState(42)\n", 39 | "get_rand = lambda *shape: np.asarray(rng.rand(*shape) > 0.5, dtype='float32')\n", 40 | "X_data = np.asarray([get_rand(sequence_length, input_dims) for _ in range(n_test)])\n", 41 | "y_data = np.asarray([get_rand(sequence_length, output_dims) for _ in range(n_test)])" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 4, 47 | "metadata": { 48 | "collapsed": false 49 | }, 50 | "outputs": [ 51 | { 52 | "data": { 53 | "text/plain": [ 54 | "TensorShape([Dimension(None), Dimension(20), Dimension(10)])" 55 | ] 56 | }, 57 | "execution_count": 4, 58 | "metadata": {}, 59 | "output_type": "execute_result" 60 | } 61 | ], 62 | "source": [ 63 | "input_sequence = Input(shape=(sequence_length, input_dims,), dtype='float32')\n", 64 | "input_sequence.get_shape()" 65 | ] 66 | }, 67 | { 68 | "cell_type": "code", 69 | "execution_count": 5, 70 | "metadata": { 71 | "collapsed": true 72 | }, 73 | "outputs": [], 74 | "source": [ 75 | "vanilla = SimpleRNN(output_dims, return_sequences=True)(input_sequence)\n", 76 | "lstm = LSTM(output_dims, return_sequences=True)(input_sequence)\n", 77 | "gru = GRU(output_dims, return_sequences=True)(input_sequence)\n", 78 | "rnns = [vanilla]" 79 | ] 80 | }, 81 | { 82 | "cell_type": "code", 83 | "execution_count": 6, 84 | "metadata": { 85 | "collapsed": false, 86 | "scrolled": true 87 | }, 88 | "outputs": [ 89 | { 90 | "name": "stdout", 91 | "output_type": "stream", 92 | "text": [ 93 | "Epoch 1/1000\n" 94 | ] 95 | }, 96 | { 97 | "ename": "InternalError", 98 | "evalue": "Blas SGEMM launch failed : a.shape=(200, 10), b.shape=(10, 1), m=200, n=1, k=10\n\t [[Node: MatMul = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device=\"/job:localhost/replica:0/task:0/gpu:0\"](Reshape, simplernn_1_W/read)]]\n\t [[Node: mul_1/_37 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/cpu:0\", send_device=\"/job:localhost/replica:0/task:0/gpu:0\", send_device_incarnation=1, tensor_name=\"edge_617_mul_1\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/cpu:0\"]()]]\n\nCaused by op 'MatMul', defined at:\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/runpy.py\", line 184, in _run_module_as_main\n \"__main__\", mod_spec)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/__main__.py\", line 3, in \n app.launch_new_instance()\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/traitlets/config/application.py\", line 658, in launch_instance\n app.start()\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/kernelapp.py\", line 474, in start\n ioloop.IOLoop.instance().start()\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/zmq/eventloop/ioloop.py\", line 177, in start\n super(ZMQIOLoop, self).start()\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tornado/ioloop.py\", line 887, in start\n handler_func(fd_obj, events)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tornado/stack_context.py\", line 275, in null_wrapper\n return fn(*args, **kwargs)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py\", line 440, in _handle_events\n self._handle_recv()\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py\", line 472, in _handle_recv\n self._run_callback(callback, msg)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py\", line 414, in _run_callback\n callback(*args, **kwargs)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tornado/stack_context.py\", line 275, in null_wrapper\n return fn(*args, **kwargs)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/kernelbase.py\", line 276, in dispatcher\n return self.dispatch_shell(stream, msg)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/kernelbase.py\", line 228, in dispatch_shell\n handler(stream, idents, msg)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/kernelbase.py\", line 390, in execute_request\n user_expressions, allow_stdin)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/ipkernel.py\", line 196, in do_execute\n res = shell.run_cell(code, store_history=store_history, silent=silent)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/zmqshell.py\", line 501, in run_cell\n return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2717, in run_cell\n interactivity=interactivity, compiler=compiler, result=result)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2821, in run_ast_nodes\n if self.run_code(code, result):\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2881, in run_code\n exec(code_obj, self.user_global_ns, self.user_ns)\n File \"\", line 1, in \n vanilla = SimpleRNN(output_dims, return_sequences=True)(input_sequence)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/engine/topology.py\", line 517, in __call__\n self.add_inbound_node(inbound_layers, node_indices, tensor_indices)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/engine/topology.py\", line 571, in add_inbound_node\n Node.create_node(self, inbound_layers, node_indices, tensor_indices)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/engine/topology.py\", line 155, in create_node\n output_tensors = to_list(outbound_layer.call(input_tensors[0], mask=input_masks[0]))\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/layers/recurrent.py\", line 219, in call\n preprocessed_input = self.preprocess_input(x)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/layers/recurrent.py\", line 358, in preprocess_input\n timesteps)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/layers/recurrent.py\", line 30, in time_distributed_dense\n x = K.dot(x, w)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py\", line 386, in dot\n out = tf.matmul(x, y)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/ops/math_ops.py\", line 1729, in matmul\n a, b, transpose_a=transpose_a, transpose_b=transpose_b, name=name)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/ops/gen_math_ops.py\", line 1442, in _mat_mul\n transpose_b=transpose_b, name=name)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py\", line 759, in apply_op\n op_def=op_def)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py\", line 2240, in create_op\n original_op=self._default_original_op, op_def=op_def)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py\", line 1128, in __init__\n self._traceback = _extract_stack()\n\nInternalError (see above for traceback): Blas SGEMM launch failed : a.shape=(200, 10), b.shape=(10, 1), m=200, n=1, k=10\n\t [[Node: MatMul = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device=\"/job:localhost/replica:0/task:0/gpu:0\"](Reshape, simplernn_1_W/read)]]\n\t [[Node: mul_1/_37 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/cpu:0\", send_device=\"/job:localhost/replica:0/task:0/gpu:0\", send_device_incarnation=1, tensor_name=\"edge_617_mul_1\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/cpu:0\"]()]]\n", 99 | "output_type": "error", 100 | "traceback": [ 101 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 102 | "\u001b[0;31mInternalError\u001b[0m Traceback (most recent call last)", 103 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_call\u001b[0;34m(self, fn, *args)\u001b[0m\n\u001b[1;32m 1020\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1021\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1022\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mOpError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 104 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_run_fn\u001b[0;34m(session, feed_dict, fetch_list, target_list, options, run_metadata)\u001b[0m\n\u001b[1;32m 1002\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_list\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1003\u001b[0;31m status, run_metadata)\n\u001b[0m\u001b[1;32m 1004\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", 105 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/contextlib.py\u001b[0m in \u001b[0;36m__exit__\u001b[0;34m(self, type, value, traceback)\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 66\u001b[0;31m \u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgen\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 67\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mStopIteration\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 106 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/framework/errors_impl.py\u001b[0m in \u001b[0;36mraise_exception_on_not_ok_status\u001b[0;34m()\u001b[0m\n\u001b[1;32m 468\u001b[0m \u001b[0mcompat\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_text\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpywrap_tensorflow\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_Message\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstatus\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 469\u001b[0;31m pywrap_tensorflow.TF_GetCode(status))\n\u001b[0m\u001b[1;32m 470\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 107 | "\u001b[0;31mInternalError\u001b[0m: Blas SGEMM launch failed : a.shape=(200, 10), b.shape=(10, 1), m=200, n=1, k=10\n\t [[Node: MatMul = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device=\"/job:localhost/replica:0/task:0/gpu:0\"](Reshape, simplernn_1_W/read)]]\n\t [[Node: mul_1/_37 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/cpu:0\", send_device=\"/job:localhost/replica:0/task:0/gpu:0\", send_device_incarnation=1, tensor_name=\"edge_617_mul_1\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/cpu:0\"]()]]", 108 | "\nDuring handling of the above exception, another exception occurred:\n", 109 | "\u001b[0;31mInternalError\u001b[0m Traceback (most recent call last)", 110 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mModel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0minput_sequence\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moutput\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mrnn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moptimizer\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'rmsprop'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'binary_crossentropy'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mX_data\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0my_data\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnb_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1000\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", 111 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, nb_epoch, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch)\u001b[0m\n\u001b[1;32m 1109\u001b[0m \u001b[0mval_f\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mval_f\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mval_ins\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mval_ins\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshuffle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mshuffle\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1110\u001b[0m \u001b[0mcallback_metrics\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcallback_metrics\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1111\u001b[0;31m initial_epoch=initial_epoch)\n\u001b[0m\u001b[1;32m 1112\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1113\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m32\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mverbose\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msample_weight\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 112 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/engine/training.py\u001b[0m in \u001b[0;36m_fit_loop\u001b[0;34m(self, f, ins, out_labels, batch_size, nb_epoch, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch)\u001b[0m\n\u001b[1;32m 824\u001b[0m \u001b[0mbatch_logs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'size'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_ids\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 825\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_batch_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_index\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_logs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 826\u001b[0;31m \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mins_batch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 827\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 828\u001b[0m \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 113 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, inputs)\u001b[0m\n\u001b[1;32m 1094\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtensor\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1095\u001b[0m \u001b[0msession\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_session\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1096\u001b[0;31m \u001b[0mupdated\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdates_op\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfeed_dict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1097\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mupdated\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1098\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", 114 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 764\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 765\u001b[0m result = self._run(None, fetches, feed_dict, options_ptr,\n\u001b[0;32m--> 766\u001b[0;31m run_metadata_ptr)\n\u001b[0m\u001b[1;32m 767\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 768\u001b[0m \u001b[0mproto_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 115 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_run\u001b[0;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 962\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfinal_fetches\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mfinal_targets\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 963\u001b[0m results = self._do_run(handle, final_targets, final_fetches,\n\u001b[0;32m--> 964\u001b[0;31m feed_dict_string, options, run_metadata)\n\u001b[0m\u001b[1;32m 965\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 966\u001b[0m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 116 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_run\u001b[0;34m(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 1012\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhandle\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1013\u001b[0m return self._do_call(_run_fn, self._session, feed_dict, fetch_list,\n\u001b[0;32m-> 1014\u001b[0;31m target_list, options, run_metadata)\n\u001b[0m\u001b[1;32m 1015\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1016\u001b[0m return self._do_call(_prun_fn, self._session, handle, feed_dict,\n", 117 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_call\u001b[0;34m(self, fn, *args)\u001b[0m\n\u001b[1;32m 1032\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1033\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1034\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnode_def\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mop\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmessage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1035\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1036\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_extend_graph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 118 | "\u001b[0;31mInternalError\u001b[0m: Blas SGEMM launch failed : a.shape=(200, 10), b.shape=(10, 1), m=200, n=1, k=10\n\t [[Node: MatMul = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device=\"/job:localhost/replica:0/task:0/gpu:0\"](Reshape, simplernn_1_W/read)]]\n\t [[Node: mul_1/_37 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/cpu:0\", send_device=\"/job:localhost/replica:0/task:0/gpu:0\", send_device_incarnation=1, tensor_name=\"edge_617_mul_1\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/cpu:0\"]()]]\n\nCaused by op 'MatMul', defined at:\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/runpy.py\", line 184, in _run_module_as_main\n \"__main__\", mod_spec)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/__main__.py\", line 3, in \n app.launch_new_instance()\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/traitlets/config/application.py\", line 658, in launch_instance\n app.start()\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/kernelapp.py\", line 474, in start\n ioloop.IOLoop.instance().start()\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/zmq/eventloop/ioloop.py\", line 177, in start\n super(ZMQIOLoop, self).start()\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tornado/ioloop.py\", line 887, in start\n handler_func(fd_obj, events)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tornado/stack_context.py\", line 275, in null_wrapper\n return fn(*args, **kwargs)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py\", line 440, in _handle_events\n self._handle_recv()\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py\", line 472, in _handle_recv\n self._run_callback(callback, msg)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/zmq/eventloop/zmqstream.py\", line 414, in _run_callback\n callback(*args, **kwargs)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tornado/stack_context.py\", line 275, in null_wrapper\n return fn(*args, **kwargs)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/kernelbase.py\", line 276, in dispatcher\n return self.dispatch_shell(stream, msg)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/kernelbase.py\", line 228, in dispatch_shell\n handler(stream, idents, msg)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/kernelbase.py\", line 390, in execute_request\n user_expressions, allow_stdin)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/ipkernel.py\", line 196, in do_execute\n res = shell.run_cell(code, store_history=store_history, silent=silent)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/ipykernel/zmqshell.py\", line 501, in run_cell\n return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2717, in run_cell\n interactivity=interactivity, compiler=compiler, result=result)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2821, in run_ast_nodes\n if self.run_code(code, result):\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2881, in run_code\n exec(code_obj, self.user_global_ns, self.user_ns)\n File \"\", line 1, in \n vanilla = SimpleRNN(output_dims, return_sequences=True)(input_sequence)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/engine/topology.py\", line 517, in __call__\n self.add_inbound_node(inbound_layers, node_indices, tensor_indices)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/engine/topology.py\", line 571, in add_inbound_node\n Node.create_node(self, inbound_layers, node_indices, tensor_indices)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/engine/topology.py\", line 155, in create_node\n output_tensors = to_list(outbound_layer.call(input_tensors[0], mask=input_masks[0]))\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/layers/recurrent.py\", line 219, in call\n preprocessed_input = self.preprocess_input(x)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/layers/recurrent.py\", line 358, in preprocess_input\n timesteps)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/layers/recurrent.py\", line 30, in time_distributed_dense\n x = K.dot(x, w)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py\", line 386, in dot\n out = tf.matmul(x, y)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/ops/math_ops.py\", line 1729, in matmul\n a, b, transpose_a=transpose_a, transpose_b=transpose_b, name=name)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/ops/gen_math_ops.py\", line 1442, in _mat_mul\n transpose_b=transpose_b, name=name)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py\", line 759, in apply_op\n op_def=op_def)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py\", line 2240, in create_op\n original_op=self._default_original_op, op_def=op_def)\n File \"/home/gaussic/anaconda2/envs/keras-py3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py\", line 1128, in __init__\n self._traceback = _extract_stack()\n\nInternalError (see above for traceback): Blas SGEMM launch failed : a.shape=(200, 10), b.shape=(10, 1), m=200, n=1, k=10\n\t [[Node: MatMul = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device=\"/job:localhost/replica:0/task:0/gpu:0\"](Reshape, simplernn_1_W/read)]]\n\t [[Node: mul_1/_37 = _Recv[client_terminated=false, recv_device=\"/job:localhost/replica:0/task:0/cpu:0\", send_device=\"/job:localhost/replica:0/task:0/gpu:0\", send_device_incarnation=1, tensor_name=\"edge_617_mul_1\", tensor_type=DT_FLOAT, _device=\"/job:localhost/replica:0/task:0/cpu:0\"]()]]\n" 119 | ] 120 | } 121 | ], 122 | "source": [ 123 | "for rnn in rnns:\n", 124 | " model = Model(input=[input_sequence], output=rnn)\n", 125 | " model.compile(optimizer='rmsprop', loss='binary_crossentropy')\n", 126 | " model.fit([X_data], [y_data], nb_epoch=1000)" 127 | ] 128 | } 129 | ], 130 | "metadata": { 131 | "anaconda-cloud": {}, 132 | "kernelspec": { 133 | "display_name": "Python [conda env:keras-py3]", 134 | "language": "python", 135 | "name": "conda-env-keras-py3-py" 136 | }, 137 | "language_info": { 138 | "codemirror_mode": { 139 | "name": "ipython", 140 | "version": 3 141 | }, 142 | "file_extension": ".py", 143 | "mimetype": "text/x-python", 144 | "name": "python", 145 | "nbconvert_exporter": "python", 146 | "pygments_lexer": "ipython3", 147 | "version": "3.5.2" 148 | } 149 | }, 150 | "nbformat": 4, 151 | "nbformat_minor": 1 152 | } 153 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/babi-rnn-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# bAbI RNN\n", 8 | "\n", 9 | "Trains two recurrent neural networks based upon a story and a question. The resulting merged vector is then queried to answer a range of bAbI tasks.\n", 10 | "\n", 11 | "The results are comparable to those for an LSTM model provided in Weston et al.:\n", 12 | "\"Towards AI-Complete Question Answering: A Set of Prerequisite Toy Tasks\"\n", 13 | "http://arxiv.org/abs/1502.05698\n", 14 | "\n", 15 | "Task Number | FB LSTM Baseline | Keras QA\n", 16 | "--- | --- | ---\n", 17 | "QA1 - Single Supporting Fact | 50 | 100.0\n", 18 | "QA2 - Two Supporting Facts | 20 | 50.0\n", 19 | "QA3 - Three Supporting Facts | 20 | 20.5\n", 20 | "QA4 - Two Arg. Relations | 61 | 62.9\n", 21 | "QA5 - Three Arg. Relations | 70 | 61.9\n", 22 | "QA6 - Yes/No Questions | 48 | 50.7\n", 23 | "QA7 - Counting | 49 | 78.9\n", 24 | "QA8 - Lists/Sets | 45 | 77.2\n", 25 | "QA9 - Simple Negation | 64 | 64.0\n", 26 | "QA10 - Indefinite Knowledge | 44 | 47.7\n", 27 | "QA11 - Basic Coreference | 72 | 74.9\n", 28 | "QA12 - Conjunction | 74 | 76.4\n", 29 | "QA13 - Compound Coreference | 94 | 94.4\n", 30 | "QA14 - Time Reasoning | 27 | 34.8\n", 31 | "QA15 - Basic Deduction | 21 | 32.4\n", 32 | "QA16 - Basic Induction | 23 | 50.6\n", 33 | "QA17 - Positional Reasoning | 51 | 49.1\n", 34 | "QA18 - Size Reasoning | 52 | 90.8\n", 35 | "QA19 - Path Finding | 8 | 9.0\n", 36 | "QA20 - Agent's Motivations | 91 | 90.7\n", 37 | "\n", 38 | "For the resources related to the bAbI project, refer to:\n", 39 | "https://research.facebook.com/researchers/1543934539189348\n", 40 | "\n", 41 | "Notes:\n", 42 | "\n", 43 | "- With default word, sentence, and query vector sizes, the GRU model achieves:\n", 44 | " - 100% test accuracy on QA1 in 20 epochs (2 seconds per epoch on CPU)\n", 45 | " - 50% test accuracy on QA2 in 20 epochs (16 seconds per epoch on CPU)\n", 46 | "In comparison, the Facebook paper achieves 50% and 20% for the LSTM baseline.\n", 47 | "- The task does not traditionally parse the question separately. This likely\n", 48 | "improves accuracy and is a good example of merging two RNNs.\n", 49 | "- The word vector embeddings are not shared between the story and question RNNs.\n", 50 | "- See how the accuracy changes given 10,000 training samples (en-10k) instead\n", 51 | "of only 1000. 1000 was used in order to be comparable to the original paper.\n", 52 | "- Experiment with GRU, LSTM, and JZS1-3 as they give subtly different results.\n", 53 | "- The length and noise (i.e. 'useless' story components) impact the ability for\n", 54 | "LSTMs / GRUs to provide the correct answer. Given only the supporting facts,\n", 55 | "these RNNs can achieve 100% accuracy on many tasks. Memory networks and neural\n", 56 | "networks that use attentional processes can efficiently search through this\n", 57 | "noise to find the relevant statements, improving performance substantially.\n", 58 | "This becomes especially obvious on QA2 and QA3, both far longer than QA1." 59 | ] 60 | }, 61 | { 62 | "cell_type": "code", 63 | "execution_count": 1, 64 | "metadata": { 65 | "collapsed": true 66 | }, 67 | "outputs": [], 68 | "source": [ 69 | "from __future__ import print_function\n", 70 | "from functools import reduce\n", 71 | "import re\n", 72 | "import tarfile" 73 | ] 74 | }, 75 | { 76 | "cell_type": "code", 77 | "execution_count": 2, 78 | "metadata": { 79 | "collapsed": true 80 | }, 81 | "outputs": [], 82 | "source": [ 83 | "import numpy as np\n", 84 | "np.random.seed(1337) # for reproducibility" 85 | ] 86 | }, 87 | { 88 | "cell_type": "code", 89 | "execution_count": 3, 90 | "metadata": { 91 | "collapsed": false 92 | }, 93 | "outputs": [ 94 | { 95 | "name": "stderr", 96 | "output_type": "stream", 97 | "text": [ 98 | "Using TensorFlow backend.\n" 99 | ] 100 | } 101 | ], 102 | "source": [ 103 | "from keras.utils.data_utils import get_file\n", 104 | "from keras.layers.embeddings import Embedding\n", 105 | "from keras.layers import Dense, Merge, Dropout, RepeatVector\n", 106 | "from keras.layers import recurrent\n", 107 | "from keras.models import Sequential\n", 108 | "from keras.preprocessing.sequence import pad_sequences" 109 | ] 110 | }, 111 | { 112 | "cell_type": "code", 113 | "execution_count": 4, 114 | "metadata": { 115 | "collapsed": false 116 | }, 117 | "outputs": [], 118 | "source": [ 119 | "def tokenize(sent):\n", 120 | " '''Return the tokens of a sentence including punctuation.\n", 121 | " \n", 122 | " >>> tokenize('Bob dropped the apple. Where is the apple?')\n", 123 | " ['Bob', 'dropped', 'the', 'apple', '.', 'Where', 'is', 'the', 'apple', '?']\n", 124 | " '''\n", 125 | " return [x.strip() for x in re.split('(\\W+)?', sent) if x.strip()]" 126 | ] 127 | }, 128 | { 129 | "cell_type": "code", 130 | "execution_count": 5, 131 | "metadata": { 132 | "collapsed": false 133 | }, 134 | "outputs": [], 135 | "source": [ 136 | "def parse_stories(lines, only_supporting=False):\n", 137 | " '''Parse stories provided in the bAbi tasks format\n", 138 | " \n", 139 | " If only_supporting is true, only the sentences that support the answer are kept.\n", 140 | " '''\n", 141 | " data = []\n", 142 | " story = []\n", 143 | " for line in lines:\n", 144 | " line = line.decode('utf-8').strip()\n", 145 | " nid, line = line.split(' ', 1)\n", 146 | " nid = int(nid)\n", 147 | " if nid == 1:\n", 148 | " story = []\n", 149 | " if '\\t' in line:\n", 150 | " q, a, supporting = line.split('\\t')\n", 151 | " q = tokenize(q)\n", 152 | " substory = None\n", 153 | " if only_supporting:\n", 154 | " # Only select the related substory\n", 155 | " supporting = map(int, supporting.split())\n", 156 | " substory = [story[i - 1] for i in supporting]\n", 157 | " else:\n", 158 | " # Provide all the substories\n", 159 | " substory = [x for x in story if x]\n", 160 | " data.append((substory, q, a))\n", 161 | " story.append('')\n", 162 | " else:\n", 163 | " sent = tokenize(line)\n", 164 | " story.append(sent)\n", 165 | " return data" 166 | ] 167 | }, 168 | { 169 | "cell_type": "code", 170 | "execution_count": 6, 171 | "metadata": { 172 | "collapsed": true 173 | }, 174 | "outputs": [], 175 | "source": [ 176 | "def get_stories(f, only_supporting=False, max_length=None):\n", 177 | " '''Given a file name, read the file, retrieve the stories, and then convert the sentences into a single story.\n", 178 | " \n", 179 | " If max_length is supplied, any stories longer than max_length tokens will be discarded.\n", 180 | " '''\n", 181 | " data = parse_stories(f.readlines(), only_supporting=only_supporting)\n", 182 | " flatten = lambda data: reduce(lambda x, y: x + y, data)\n", 183 | " data = [(flatten(story), q, answer) for story, q, answer in data if not max_length or len(flatten(story)) < max_length]\n", 184 | " return data" 185 | ] 186 | }, 187 | { 188 | "cell_type": "code", 189 | "execution_count": 7, 190 | "metadata": { 191 | "collapsed": true 192 | }, 193 | "outputs": [], 194 | "source": [ 195 | "def vectorize_stories(data, word_idx, story_maxlen, query_maxlen):\n", 196 | " X = []\n", 197 | " Xq = []\n", 198 | " Y = []\n", 199 | " for story, query, answer in data:\n", 200 | " x = [word_idx[w] for w in story]\n", 201 | " xq = [word_idx[w] for w in query]\n", 202 | " y = np.zeros(len(word_idx) + 1) # let's not forget that index 0 is reserved\n", 203 | " y[word_idx[answer]] = 1\n", 204 | " X.append(x)\n", 205 | " Xq.append(xq)\n", 206 | " Y.append(y)\n", 207 | " return pad_sequences(X, maxlen=story_maxlen), pad_sequences(Xq, maxlen=query_maxlen), np.array(Y)" 208 | ] 209 | }, 210 | { 211 | "cell_type": "code", 212 | "execution_count": 8, 213 | "metadata": { 214 | "collapsed": false 215 | }, 216 | "outputs": [ 217 | { 218 | "name": "stdout", 219 | "output_type": "stream", 220 | "text": [ 221 | "RNN / Embed / Sent / Query = , 50, 100, 100\n" 222 | ] 223 | } 224 | ], 225 | "source": [ 226 | "RNN = recurrent.LSTM\n", 227 | "EMBED_HIDDEN_SIZE = 50\n", 228 | "SENT_HIDDEN_SIZE = 100\n", 229 | "QUERY_HIDDEN_SIZE = 100\n", 230 | "BATCH_SIZE = 32\n", 231 | "EPOCHS = 40\n", 232 | "print('RNN / Embed / Sent / Query = {}, {}, {}, {}'.format(RNN, EMBED_HIDDEN_SIZE, SENT_HIDDEN_SIZE, QUERY_HIDDEN_SIZE))" 233 | ] 234 | }, 235 | { 236 | "cell_type": "code", 237 | "execution_count": null, 238 | "metadata": { 239 | "collapsed": false 240 | }, 241 | "outputs": [ 242 | { 243 | "name": "stdout", 244 | "output_type": "stream", 245 | "text": [ 246 | "Downloading data from https://s3.amazonaws.com/text-datasets/babi_tasks_1-20_v1-2.tar.gz\n", 247 | " 753664/11745123 [>.............................] - ETA: 142s" 248 | ] 249 | } 250 | ], 251 | "source": [ 252 | "try:\n", 253 | " path = get_file('babi-tasks-v1-2.tar.gz', origin='https://s3.amazonaws.com/text-datasets/babi_tasks_1-20_v1-2.tar.gz')\n", 254 | "except:\n", 255 | " print('Error downloading dataset, please download it manually:\\n'\n", 256 | " '$ wget http://www.thespermwhale.com/jaseweston/babi/tasks_1-20_v1-2.tar.gz\\n'\n", 257 | " '$ mv tasks_1-20_v1-2.tar.gz ~/.keras/datasets/babi-tasks-v1-2.tar.gz')\n", 258 | " raise" 259 | ] 260 | }, 261 | { 262 | "cell_type": "code", 263 | "execution_count": 10, 264 | "metadata": { 265 | "collapsed": true 266 | }, 267 | "outputs": [], 268 | "source": [ 269 | "tar = tarfile.open(path)\n", 270 | "# Default QA1 with 1000 samples\n", 271 | "# challenge = 'tasks_1-20_v1-2/en/qa1_single-supporting-fact_{}.txt'\n", 272 | "# QA1 with 10,000 samples\n", 273 | "# challenge = 'tasks_1-20_v1-2/en-10k/qa1_single-supporting-fact_{}.txt'\n", 274 | "# QA2 with 1000 samples\n", 275 | "# challenge = 'tasks_1-20_v1-2/en/qa2_two-supporting-facts_{}.txt'\n", 276 | "# QA2 with 10,000 samples\n", 277 | "challenge = 'tasks_1-20_v1-2/en-10k/qa2_two-supporting-facts_{}.txt'\n", 278 | "train = get_stories(tar.extractfile(challenge.format('train')))\n", 279 | "test = get_stories(tar.extractfile(challenge.format('test')))" 280 | ] 281 | }, 282 | { 283 | "cell_type": "code", 284 | "execution_count": 11, 285 | "metadata": { 286 | "collapsed": true 287 | }, 288 | "outputs": [], 289 | "source": [ 290 | "vocab = sorted(reduce(lambda x, y: x | y, (set(story + q + [answer]) for story, q, answer in train + test)))\n", 291 | "# Reserve 0 for masking via pad_sequences\n", 292 | "vocab_size = len(vocab) + 1\n", 293 | "word_idx = dict((c, i + 1) for i, c in enumerate(vocab))\n", 294 | "story_maxlen = max(map(len, (x for x, _, _ in train + test)))\n", 295 | "query_maxlen = max(map(len, (x for _, x, _ in train + test)))" 296 | ] 297 | }, 298 | { 299 | "cell_type": "code", 300 | "execution_count": 12, 301 | "metadata": { 302 | "collapsed": true 303 | }, 304 | "outputs": [], 305 | "source": [ 306 | "X, Xq, Y = vectorize_stories(train, word_idx, story_maxlen, query_maxlen)\n", 307 | "tX, tXq, tY = vectorize_stories(test, word_idx, story_maxlen, query_maxlen)" 308 | ] 309 | }, 310 | { 311 | "cell_type": "code", 312 | "execution_count": 13, 313 | "metadata": { 314 | "collapsed": false, 315 | "scrolled": true 316 | }, 317 | "outputs": [ 318 | { 319 | "name": "stdout", 320 | "output_type": "stream", 321 | "text": [ 322 | "vocab = [u'.', u'?', u'Daniel', u'John', u'Mary', u'Sandra', u'Where', u'apple', u'back', u'bathroom', u'bedroom', u'discarded', u'down', u'dropped', u'football', u'garden', u'got', u'grabbed', u'hallway', u'is', u'journeyed', u'kitchen', u'left', u'milk', u'moved', u'office', u'picked', u'put', u'the', u'there', u'to', u'took', u'travelled', u'up', u'went']\n", 323 | "X.shape = (10000, 552)\n", 324 | "Xq.shape = (10000, 5)\n", 325 | "Y.shape = (10000, 36)\n", 326 | "story_maxlen, query_maxlen = 552, 5\n" 327 | ] 328 | } 329 | ], 330 | "source": [ 331 | "print('vocab = {}'.format(vocab))\n", 332 | "print('X.shape = {}'.format(X.shape))\n", 333 | "print('Xq.shape = {}'.format(Xq.shape))\n", 334 | "print('Y.shape = {}'.format(Y.shape))\n", 335 | "print('story_maxlen, query_maxlen = {}, {}'.format(story_maxlen, query_maxlen))" 336 | ] 337 | }, 338 | { 339 | "cell_type": "code", 340 | "execution_count": 14, 341 | "metadata": { 342 | "collapsed": false 343 | }, 344 | "outputs": [ 345 | { 346 | "name": "stdout", 347 | "output_type": "stream", 348 | "text": [ 349 | "Build model...\n", 350 | "(None, 50)\n", 351 | "(None, 552, 50)\n", 352 | "(None, 36)\n" 353 | ] 354 | } 355 | ], 356 | "source": [ 357 | "print('Build model...')\n", 358 | "sentrnn = Sequential()\n", 359 | "sentrnn.add(Embedding(vocab_size, EMBED_HIDDEN_SIZE,\n", 360 | " input_length=story_maxlen))\n", 361 | "sentrnn.add(Dropout(0.3))\n", 362 | "\n", 363 | "qrnn = Sequential()\n", 364 | "qrnn.add(Embedding(vocab_size, EMBED_HIDDEN_SIZE,\n", 365 | " input_length=query_maxlen))\n", 366 | "qrnn.add(Dropout(0.3))\n", 367 | "qrnn.add(RNN(EMBED_HIDDEN_SIZE, return_sequences=False))\n", 368 | "print(qrnn.output_shape)\n", 369 | "qrnn.add(RepeatVector(story_maxlen))\n", 370 | "print(qrnn.output_shape)\n", 371 | "\n", 372 | "model = Sequential()\n", 373 | "model.add(Merge([sentrnn, qrnn], mode='sum'))\n", 374 | "model.add(RNN(EMBED_HIDDEN_SIZE, return_sequences=False))\n", 375 | "model.add(Dropout(0.3))\n", 376 | "model.add(Dense(vocab_size, activation='softmax'))\n", 377 | "print(model.output_shape)\n", 378 | "\n", 379 | "model.compile(optimizer='adam',\n", 380 | " loss='categorical_crossentropy',\n", 381 | " metrics=['accuracy'])" 382 | ] 383 | }, 384 | { 385 | "cell_type": "code", 386 | "execution_count": 15, 387 | "metadata": { 388 | "collapsed": false, 389 | "scrolled": false 390 | }, 391 | "outputs": [ 392 | { 393 | "name": "stdout", 394 | "output_type": "stream", 395 | "text": [ 396 | "Training\n", 397 | "Train on 9500 samples, validate on 500 samples\n", 398 | "Epoch 1/40\n", 399 | "9500/9500 [==============================] - 187s - loss: 2.0385 - acc: 0.1689 - val_loss: 1.8075 - val_acc: 0.1760\n", 400 | "Epoch 2/40\n", 401 | "9500/9500 [==============================] - 189s - loss: 1.8400 - acc: 0.1751 - val_loss: 1.7890 - val_acc: 0.2180\n", 402 | "Epoch 3/40\n", 403 | "9500/9500 [==============================] - 188s - loss: 1.8017 - acc: 0.2058 - val_loss: 1.7659 - val_acc: 0.2600\n", 404 | "Epoch 4/40\n", 405 | "9500/9500 [==============================] - 188s - loss: 1.7535 - acc: 0.2673 - val_loss: 1.7290 - val_acc: 0.2840\n", 406 | "Epoch 5/40\n", 407 | "9500/9500 [==============================] - 188s - loss: 1.7062 - acc: 0.2986 - val_loss: 1.6075 - val_acc: 0.3520\n", 408 | "Epoch 6/40\n", 409 | " 224/9500 [..............................] - ETA: 180s - loss: 1.6173 - acc: 0.3795" 410 | ] 411 | }, 412 | { 413 | "ename": "KeyboardInterrupt", 414 | "evalue": "", 415 | "output_type": "error", 416 | "traceback": [ 417 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 418 | "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", 419 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Training'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mXq\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mBATCH_SIZE\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnb_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mEPOCHS\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalidation_split\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.05\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0macc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtXq\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mBATCH_SIZE\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Test loss / test accuracy = {:.4f} / {:.4f}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mloss\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0macc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 420 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras2/lib/python2.7/site-packages/keras/models.pyc\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, nb_epoch, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, **kwargs)\u001b[0m\n\u001b[1;32m 625\u001b[0m \u001b[0mshuffle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mshuffle\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 626\u001b[0m \u001b[0mclass_weight\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mclass_weight\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 627\u001b[0;31m sample_weight=sample_weight)\n\u001b[0m\u001b[1;32m 628\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 629\u001b[0m def evaluate(self, x, y, batch_size=32, verbose=1,\n", 421 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras2/lib/python2.7/site-packages/keras/engine/training.pyc\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, nb_epoch, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight)\u001b[0m\n\u001b[1;32m 1122\u001b[0m \u001b[0mverbose\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mverbose\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcallbacks\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1123\u001b[0m \u001b[0mval_f\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mval_f\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mval_ins\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mval_ins\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshuffle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mshuffle\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1124\u001b[0;31m callback_metrics=callback_metrics)\n\u001b[0m\u001b[1;32m 1125\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1126\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mevaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m32\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mverbose\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msample_weight\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 422 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras2/lib/python2.7/site-packages/keras/engine/training.pyc\u001b[0m in \u001b[0;36m_fit_loop\u001b[0;34m(self, f, ins, out_labels, batch_size, nb_epoch, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics)\u001b[0m\n\u001b[1;32m 840\u001b[0m \u001b[0mbatch_logs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'size'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_ids\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 841\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_batch_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_index\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_logs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 842\u001b[0;31m \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mins_batch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 843\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 844\u001b[0m \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 423 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras2/lib/python2.7/site-packages/keras/backend/tensorflow_backend.pyc\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, inputs)\u001b[0m\n\u001b[1;32m 1038\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtensor\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1039\u001b[0m \u001b[0msession\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_session\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1040\u001b[0;31m \u001b[0mupdated\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msession\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdates_op\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfeed_dict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1041\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mupdated\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1042\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", 424 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras2/lib/python2.7/site-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 715\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 716\u001b[0m result = self._run(None, fetches, feed_dict, options_ptr,\n\u001b[0;32m--> 717\u001b[0;31m run_metadata_ptr)\n\u001b[0m\u001b[1;32m 718\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 719\u001b[0m \u001b[0mproto_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 425 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras2/lib/python2.7/site-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_run\u001b[0;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 913\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfinal_fetches\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mfinal_targets\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 914\u001b[0m results = self._do_run(handle, final_targets, final_fetches,\n\u001b[0;32m--> 915\u001b[0;31m feed_dict_string, options, run_metadata)\n\u001b[0m\u001b[1;32m 916\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 917\u001b[0m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 426 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras2/lib/python2.7/site-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_do_run\u001b[0;34m(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 963\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhandle\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 964\u001b[0m return self._do_call(_run_fn, self._session, feed_dict, fetch_list,\n\u001b[0;32m--> 965\u001b[0;31m target_list, options, run_metadata)\n\u001b[0m\u001b[1;32m 966\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 967\u001b[0m return self._do_call(_prun_fn, self._session, handle, feed_dict,\n", 427 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras2/lib/python2.7/site-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_do_call\u001b[0;34m(self, fn, *args)\u001b[0m\n\u001b[1;32m 970\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_do_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 971\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 972\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 973\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mOpError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 974\u001b[0m \u001b[0mmessage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompat\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_text\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 428 | "\u001b[0;32m/home/gaussic/anaconda2/envs/keras2/lib/python2.7/site-packages/tensorflow/python/client/session.pyc\u001b[0m in \u001b[0;36m_run_fn\u001b[0;34m(session, feed_dict, fetch_list, target_list, options, run_metadata)\u001b[0m\n\u001b[1;32m 952\u001b[0m return tf_session.TF_Run(session, options,\n\u001b[1;32m 953\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_list\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 954\u001b[0;31m status, run_metadata)\n\u001b[0m\u001b[1;32m 955\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 956\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_prun_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msession\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 429 | "\u001b[0;31mKeyboardInterrupt\u001b[0m: " 430 | ] 431 | } 432 | ], 433 | "source": [ 434 | "print('Training')\n", 435 | "model.fit([X, Xq], Y, batch_size=BATCH_SIZE, nb_epoch=EPOCHS, validation_split=0.05)\n", 436 | "loss, acc = model.evaluate([tX, tXq], tY, batch_size=BATCH_SIZE)\n", 437 | "print('Test loss / test accuracy = {:.4f} / {:.4f}'.format(loss, acc))" 438 | ] 439 | }, 440 | { 441 | "cell_type": "code", 442 | "execution_count": 16, 443 | "metadata": { 444 | "collapsed": false 445 | }, 446 | "outputs": [], 447 | "source": [ 448 | "from IPython.display import SVG\n", 449 | "from keras.utils.visualize_util import model_to_dot" 450 | ] 451 | }, 452 | { 453 | "cell_type": "code", 454 | "execution_count": 17, 455 | "metadata": { 456 | "collapsed": false 457 | }, 458 | "outputs": [ 459 | { 460 | "data": { 461 | "image/svg+xml": [ 462 | "\n", 463 | "\n", 464 | "G\n", 465 | "\n", 466 | "\n", 467 | "140615653471056\n", 468 | "\n", 469 | "embedding_input_1: InputLayer\n", 470 | "\n", 471 | "\n", 472 | "140616357133264\n", 473 | "\n", 474 | "embedding_1: Embedding\n", 475 | "\n", 476 | "\n", 477 | "140615653471056->140616357133264\n", 478 | "\n", 479 | "\n", 480 | "\n", 481 | "\n", 482 | "140615653470992\n", 483 | "\n", 484 | "dropout_1: Dropout\n", 485 | "\n", 486 | "\n", 487 | "140616357133264->140615653470992\n", 488 | "\n", 489 | "\n", 490 | "\n", 491 | "\n", 492 | "" 493 | ], 494 | "text/plain": [ 495 | "" 496 | ] 497 | }, 498 | "execution_count": 17, 499 | "metadata": {}, 500 | "output_type": "execute_result" 501 | } 502 | ], 503 | "source": [ 504 | "SVG(model_to_dot(sentrnn).create(prog='dot', format='svg'))" 505 | ] 506 | }, 507 | { 508 | "cell_type": "code", 509 | "execution_count": 18, 510 | "metadata": { 511 | "collapsed": false 512 | }, 513 | "outputs": [ 514 | { 515 | "data": { 516 | "image/svg+xml": [ 517 | "\n", 518 | "\n", 519 | "G\n", 520 | "\n", 521 | "\n", 522 | "140615657883472\n", 523 | "\n", 524 | "embedding_input_2: InputLayer\n", 525 | "\n", 526 | "\n", 527 | "140615657884688\n", 528 | "\n", 529 | "embedding_2: Embedding\n", 530 | "\n", 531 | "\n", 532 | "140615657883472->140615657884688\n", 533 | "\n", 534 | "\n", 535 | "\n", 536 | "\n", 537 | "140615662216784\n", 538 | "\n", 539 | "dropout_2: Dropout\n", 540 | "\n", 541 | "\n", 542 | "140615657884688->140615662216784\n", 543 | "\n", 544 | "\n", 545 | "\n", 546 | "\n", 547 | "140615657940816\n", 548 | "\n", 549 | "lstm_1: LSTM\n", 550 | "\n", 551 | "\n", 552 | "140615662216784->140615657940816\n", 553 | "\n", 554 | "\n", 555 | "\n", 556 | "\n", 557 | "140614561914192\n", 558 | "\n", 559 | "repeatvector_1: RepeatVector\n", 560 | "\n", 561 | "\n", 562 | "140615657940816->140614561914192\n", 563 | "\n", 564 | "\n", 565 | "\n", 566 | "\n", 567 | "" 568 | ], 569 | "text/plain": [ 570 | "" 571 | ] 572 | }, 573 | "execution_count": 18, 574 | "metadata": {}, 575 | "output_type": "execute_result" 576 | } 577 | ], 578 | "source": [ 579 | "SVG(model_to_dot(qrnn).create(prog='dot', format='svg'))" 580 | ] 581 | }, 582 | { 583 | "cell_type": "code", 584 | "execution_count": 19, 585 | "metadata": { 586 | "collapsed": false 587 | }, 588 | "outputs": [ 589 | { 590 | "data": { 591 | "image/svg+xml": [ 592 | "\n", 593 | "\n", 594 | "G\n", 595 | "\n", 596 | "\n", 597 | "140615653470928\n", 598 | "\n", 599 | "sequential_1: Sequential\n", 600 | "\n", 601 | "\n", 602 | "140614562573200\n", 603 | "\n", 604 | "merge_1: Merge\n", 605 | "\n", 606 | "\n", 607 | "140615653470928->140614562573200\n", 608 | "\n", 609 | "\n", 610 | "\n", 611 | "\n", 612 | "140615658712272\n", 613 | "\n", 614 | "sequential_2: Sequential\n", 615 | "\n", 616 | "\n", 617 | "140615658712272->140614562573200\n", 618 | "\n", 619 | "\n", 620 | "\n", 621 | "\n", 622 | "140615658466320\n", 623 | "\n", 624 | "lstm_2: LSTM\n", 625 | "\n", 626 | "\n", 627 | "140614562573200->140615658466320\n", 628 | "\n", 629 | "\n", 630 | "\n", 631 | "\n", 632 | "140614562698384\n", 633 | "\n", 634 | "dropout_3: Dropout\n", 635 | "\n", 636 | "\n", 637 | "140615658466320->140614562698384\n", 638 | "\n", 639 | "\n", 640 | "\n", 641 | "\n", 642 | "140614558551056\n", 643 | "\n", 644 | "dense_1: Dense\n", 645 | "\n", 646 | "\n", 647 | "140614562698384->140614558551056\n", 648 | "\n", 649 | "\n", 650 | "\n", 651 | "\n", 652 | "" 653 | ], 654 | "text/plain": [ 655 | "" 656 | ] 657 | }, 658 | "execution_count": 19, 659 | "metadata": {}, 660 | "output_type": "execute_result" 661 | } 662 | ], 663 | "source": [ 664 | "SVG(model_to_dot(model).create(prog='dot', format='svg'))" 665 | ] 666 | } 667 | ], 668 | "metadata": { 669 | "anaconda-cloud": {}, 670 | "kernelspec": { 671 | "display_name": "Python [conda env:keras-py3]", 672 | "language": "python", 673 | "name": "conda-env-keras-py3-py" 674 | }, 675 | "language_info": { 676 | "codemirror_mode": { 677 | "name": "ipython", 678 | "version": 3 679 | }, 680 | "file_extension": ".py", 681 | "mimetype": "text/x-python", 682 | "name": "python", 683 | "nbconvert_exporter": "python", 684 | "pygments_lexer": "ipython3", 685 | "version": "3.5.2" 686 | } 687 | }, 688 | "nbformat": 4, 689 | "nbformat_minor": 1 690 | } 691 | -------------------------------------------------------------------------------- /dataset/GuoJingming/tinytimes/《小时代4.0灰彰时代》作者:郭敬明.txt: -------------------------------------------------------------------------------- 1 | 如果上帝正在俯瞰新天地这片寸金寸土的土地,那么一定会见到成千上万从四面八方汇集而来的黑色的虫卵在不安地躁动,它们将这片土地塞得水泄不通,似乎在酝酿一场鹿死谁手的厮杀。 2 | 3 | 吱——嘭—— 4 | 5 | 吱——嘭—— 6 | 7 | 吱——嘭—— 8 | 9 | 烟花呼啸着冲破夜空的漆黑,在一瞬间爆出花火,此刻还是在幽幽下落的蓝色火点,下一秒便犹如一罐盛满红色颜料的玻璃瓶在瞬间变得支离破碎,带着玻璃碎片的红色颜料顷刻间燃烧了整片天空,而我的朋友们在一年前,曾经在这样同样燃烧着的天空以同样的方式燃烧了他们的生命。他们被殆尽得不着痕迹,以至于很长的时间我都认为这只是个离谱荒诞被我复仇的欲望掩盖而衍生出来的梦靥—— 10 | 11 | 在Neil跟简溪睡同一张床上并且上身赤裸(我不知道他们的下身是否也赤裸着)盖着同一张被子看着同一本书的时候,恰好被我看到了,脑袋里的粉色蘑菇云又开始“轰轰”炸开,很快我就清醒过来,里面的人是简溪!这比看见顾源和简溪在同一个浴缸互相擦背的劲爆场面还劲爆,至少顾源是个可以让任何雌性动物见到他第一眼后,迅速分泌雌性荷尔蒙的雄性,而Neil这个小**的雌性魅力明显比起我更能刺激雄性荷尔蒙,所以,在他跟我扯着明亮的笑容解释说,他只是想让简溪帮他暖被窝而没有我想的那么下流的时候,我决绝地在心里诅咒这厮早点儿下黑暗的地狱! 12 | 13 | 而南湘,在她正如雨后春笋般滋滋地升任为美术总监并且陪同宫洺出席各种大小宴会,在会议室有她的一席之位而我只能在宫洺需要咖啡的时候像鬼魅一样飘出来又飘进去的时候,我曾经狠毒地想过,南湘你快点死吧…… 14 | 15 | 而顾源,在南京西路的别墅里吃早饭的时候我把一碟荷包蛋和午餐肉三文治放在他面前,他面无表情地扫了我一眼之后,站起来转身走到门口,开门,接着关门,一系列的动作连接流畅就好像已经在他心里演习过无数遍,最后的那一下关门的声音更是将无声胜有声发挥到极致,将我的最后一丝尊严夹断。 16 | 17 | 忽然觉得我是只对着主人在不断地摇尾巴乞怜的哈巴狗,而顾源由始至终是那个高高在上的主人,高兴时他可以对我熟视无睹,不高兴时他完全可以像厌弃一条鼻涕虫趴在他身上一样来面对我。我多曾多次梦见顾源满身是血趴在地上痛苦地对我伸出手说,林萧,救我,我不想死…… 18 | 19 | …… 20 | 21 | 而现在,曾经在我生命的道路中划下了那些大大小小足迹的人不见了,怅然若失的浓烈感觉像瞬间席卷起来的海啸,随着身旁的人此起彼落的惊呼声冲击着我的心墙,那些储存在记忆中的黑白胶片一帧一帧地重现在脑海中。 22 | 23 | 同样在新天地,2008年还在大学时候的我、唐宛如、南湘、顾里四个在新天地一起被别人挤,又一起挤别人;2009年在被烟火照亮的天空下,穿着白色衬衣卡其色外套的简溪将我拥入他怀中;2010年陆烧那张散发着英伦、高贵的脸孔向我靠近,然后轻轻地在我冰凉的额头印上温暖的吻。 24 | 25 | 2011年的烟花最终落幕,停息的人群又开始涌动,涌向四面八方,像一只庞大的八爪鱼,攫住这个城市每个的角落。 26 | 27 | 新年快乐,林萧。我对自己说。 28 | 29 | 【一年前】 30 | 31 | 为了响应大众的号召(其实只有顾里跟唐宛如)以及满足一下自己的私心,我决定对Kitty倾诉我的遭遇,好让她心甘情愿地分担我的工作。此刻我正在喋喋不休地怀着满腔的热情诉苦:比如自己在早上六点送粥去医院,七点要帮顾里解决小便,十二点要帮顾里解决大便等等,想博取同情休黄金周,可是Kitty脸带微笑地说:“顾里只是轻度烧伤哪里轮到大小便不能自理的状况,还有……”Kitty顿了顿,眨了眨上了DIOR银色眼影的眼睛,继续补充道,“如果你执意要消失一个星期那我就把你借用宫洺的名义买Wonderbra的限量版Bra送给顾里的事告知宫洺。” 32 | 33 | “……” 34 | 35 | 我推开宫洺办公室的门,宫洺正在“啪嗒啪嗒”地敲打着键盘。 36 | 37 | 见到我进来宫洺眼皮也不抬一下,保持着雕塑一样的没有表情的表情。 38 | 39 | 由于已经过了下班时间,办公室的暖气开得很足,宫洺穿着黑色的Prada毛衣,里面白色衬衣的领口随意地解开一颗,面对着液晶屏幕的宫洺,眉毛漆黑,鼻梁英挺,完美得像杂志上的男模特,不过我相信就算把宫洺扔到污水厂的处理池,等宫洺湿淋淋地从水面浮出他的脸的时候,他依然可以散发着他的贵族气质,像刚刚美人出浴撩拨人的心魂。 40 | 41 | 我林萧只对着一种人无法保持冷静,无法做到泰然自若,就是宫洺这种,他一句话也不说,就是静静地,时不时低下头翻开文件查数据,时不时敲打键盘,我分明感觉到一分一秒流动的时间给予我的巨大的压迫感,压得我喘不过气。 42 | 43 | 首先打破寂静的是我,“宫先生,我需要请半天的时间照顾我的朋友。” 44 | 45 | 这时候宫洺终于抬起头看我,冷冷吐出两个字,“多久?” 46 | 47 | “一个星期。” 48 | 49 | “好。你可以出去了。” 50 | 51 | 这就是在火灾发生后的宫洺,在短短一个星期之内,宫洺利用顾源、Neil、顾准的,以其他公司的名义买入《M.E》股份,将叶传萍活生生地从总经理的座椅上拽下来再推落深渊,重新夺回总经理的位置。 52 | 53 | 我想宫洺如果要写升职陈词第一个感谢的应该是火灾,多亏了这场火灾,宫洺在叶传萍因失去儿子溃不成军的时候一举歼灭了叶传萍。但同时这场毫无预兆的大火又将他最亲近的弟弟毁于一旦。 54 | 55 | 某天我回公司拿落下的文件,见到宫洺办公室门缝透出光,我偷偷藏在门后,通过虚掩的门见到站在落地窗前发呆的宫洺。宫洺对崇光,是有感情的。尽管他依然可以在公司股东大会上从容地部署下一季度的工作,调动公司的人力资源,有条不紊,面对他弟弟崇光死亡的事实,他表现得异常冷静、不为所动,仿佛死去的不是他最关心的弟弟而是一个无关要紧的的陌生人。 56 | 57 | 可是我知道,他这副坚强的面具后面藏着一张忧伤的脸,在没有其他人的时候这副纸糊的面具就会被掀起或者被泪水冲破。 58 | 59 | 那天傍晚我毫不犹豫地推开门走进去,站在宫洺的旁边,一起望着暗红色的天空,耀眼的东方明珠,所有的马路、建筑纷纷亮起了异彩纷呈的灯,光怪陆离,物欲横流,好像在向世人昭示这座城市的春秋万岁,万寿无疆。 60 | 61 | 从卫星上看到上海的夜晚,是由成千上万的灯拼凑的,闪烁着朝气,魅力四射的不夜城,强大的电力支持使得上海无时无刻看起来有一种火山喷射的张力。可是如果透过玻璃窗窥视混凝土钢筋建筑里的人,会见到因加班加点而疲倦不堪的脸,会见到清洁工人在逐层逐层地打扫一天的混乱,也许还会见到我和宫洺那张忧伤得犹如浓墨化不开的脸。 62 | 63 | 一场火灾过后,似乎什么也没有改变,也似乎什么也不同了。这就是上海,用一切繁华纷扰的景象去掩盖身后面,那么当繁华落尽,纷扰褪去,显露出来的又会是什么? 64 | 65 | 当我打开高级病房的门时我彻底地懵了,这哪是医院的病房啊!分明就是和平饭店的意大利主题套房的装修布局,烫着金边的杏色羊毛地毯,古铜色的落地灯,贴着金箔镶边的墙纸,Provasi的宝石蓝天鹅绒沙发,窗外的阳光照进来,整个房间好似洒满了金色纸片,夺目,奢华,贵气。敢情是顾里借需要住院治疗一段时间,无法面对停尸间一样的病房而装修出来的总统套房。 66 | 67 | 顾里看见是我,立即向我招手,笑容谄媚地说:“Lucy?发什么愣呢,快来快来……” 68 | 69 | 顾里此刻披着雪白的长袍慵懒地靠在沙发背上,Macebook静静地放在有着精细镂刻的木质桌子上,时不时发出“叮”收到邮件的声音。 70 | 71 | 说实话,我觉得我才是那个躺在病床上前几天被轻度烧伤却表现得奄奄一息快要死掉的人——顾里。 72 | 73 | 顾里认真地看了看手还搭在门把上一脸茫然的我,更加急切地喊:“Lucy?Lucy?……”我觉得如果顾里再用手甩着一条白色丝绢,泪流满面的话,那么我探望病人顾里这个情节完全可以变为火车站里顾里对即将离开的我依依不舍的狗血场面。 74 | 75 | 我关上门,小心翼翼将鸡粥放到那张堪比我七个月薪水的意大利桌子,推了顾里一把,“叫谁Lucy呢你。” 76 | 77 | “Lucy,今天来得怎么那么迟?你看唐宛如都已经第十一次地试图把脚搭在她的脖子上了。” 78 | 79 | “……” 80 | 81 | 我成了顾里口中第211个Lucy,在顾里住院的这段时间里,被称为Lucy的人数迅猛激增到200,高到医院院长低到清洁阿姨,她都能面不改色地叫人家Lucy,甚至院长进来嘘寒问暖了几句之后便像见鬼了一样火速逃离,她言简意赅地总结:合着他跟Lucy肯定有一腿儿。 82 | 83 | “……”我环顾了四周一下,都没看到类似唐宛如体型的东西,除了那张有着醒目的红色的圆滚滚沙发,我问顾里:“唐宛如呢?” 84 | 85 | “房里。” 86 | 87 | “哪个房?” 88 | 89 | “你沿着走廊走,除开一个卫生间,一个书房,剩下的两个房就是我跟唐宛如的,当然我的房有175°的市景,如果你看见房里阳光充足得像露天似的,你可以直接忽略掉这个房直接去另一个房,哦,对了,开那扇门之前请做好进鬼屋之前的心理准备,我之前试过晚上从房里走出去喝口水,经过唐宛如房间的时候,看见一个类似人的头在脖子上插反了,而且从袖子里伸出来的手足足有你的两条大腿那么粗。我很难保证你会不会看见唐宛如的头直接插在屁股上或者本来是长头的地方长出一只手来。好了,一路顺风,找你的唐宛如去吧。” 顾里从她的巨大的墨绿色的Prada墨镜上看我。 90 | 91 | 一瞬间我觉得阴风阵阵。 92 | 93 | …… 94 | 95 | 在我看见中世纪风格的洗手间跟现代风格的书房以及一间如果铺上草皮那么就可以放牧的空间(我对顾里只需进行光合作用来维持生命感到深信不疑)之后,我顺利找到唐宛如的房。不过此时的唐宛如让我想起碎尸,她保持一种诡异、惊悚完全超出人类想象的动作。比如,她整个人是侧躺着的,她正努力地用下巴去抵她的锁骨(虽然我不知道她的锁骨还存不存在),衣领翻得太高以至在这个角度看来她的头空空如也,她穿着一条类似抹胸的裙子,双腿从腰两边舒展开来(……),我不知道这个违反人体美学的唐宛如是怎样苟延残喘到21世纪的。 96 | 97 | 我觉得如果唐宛如出本书叫“唐宛如是怎样养成的”,其销量一定比那些“XXX是怎样养成的”牛掰得多,至少看了唐宛如可以大开眼界,原来这个科学的世界存在着一种不怎么科学的,名为“唐宛如”的生物,顺理成章地还能衍生出“如物”(像生物)这样的名词。 98 | 99 | 抛开唐宛如,她身下的这张Provasi意大利大床一下子撅住了我的眼球,我双眼“噌”的一声发光,昂首挺胸地走到唐宛如身边正大光明把她给推下床,然后在床上打起滚。 100 | 101 | “呜……林萧你懂不懂怜香惜玉啊……”唐宛如揉着屁股勉强撑着站起来。 102 | 103 | “唐宛如你不觉得在你面前我才是那个需要怜香惜玉的么?”我对唐宛如笑得掏心掏肺。 104 | 105 | “我诅咒你下地狱。” 106 | 107 | “Are’n you?”我依然笑眯眯地打着滚儿。 108 | 109 | 后来,我们忽然就静了。 110 | 111 | 我们没忘记,就在前几天,我们刚从地狱打了个转。 112 | 113 | “林萧,你想崇光么?”唐宛如没头没脑地问。 114 | 115 | “……”我转头看向窗外, 116 | 117 | “我对崇光的感觉,并不是用爱或者不爱就可以简单概括,就好像被人划开了很大的一道口子,一开始它会潺潺地留着鲜血,而后来当伤口结痂,不会再流血了,却会留下一道醒目的疤,在某些不小心的时候触碰到这道疤,就会开始隐隐作痛。你懂么?” 118 | 119 | 唐宛如也望向窗外,目光飘渺,“我懂。”她伸手抚摸嘴角的疤痕,“我怎么可能不懂?我只需要把我的这道伤口换成崇光,就可以理解你的感觉。” 120 | 再一次,不了解一个人的复杂情绪涌上心房。 121 | 122 | 我恍然觉得唐宛如不再是唐宛如,我们都不约而同地将唐宛如视为简单的单细胞生物,而没有想到这个单细胞生物其实也在进行着简单的生物进化,物竞天择,适者生存,唐宛如早就拥有她的思想她的意识,慢慢地进化成高级的多细胞生物,只是我们习惯了那个单纯简单似乎还停留在学生时代的唐宛如。 123 | 窗外,飞机冲出白色的云层拉扯出一道白色的丝线划过湛蓝的天幕。 124 | 125 | 我发现叙述任何事情的时候都可以用火灾发生后的多少多少天,那场火灾就好比一个始点,任何事情都可以以他为参照物,进行延伸。 126 | 127 | 我又重新回到了苏州河畔的酒店公寓,在那场火灾发生后的短短一个星期里,我已经无数次来到崇光居住过的房间,我曾无数次地希望崇光出现在门后面,咧开嘴角对我笑得天真无邪的样子,可是每次打开门后出现无数次的是迎面而来的,满满的,失落。 128 | 129 | 电梯开始上升,飘然的感觉让我好像回到催崇光交稿的日子,电梯轻微的碰撞,又把我拉回现实。明明知道崇光不会再在那个房里面出现,可还是忍不住怀着小小的希望一次次地去开启那扇门。 130 | 131 | 我咬了咬嘴唇,不知该以怎样的心态去面对那间空荡荡的房间。我的心情就好像那么扭得妈都不认得的麻花,如果是顾里的话,我毫不怀疑她可以勇猛直前地直捣黄龙,她都可以闯进连宫洺那个苍蝇都飞不进去的家,只要她想,美国白宫的门禁简直形同虚设。可惜我不是顾里,我顶多是那条扭扭捏捏的鼻涕虫。 132 | 133 | 我深呼吸一口气,好像准备百米冲刺一样,对自己说,最后一次了。 134 | 135 | 当我在门外面站定,忙着掏出钥匙,眼睛飞快督了一眼门,门只是被虚掩起来。这个房的钥匙除了我,还有谁? 136 | 137 | 那团小小的希望星火就像被闪电击中后转眼间燃烧得哔剥作响。 138 | 139 | 我推开门,撞入眼帘的是一抹修长挺拔的身影。 140 | 141 | “崇、崇光?!” 142 | 143 | 我欣喜若狂,眼泪几乎夺眶而出。 144 | 145 | 我低下头局促不安地站在他面前,泪流满脸的像个泪人。 146 | 147 | 我的视线看到的是一双锃黑发亮的皮鞋,对上是剪裁精细无可挑剔的西裤,再往上……就看不到了,不用看也可以想象那张出现在杂志上一样的脸此刻肯定冒着凌冽的寒气,我意识到只要他在我头顶吹一口气,我立刻就可以拿去哈尔滨当冰雕,但对于宫洺来说,别说是往我头上吹一口气,就算让他对我微笑,他也懒得扯一下嘴角,除非有什么类似上次对顾里宣布她被辞去事。 148 | 149 | 我正在心里打着小算盘盘算要怎么化解这局面,最终算盘也被我打烂,才得出两种可能:一是把宫洺当作鬼魂,气定神闲地他额前贴一张符咒,同时双手合手念一句“阿弥陀佛”,当作什么都没发生一样走掉,二是像在清仓大卖场上见到熟人一样对宫洺说声:HI,这么巧,你也来入货啊。可是面对着这个从气势上歼灭你,从行为上藐视你的宫洺,我的小算盘当下就土崩瓦解,算珠子稀里哗啦地掉了一地。 150 | 151 | 就我刚刚惊呼完的一瞬间,宫洺回过头来,琥珀色的眼眸沉得犹如一泓沼泽,冷峻的脸庞看起来苍白如同白纸没有一点温度。如果你的头脑没有顾里那种酷睿双核以上的设置,没有太阳能永动机的后备,那么你的脑子就等死机把,别指望能闪一下灯,鼠标动一动都成奢望,就像我这样的,只能奢望着哈利波特能将他的隐形斗篷借给我,好把自己隐藏起来。 152 | 153 | 我意识到面前的是宫洺,眼泪也不敢流,我竭力调整自己,可是抽噎声还是像吃饱了撑着似的,一浪接一浪,我觉得自己***窝囊废。在只听到秒针“滴答滴答”的环境,我分明听到来自头顶的叹息声,我可以想象到宫洺眼里的嘲弄,仿佛在看天底下最低微丑陋的小丑。 154 | 155 | 宫洺向我走近了一步,然后朝我伸出手,箍住我的头,将我的头抵在他宽阔的肩头。 156 | 157 | 我分明感觉他炽热的气息在头上漂浮,就好似有一枚火球在我周围发光发热,烘得我热泪盈眶,而他曾被我和Kitty意淫了无数次的胸膛,此刻铿锵有力地擂动着鼓点。 158 | 159 | 那一刻我觉得天旋地转,天崩地裂。我相信就算医生告诉我,我得了子宫癌并且马上就会死去,或者见到简溪和唐宛如在车后座热吻三分钟,我也不会像现在我靠在宫洺的肩膀上一样震撼。 160 | 161 | 李宁的广告词怎么说来着? 162 | 163 | Nothing is impossible. 164 | 165 | 最不可能发生的事发生了,那么全天下还有什么不能成为可能——我甚至开始希冀回到别墅后可以看见南湘扭着草裙舞高唱青藏高原、Neil抱着他的女朋友在亲热,顾源穿着五颜六色的小丑服在撒着杂技,而顾里窝在沙发吃街边买来的臭豆腐,并且一边吃一边赞叹世间竟有如此美食…… 166 | 167 | 在这不真实的像梦境的场面,我非常想抽自己两耳光,看是回光返照还是日有所思夜有所梦,可是宫洺身上Gucci Guilty香水弥漫着鸡尾酒辅以清爽意大利柠檬清香摄人心魂的气息又那么的真实。 168 | 169 | 那一天我公然当着宫洺的脸,用眼泪鼻涕毁了他那件价值四万的阿玛尼黑色休闲西装。 170 | 171 | 我并不知道过去了多年之后,每当回想起这样的一个拥抱,我依然会脸颊绯红。 172 | 173 | 让我们乘坐时光机倒回火灾发生当天。 174 | 175 | 唐宛如和顾里正在阳台对着烧烤炉生火,突然就听见撕裂心肺的喊声,有灰白的烟源源不断地往上冒,好像从地底喷出的热泉在挥发热气。唐宛如伸出头去张望,惊慌大叫:“顾里!!着火了,快点通知他们!”顾里闻声,立刻转身去拍打通向客厅的玻璃门,想通知还在里面的顾源、南湘他们,可是门不知什么时候被反锁了,传到客厅的拍门声就像是掉落一根绣花针那么微弱。 176 | 177 | 唐宛如哆嗦着拿出手机打电话通知南湘,她的手已经颤栗得连续按错了好几个键,她正按着返回键撤销,顾里转过头一下子打掉她的手机,怒吼:“如果你想早点死的话你尽管拨出去!” 178 | 179 | 唐宛如从没见过顾里如此惨白的面色,如同一朵颓败萎缩的百合。唐宛如顾不得拾手机,双手哆嗦着握住顾里的肩:“怎么办?怎么办?!里面还有崇光、顾准、南湘、Neil!” 180 | 181 | 面对唐宛如的惊慌失措,顾里表现得异常冷静,她沉着脸,双手掰开唐宛如的手,说:“顾不上他们了。再不逃我们也逃不掉了。” 182 | 183 | “那他们就会死了!里面还有崇光、崇光啊!你替林萧想过了吗?!” 184 | 185 | “里面也有顾源!”顾里突然像头被人迁怒的狮子,冲唐宛如咆哮。 186 | 187 | 顾里呆望着玻璃,抿了抿嘴唇,纵身一跃,利索地站稳在脚手架上。她目光里迅速闪过不舍、决绝,随后又被一片犹如滔天巨浪的火光覆灭。 188 | 189 | 顾里大喊:“唐宛如,下来!!” 190 | 191 | “可是里面……”唐宛如回过头张望了屋子一眼,眼睛红得像个桃子。 192 | 193 | “别可是了!快!” 194 | 195 | 唐宛如随即眼神一凛,也纵身一跃。 196 | 197 | 顾里听到这里,随即哈哈大笑,说,“林萧你不知道,当时你没看到唐宛如那个殉情的样子,狼牙山五壮士都没这么壮烈,我有一瞬间觉得,她要跳的是一楼,只不过是不小心落在脚手架上罢了。” 198 | 199 | 然后—— 200 | 201 | 在唐宛如有惊无险地站在脚手架时,脚踝被脚手架的铁钉擦破了皮(这就是她的伤)。 202 | 203 | 顾里和唐宛如开始由12层楼高的脚手架往下爬。而顾里这只千年母耗子精,脱下她耗子精的皮囊,七十二变一下子变成蜘蛛精,12层楼高的脚手架在顾里的手里就成了单双杆,“嗖”的一层,“嗖”的又一层。我立马联想到了以前看见两只老鼠在电线上跳华尔兹的场面。 204 | 205 | 唐宛如说当时顾里还穿着12cm的Gucci皮草高跟鞋,爬那个脚手架,玩儿似的,真的,当年蜘蛛侠也就这速度吧。唐宛如说着还心有余悸地将手抚在胸前,一脸不可置疑。 206 | 而我像是发现三眼青蛙一样,两眼青光,看向顾里,***这个女人太犀利了! 207 | 208 | “那她小腿怎么烧伤的?”我问。 209 | 210 | 顾里跟唐宛如一直保持一定的水平距离,所以顾里一直是靠近窗户垂直爬下来的,唐宛如不停地叫顾里过来一点儿过来一点儿,顾里都不听。“林萧你不知道我当时多感动,我想顾里一直不跟我站一条铁支上,肯定是想用她庞大的身躯来阻止大火吞灭我娇小的躯体。啊啊!我当时想如果她站的那棍子,支撑不了顾里的体重,不小心栽了下去,我也会不假思索地跳下去!You jump,I jump!”(事后我也问过顾里为什么顾里不跟她站一条脚手架上,顾里答:“哦,你说这个啊……我当时就想着跟唐宛如站一块,以她的吨位,不烧死也得摔死,衡量了一下,我选择,烧死。”终于有一次,火苗从某一层的窗户延伸了出来,犹如一条火舌,瞬间就将她的Armani裤子点燃,幸好裤子只是焦了而没有成为着火点,顾里就是忍着被烧伤的痛爬下来的。 211 | 212 | “林萧,我跟你说,顾里下来了之后那档子事儿,比八点档剧场还好看。”唐宛如趁着顾里听不下去,去洗澡的空档,凑过来我耳边,鬼祟地说,“顾里当时下来了之后,随便逮了个消防员,发疯了似的喊:‘你们会不会灭火啊,拿的那玩意儿那是高压水枪还是玩具水枪啊,随便撒泡尿都比你们喷得高!’如果不是消防人员人高马大,顾里下不了手,不然!她早就把对讲机别到自己身上,准备亲自指挥灭火了!”我看着仍然沉浸在回忆当中的唐宛如,为了我的耳朵着想,我不动声息地挪了挪。 213 | 214 | 后来顾里死活不肯上救护车,医务人员只好先帮她包扎伤口,包扎完了她就坐在湿漉漉的地上,每当有消防员抬着伤者出来,顾里就第一个冲上去,然后又一脸死灰地重新坐到地上。 215 | 216 | 再后来,就是我冲死死拉着我的手的宫洺大喊:“宫洺***放开我!放开我!”,然后他的手明显一怔,我像只冲动的野兽冲进封锁线看到的场面。 217 | 218 | 我不断地寻找着,视线略过一张又一张的面,最终在墙边找到了顾里和唐宛如。 219 | 220 | 顾里狼狈极了,对的,狼狈,那个任何时候都跟顾里联系不上的词。顾里盘起的发髻有几缕头发落了下来,防水化妆品令顾里的面庞看起来还是那么的姣好,可是大大的眼睛却好像围了一圈红疹子,有无数钻石在她的眼眶转动。我不停地叫喊:“顾里顾里……”可是顾里眼神空洞,她的世界仿佛一片死寂,任凭我在她的世界如何力挽狂澜,如何开天辟地,依然荒芜得寸草不生。她一声不吭的样子把我吓到了,我觉得有一只尖锥一下一下地钻进内心,呼吸变得浓重起来,我更加激动了,死死地钳住顾里的肩膀,不住地摇,像是要摇掉她身上所有的背上,说,“顾里,***给我说话!” 221 | 222 | 过了很久,顾里红着眼,沙着声音,说:“林萧,我难过。” 223 | 224 | 犹如铅块般浓重的云在我们头顶上空停住,太阳的光芒瞬间敛住,天地间被灼红得一片苍茫。 225 | 226 | 我的手渐渐地凉了下去。 227 | 228 | 顾里是维多利亚港高举火炬的自由女神;顾里是手持长枪,身披战甲的智慧女神雅典娜;顾里是万民敬仰、无可匹敌的英女王。现在以顾里为支撑点的石灰混凝土建筑,终于分崩离析,。砖瓦被凌冽的北风揭起、脱落,渐渐裸露出黑色的钢筋支架,犹如一俱被剥去了皮肉的躯体,只剩下阴森森的白骨冷冷地灌着风。 229 | 230 | 我害怕这幢支架随时会被连根拔起,轰然倒下。 231 | 232 | 想到这里,我双手环起顾里纤细的腰,将下巴抵在她的肩膀,低喃道:“没事的,没事的,真没事的……”我也想像顾里安慰当时不知所措的我们,可是却犹如有块苦涩的杏仁堵在喉咙里,每说一个字都有带苦味的汁往下淌,直抵心扉。 233 | 234 | 高中时期顾里被一片从天而降的玻璃碎片,在小腿划开一道口子,那道口子当场就喷出血,我、南湘、唐宛如都吓傻了,就只有顾里还在轻松地笑着说:“没事儿,没事儿,真没事儿,不就是一道几十厘米的口子吗,不就是流了几升血吗,不就是……” 235 | 236 | 我摇摇头,不再回忆那个钢板一样坚强的顾里,继续说:“大不了我们当他们没存在过一样,Neil、顾准、崇光、顾源、南湘统统见鬼去吧……你看我们还是像最初一样,顾里,林萧,唐宛如,一个都没少不是吗?!” 237 | 238 | 我又开始哽咽了,我移开我的头,面向顾里,双手小心翼翼捧起顾里的脸,说:“只要你变回那个血拼恒隆,毒害我们的顾里,我……不,唐宛如说她愿意抛身去金茂大厦88层跳钢管舞!” 239 | 240 | 这时唐宛如好敏捷地一咕噜连滚带爬跪在我们身边,舒展她充满肌肉感的手臂,将我和顾里好像小天鹅一样保护在她(母鸡)的怀里,她带着哭腔说:“对,顾里只要你振作起来,林萧答应跟我一块去跳钢管!呜……”去你姑奶奶的,我什么时候答应你了! 241 | 242 | 我们三个抱成一团,在呼天抢地的救火现场,上演琼瑶式的蹩脚剧场。 243 | 244 | 在我帮顾里办理入院手续的时候,顾里踩着高跟鞋站在光洁的走廊里拨打给Provasi订购意大利家具:“Provasi对吧,立马送我的家具来,家具名已经通过邮件发给你们了,你们现在要做的就是——把家具给我从意大利空运过来,Now!!” 245 | 246 | 我轻轻地呼了口气,顾里的本质是住在盘丝洞修行千年的妖精,他爸的死改变不了她,她的癌症改变不了她,那么顾里这辈子就本性难移了吧。我想,虽然她现在面对着我们一句话也说不出,可是她依然对着Provasi专卖店的经理拿出她那一套欠扁至极的言辞已经说明那个作奸犯科、无恶不作的顾里开始苏醒,或许在恒隆抢掠般扫荡时,或许在《M.E》飞扬跋扈时……我们,无从知晓。 247 | 248 | 我、唐宛如、顾里围成一个三角形,低着头,各怀心事。 249 | 250 | “林萧,你甩我一耳光吧。”顾里突然抬起头来,看向我。 251 | 252 | “什么?”我惊愕地抬起头来,挑出小拇指就往耳朵里抠。我怀疑是我耳屎太多,出现了幻听。 253 | 254 | 我将耳屎从小拇指指甲缝中弹掉,又问了遍顾里:“顾里你说什么?” 255 | 256 | 顾里轻轻开口,她的声音好像从很远的地方传来,听起来有种恍如隔世的沧桑感,“我说,你甩我一耳光。” 257 | 258 | “……”我看向唐宛如,发现唐宛如眼里迸着一百瓦灯泡似的亮光,瞧,放在她身后的双手已经在磨拳擦掌,蠢蠢欲动了。 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 | 我知道,我们的the one and the only的顾里女王苏醒了。 286 | 287 | 当我走出静安区中心医院大门的时候,突如其来的恐惧感好似一只只淌着粘稠的毒液的手在夜凉如水的空气中向我伸来,我裹了裹单薄的职业装,望着十字路口出神。 288 | 我不想回别墅,再大再奢华的别墅只剩下自己一人的时候,那跟牢笼有什么区别。 289 | 290 | 感觉衣角被拉扯了几下,我低下头一看,有个扎着羊角辫的小女孩站在我身旁,她正睁着清澈的眼睛看着我。 291 | 292 | “姐姐,你也是在等爸爸妈妈吗?” 293 | 294 | 我蹲下身朝她微微一笑,说:“对啊……你的爸爸妈妈呢?” 295 | 296 | “喏……”小女孩转过身,用胖乎乎的手指指着从中心医院出来的夫妇,她指向一个英俊的男人,“这是我爸爸。”随后又指了指男人旁边的女人,“这是我妈妈……” 297 | 我哭笑不得地看着她,不知道能说什么。 298 | 299 | “盈盈,来,回家喽。”女人笑眯眯地朝小女孩招了招手。“好的!”小女孩露出开心的笑容,然后在我手心放了颗红色的糖果,“姐姐,等累了就吃颗糖,累累就会飞走不见了哦~”她跑着离开,一路洒落银铃般悦耳动听的笑声。 300 | 301 | 我抽了抽鼻子,伤感地想,我不知道我还可以等谁,还可以去哪里。我是飘浮在空气中的微小尘埃,恣意飘荡,无处安落。 302 | 303 | 我沿着灰色的马路走,不时有一辆又一辆的车打着黄色的车灯从我身边一一掠过。在离我不远处,有一辆奔驰S600缓慢地开着,黄色的灯光打在我旁边的路上,就好像一只犬默默无闻地陪我走着。 304 | 305 | 每过一个转弯,我就会忧虑黄色的灯光会不会消失以后就不再出现,剩下我斑驳的影子,可是一会儿,它又仿佛幽灵一样再次出现在我身边,这时我心里的感动就像一株牵牛花在疯狂生长,在寂静的夜里我听到有花开的声音。 306 | 在一个红绿灯口,我停住脚步。 307 | 308 | 这里似乎来过,又似乎陌生。那些曾经拥堵的人或物,统统不见了,花圈错乱地摆放在围起来的塑料板,蓝色的塑料板上面填满了人们用黑笔书写的对遇难者的哀辞,地上有花瓣掉落一地。天不知道什么时候下起了雨,温和的灯色将漫天落下的雨,映得像镀上了一层金箔的绣花针,它们刺在脸上,疼在心上。 309 | 310 | 黑夜是最温柔的黑洞,它会在每个夜晚转出巨大的漩涡,吞噬白天发生的一切,悲怆的、幸福的、希望的、失望的事物,然后恢复平静,以崭新的面目开启新的一天。 311 | 我沉浸在自己的世界里,直到一把黑色的伞举过我头顶。 312 | 313 | 好像我身边的人都喜欢用黑色的伞,简溪为我撑起的伞是挡风挡雨挡子弹的黑色羽翼,在每一个落雨的白天或晚上,我可以安然地躲在里面,风雪雨雾来了有黑色的伞挡,子弹飞箭来了有简溪挡;南湘为我撑起的伞是风雨同路友情开路的KRISS Super V冲锋枪,我可以和南湘肩并肩地冲入战场义无反顾,要生一起生,要死一起死;宫洺为我撑起的伞是用金刚石切割的封闭空间,在里面我听不见世界的喧闹,感受不到人间的冷暖,但是却有一种超然于物外的感觉,在里面,我就是唯一。 314 | 315 | 黑色是最隐匿的颜色,就像我面前这幢28层高的公寓,它们黑洞洞的窗户似乎隐藏着未来,掩埋着过去,我已经无法联想到它们曾经烈焰滔天,透出来的是我这一辈子从没见过的最悲伤、最绝望的火烧云,里面堆积着如山的灰烬,游荡的灵魂,可是在现在看来,仅仅是黑色占据的领地,我对里面一无所知。 316 | 317 | 我也无法从墨黑的天空找到一丝关于那片火烧云的痕迹,如果真要较劲,那么现在天空下的这场飘渺的雨会是火烧云迟来的礼物。 318 | 319 | 宫洺将他的西装脱下来,披到我身上。 320 | 321 | 我们彼此无言,用最深沉的方式,悼念最亲近的人。 322 | 323 | 在离我们开外几米的地方,车头灯一闪一闪,像极了那双哭泣的眼睛。 324 | 325 | 326 | 第二天早上开始有遇难者家属前来祭祀在火灾中死去的人,他们拿出一扎扎的祭祀纸品,点燃,口中念念有词,似乎在诉说些什么。 327 | 328 | 宫洺轻声对我说:“回去吧。”他的声音轻盈得像是蝴蝶扑扇翅膀的声音。 329 | 330 | “嗯。”我点点头,移开脸不再看燃烧得热烈的火焰,我害怕那团火苗会点燃心里那根点燃连接着悲伤的导火索,漫天的悲伤把我掩埋。 331 | 332 | 我轻轻抬起头看宫洺,他深邃的双眼炯炯有神,欧洲贵族一样的脸庞毫无倦色,就像刚刚睡足十六小时一样。有时候我怀疑宫洺一尊纯金打造的金刚不坏之身,同样是一天一夜没躺下来睡觉的人,凭啥宫洺那张脸总是神采奕奕,在阳光下还能散发璀璨夺目的光芒,一笑就能让人立马想起高露洁冰爽牙膏广告,而我,两个黑眼圈像汽车轮子碾过一样,又深又黑,肤色暗黄得像是唐宛如的呕吐物,就差吐出鲜红的舌头,在舌头上粘一张符纸,上面写道:女鬼出没注意。 333 | 334 | 不带这样不公平的,我悲愤地想。 335 | 336 | 宫洺的奔驰S600在写字楼下停下。 337 | 338 | 宫洺打开车门,贵气十足地下了车。在他走来另一边,替我打开车门的时候,Kitty那只烟熏妆女妖出现了,她朝宫洺礼貌地微笑,说:“早安,宫先生。” 339 | 340 | 然后当在我从车上走下来的时候,Kitty用一种压抑着内心激动,仿佛见到《暮光之城》里面的吸血鬼爱德华(Kitty一度把他作为择偶标准)的表情,尖着声音说:“嘿!林萧。” 341 | 342 | 我、Kitty、宫洺静默地站在同一部电梯内,各自心怀鬼胎。 343 | 344 | 我望着站在我前面的宫洺,在心里叹了口气。 345 | 346 | 我有一瞬间觉得我们乘坐在一部呼啸着冲上太空的电梯,就看谁先缺氧。 347 | 348 | Kitty用一种好像在澡堂偷窥别人洗澡的猥琐眼神在我和宫洺的身上上三路下三路地扫荡。最终她用水晶指甲掐了我一下,挑着眉毛看向我,她眼里好一股黄色浊水在喷洒。 349 | 350 | 鉴于唐宛如的经历,我很慎重地考虑要用怎样的表情去表达我整夜没睡的疲倦、与宫洺一共前来上班的愉悦、失去朋友的悲伤、被Kitty遇见的无奈,最终,我用一个疲累而又带点兴奋、伤心又带点可怜的表情来解释我昨晚的遭遇。 351 | 352 | Kitty很快就心会神领地看了我一眼“说”:“我明白了。” 353 | 354 | 我在心里惊叹:到底是跟了宫洺几年时间的人,智商绝对权威! 355 | 356 | Kitty用春心荡漾的眼神目送宫洺进入办公室后,她督了一我眼,伸出食指对我勾了勾,表情就像一只饥饿了四天的狼遇到另一只饿了四天的虎,而它们恰好同时看中了那块骨头时的敌意。 357 | 358 | 我在心里打了个寒战,忐忑着走到她身边,她没有表情地拍了拍我的肩膀,说:“跟我走。”Kitty步伐矫健,细高的跟鞋敲打在地上发出“咯、咯、咯”的声响,听起来像是一个女人在没日没夜地狂笑。 359 | 360 | 望着Kitty黑色的背影,我有一种“我现在是去执行死刑”的感觉,我视死如归地走在Kitty后面,心想我没杀她家人、抢她男人,无故含冤而终,我会死不瞑目的! 361 | 362 | 最终Kitty将我带到厕所,把门“啪嗒”一声锁上。 363 | 364 | 我恍惚见到Kitty变成了一匹饥渴的豺狼,她眼里迸着赤裸裸幽蓝的光,目标是我这只善良小绵羊。我惊恐着退到墙边,下意识地将双手交叉护在胸前,双膝合并稍向前屈,做出一个防御姿势。 365 | 366 | Kitty转过身,慢悠悠地朝我走过来,对一脸警惕的我鄙夷地说:“把你的手放下来,本小姐对你……”Kitty那双漂亮的大眼睛在我身上来回扫了三遍,慵懒地说,“没兴趣。” 367 | 368 | “呃……”我像是受了打击,撇撇嘴问:“那你对什么有兴趣?” 369 | 370 | “昨晚你跟宫洺的事儿啊。” 371 | 372 | 我懵了,开口问:“什么事儿啊?” 373 | 374 | “就是那些事儿啊!”Kitty说得理所当然,并且对我的**问题感到义愤填膺。 375 | 376 | 我还是不懂,一脸茫然地看着她:“哪些?” 377 | 378 | “林萧,你是装傻还是真傻!”很明显,Kitty被我惹毛了,她气急败坏地继续说,“昨晚你跟宫洺在房里面的事,过程、感觉、视觉,全方位给我短话长说,一字一句地交代清楚。”说完,我看见Kitty眼里风情万种,柔情似水,热情奔放,充满了期待,眼眸子发亮发亮的。 379 | 380 | “……” 381 | 382 | 我觉得我非常有必要在那句“跟了宫洺多年的人,智商绝对权威”补上一句:凡事都有例外! 383 | 384 | 我当即就明白过来了,火冒三丈地说:“***.的把我当啥了,靠电线杆的小鸡?我昨晚就跟宫洺在街上挺尸了一整晚,房你妈.的啊!”别看Kitty一大好女青年的模样,她脑海里储备的龌蹉思想随时能把一个单纯的女孩(比如我)弄得无地自容、脸上红云飘飞。 385 | 386 | Kitty:“不要试图编造谎言骗我,我Kitty最擅长就是拆穿谎言!” 387 | 388 | 看了看正义凛然,似乎高举着**大旗的Kitty,我呼了口气,无奈地说:“不信你闻闻,我都觉得我头发里面养着一窝跳蚤。” 389 | 390 | Kitty扫了我的鸟窝一眼,“也是,”她掩了掩鼻子,继续说,“那你兴奋、痛苦、无奈个啥?你的样子明显就是一夜处于癫狂状态得出的结果。” 391 | 392 | 我对Kitty翻了个巨大的白眼,“我兴奋是因为与宫洺一块上班,痛苦是因为……”我抿了抿嘴唇,不想告诉她因为我的朋友都死光了,我接着说,“……因为顾里住院了,无奈是因为居然这么倒霉碰见你了!” 393 | 394 | 听见我无懈可击的解释,Kitty摇着婀娜的身段,灰溜溜地踩着高跟鞋走了,末了扔给了我一句激励士气的话,她说:“林萧,下次就算是在人民大会堂开着人民大会也要将宫洺推倒,同时叫上我带单反捕捉精美瞬间,啊。” 395 | 396 | 女人就是这样,无论智商高低,一旦遇到什么美丽尤物,立刻丢盔弃甲,不理智得像一头努力追赶着咬自己尾巴的牛。 397 | 398 | “有病!”我冲Kitty的背影大叫。 399 | 400 | 我向宫洺请完假路过Kitty办公格,顺便扫了下Kitty,在我看来,Kitty还沉醉在她一厢情愿、无可自拔的妄想当中。我没有敢打扰她,甚至连“再见”也没跟她道一声就以脚踏风火轮的速度,拎起自己包,消失在电梯里。不要试图闯入或破坏一个女人的幻想,那会让我觉得是在自掘坟墓,尤其是在Kitty这种高端机器猫面前,我害怕Kitty会从她那充满惊喜与惊吓的口袋里掏出一瓶过期洁厕精让我一口喝下去。 401 | 402 | 当我醒来,我发现我坐在地上背后靠着顾里买的Armani沙发,我沉重的脑袋枕着垫在沙发上的手,我的衣袖挽到手肘处,手腕被枕得烙下了一大个红印,看着就像是被一个烧红了的铁铲烙过。 403 | 404 | 窗外的阳光没有温度,但是明亮得刺痛我的眼睛,整间别墅仿佛跳跃着活力四射的因子,可是我知道,这幢死寂的别墅在火灾过后就不存在生命了,就犹如一只蝉褪下的外壳,空荡荡的没有任何支撑物,轻轻一捏就能碎掉。 405 | 406 | 我想伸手去拿手机看时间,但是我一移动手腕就有一种被千万管透明的针扎似的痛。算了,如果已经迟到就说不舒服算了。我想。 407 | 408 | 在请假的这一个星期里,我已经是第五次在烂醉后醒来。每天下班回到别墅之后,我都会去翻顾里的酒柜,从里面拿出几瓶全是英文的酒,拧开盖子就直接将整支酒灌到口里。冰冷夹带着炽烈的口感滑过喉咙就好像有一道飓风迅速地席卷我,带走我的悲伤。 409 | 410 | 意识模糊中,我会看见Neil、顾准、顾源、南湘、崇光、顾里、唐宛如,他们一大帮子坐在铺了白色桌布的餐桌,银制的餐具整齐地摆了一桌,水晶灯流转的光芒将他们映得如同天神般美丽,他们微笑着向我招手。每次我都会举起酒瓶,对他们微笑,然后闭上眼“咕噜咕噜”猛灌了一大瓶,再次睁开眼时就发现,他们都不见了,饭厅是黑漆漆的一片,没有璀璨的水晶灯,没有高贵的银餐具,更没有飘着幸福香味的牛排。 411 | 412 | 每次望着宽阔漆黑的餐厅我都有种异样的感觉,就好像本来饱满的气球突然间被抽走了所有的空气一样空虚,我只有将头枕在手上趴在沙发,眼泪滚烫着落下来在手上滑过,就像温暖的涧溪。 413 | 414 | 我带着眼泪入睡,带着泪痕醒来,每次我都会惊讶地发现,桌上摆满的酒瓶,足够我排列起来然后拿一个足球来打保龄,在横七竖八的酒瓶子当中,当我认真地看清上面写的英文,我会目瞪口呆。因为我喝掉了几万人民币,每晚。 415 | 416 | 在不用去医院看望顾里的时候,我就会从夜晚喝到第二天中午,然后在卫生间洗漱,整理邋遢的自己,准备去上班。 417 | 418 | 我想着想着又睡着了,意识模糊中,手机响了。 419 | 420 | 我在桌上摸索手机,拿到耳朵听,“林萧,你怎么还不来上班?今天下午有大会召开。宫洺让我……” 421 | 422 | “宫洺?宫洺算个什么东西?!叫他去死!”我豪气万丈、忘我地呼喊着。 423 | 424 | 可是我不知道,在我竭斯底里地呼喊宫洺去死之前,Kitty转换了免提,我的叫声通过电磁波传到另一个空间,安静的楼层响起我的声音:“去死——死——” 425 | 426 | 在电话的另一边,宫洺的脸瞬间降到冰点,“你说什么?” 427 | 428 | 我一哆嗦,手机掉地上,我彻底惊醒了,赶紧捡起手机刚要说话,就听到宫洺说:“明天正常上班,收拾好你的东西。” 429 | 430 | 我愣了几秒钟,不停地对着电话,“喂喂喂……” 431 | 432 | 直到Kitty在那边长叹了一声,然后她挂断了电话。 我欲哭无泪,说不出话来。 433 | 434 | 过了一会,我收到Kitty的短信:明早准时上班有惊喜给你。 435 | 436 | 我的脑袋“轰”一声炸开了。依我的理解,收拾东西和惊喜这两个词同时结合在一起就等于: 437 | 438 | 林萧,你被解雇了。 439 | 440 | 我再也沉沦不下去了,起身找了个大塑料袋,将乱放的酒瓶一个个丢进去,酒瓶碰击发出的声音在空荡的别墅格外的清脆嘹亮,听起来就像有人在百无聊赖之中,一下接一下地拨动吉他弦。将酒瓶统统丢进塑料袋后,我又跑去厨房找出抹布,抹去那些像一条条蚯蚓的酒迹,我把抹布丢在桌上,打算等扔完垃圾再拿去洗。我看了看被染上一滩滩醒目的颜色的布,干脆将抹布一同丢进塑料袋,走出庭院扔到垃圾桶。 441 | 442 | 我拧开水龙头,将浴缸注满水,滑进去躺好。我想起这个足够顾里、南湘、唐宛如、我四个人一同沐浴的浴缸,而现在只有我能这样舒服地躺在浴缸里。洗完澡之后,我作出一个很重大的决定:不就是被人辞退了么,就算是出家,我也要作出出嫁的样子! 443 | 444 | 我上楼去顾里的房间,打算共享她的高级护肤品,说起共享—— 445 | 446 | 我们几乎没有共享过她的一套套高级护肤品,倒不是因为顾里小家子气,相反,她很慷慨,每次从恒隆扫荡了几万块的护肤品回来,她都会兴致勃勃地给我们讲解,坚决怂恿我们加入她实验室小白鼠的行列。就像那套“微晶焕肤”,顾里的原话是:彻底唤醒你的肌肤。可是,当我、唐宛如、南湘面上涂着厚厚一层微晶霜的时候,我们终于理解透彻她的话:唤醒你肌肤的同时你身处黑暗的地狱! 447 | 448 | 所以每当顾里露出享受的表情,真诚邀请我们尝试时,我们会尖叫着跑开,就像老鼠见着猫一样。 449 | 450 | 我抱着一大堆护肤品坐到沙发上,其中包括那瓶“微晶换肤”。 451 | 452 | 我将微晶霜像不要钱(实际上也不要钱)一样揩到脸上,过了一会儿我就后悔了,就像在脸上撒满一地的玻璃碎片,然后叫唐宛如穿着盔甲踩在上面跳芭蕾的感觉。嗜血,还是太嗜血了! 453 | 454 | 当我搞完那一堆琳琅满目的护肤品之后,我发现天已经黑了,小区的路灯已经亮起,隔着小区的绿化带后面是又一个闹市的繁华时分。 455 | 456 | 我的办公格被收拾得一干二净,我的所有物品,仙人掌盆栽、相架、Hello Kitty笔筒……全都不见了,而桌上只摆着一个怡宝矿泉水纸箱,不用想我也知道我的东西全在里面了。我相信很快,这箱东西就会陪伴着我离开《M.E》。 457 | 458 | 我以为我已经是怀着不以物喜不以物悲,笑看风云,看破红尘的高尚情操去面对我被解雇这件事,但是我明显高估自己了。 459 | 460 | 在我见到我的办公桌只有一个纸箱的时候,我心里面的愤怒好像被浇了油的火焰,一下子噌得老高。我内胆的温度已经在不知不觉中飙升,如果宫洺在我身边经过,我一定会毫不犹如地张开口向他喷火,看姑奶奶的烈焰飞鸦! 461 | 462 | 可是…… 463 | 464 | Kitty拿着咖啡杯从我身边飘过时,她将一个信封塞到我手上,“宫洺让你找他。” 465 | 466 | 我的勇气当场被水淋成落水鸡。 467 | 468 | 我不知道我是用手还是用脚走到宫洺办公室门口的,反正我最终还是用手敲开了他的门。 469 | 470 | 我推开门的那一刹那,觉得一切还是很正常的。但是很快,我就不那么认为了! 471 | 472 | 因为宫洺他抬起头,有点儿认真地看了我一眼后,我看见他嘴角噙着一丝若有若无的笑意,很性感,很魅惑,就好像香水广告里英俊的模特,闻到那一阵沁人心脾的香味那样,如果不是气氛诡异的话,我的鼻血肯定直冲天灵盖。 473 | 474 | 站在宫洺面前,我一直在回味、斟酌着他的那个似微笑、又不似微笑的笑容,真的是太迷人!太摄人心魂!太不正常了! 475 | 476 | 他的眼神有意无意看到我手上还攥着那个未开启的信封,“开了它吧。”其实我不用开也知道,抽出来看到的肯定是: 477 | 478 | 林萧女士:   479 | 480 | 因为本公司的经营方针和业务发生重大的调整和变化,您所学的专业和您的经历、能力均不符合公司的要求,故请您于2010年11月22日离开本公司。 481 | 482 | 只是我没有想到宫洺会让我当着他的面拆开信,接受耻辱的洗礼。 483 | 484 | 我犹豫了一下,还是听话地、怀着英勇就义的心情撕开信封,取出里面折成三折的纸。 485 | 486 | 当我摊开纸时,我惊住了。 487 | 488 | 信的标题用一号楷体打印,不是解雇通知书也不是辞退信,而是: 489 | 490 | New appointment 491 | 492 | (新的任命) 493 | 494 | 495 | 宫洺双手合握支在下巴,那双琥珀色的眼眸凝在我身上几秒,然后绽放一个仿佛冰雪消融,百花盛开的绝美笑容,向我点点头,“嗯。”语气就像在教堂婚礼上说“我愿意”一样坚定不移。 496 | 497 | …… 498 | 499 | “我告诉你,当你身边所有的人都很优秀,就说明你也很优秀。我最后说一遍,你只是欠缺一个懂得欣赏你的人,并不代表你不优秀的。” 500 | 501 | …… 502 | 503 | 他只是不说出来。 504 | 505 | 他只是不想让你不知道他对你了如指掌。 506 | 507 | 他只是站在黑暗舞台之中一个最大的赢家,没有射灯照到他身上,可是他却赢遍了全场。 508 | 509 | 我从来不知道人的表情可以如此快速变化,直到我见到New appointnment这两个英文单词。我表情的变化过程从就义,到惊讶,接着惊喜,最后恢复平静。形象点就是我抱着跳楼的心看见唐宛如成了Chanel的代言人,接着唐宛如对我说她赚到的钱全给我,最后我发现这只是一场梦。 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 | 在我当上《M.E》文字总监的当天,顾里也宣布她要出院了。 573 | 574 | 我拖着顾里的LV旅行包,不舍地望了不论从质量还是含金量都堪比迪拜宫殿的病房(我更愿意称为总统套房),我想去拉顾里的衣袖,发现她已经踩着Miu Miu细尖高跟鞋,像是一匹脱缰的马消失在转角处。 575 | 576 | 我觉得我才是那个刚出院的病人。真的。 577 | 578 | 我追上去问:“那个总统套房你就这么便宜医院了?” 579 | 580 | “不,我已经拟定了合同,那间房作为医院的样板病房,租金,我只收十”她转过来向我比了个“十”的手势,又转过身继续走,“billion and every day。” 581 | …… 582 | 583 | 我在她身后无声地叹了口气。 584 | 585 | 顾里坐在她的奔驰350副驾驶座,打着电话。在静安区中心医院到淮海路高级写字楼短短十几分钟的路程,她已经打了5通电话,时不时跳句“我有电话插进来,你等下”。 586 | 587 | 我坐在她后面,看着她不断切换通话对象,比114接线员还忙碌的样子,无声地叹了口气。 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 | 别小看顾里穿着高跟鞋,在别人把穿16cm的高跟鞋视为站在世界巨人肩膀上的时候,顾里已经踩在凹凸不平的月球表面。而现在她就像一个连接了电源的钻头,就算面对着铜墙铁壁,她也照样能毫无惧色地往里钻凿出个门口来,何况面对着这些凡身肉体,血肉之躯,她更是如入无人之境,将16cm高跟鞋穿出哪吒风火轮的速度和“人挡杀人,佛挡杀佛”的气势。她就像开着辆装甲车,车顶还带有钻头,风风火火地碾过可怜的地面。 631 | 632 | 认识她的人会不怕死地跟她打招呼,可是很快那些人就装作不认识灰溜溜走过。 633 | 634 | 不认识她的人看到顾里,就像看到了一个安装了雷达的追踪导弹,恨不得马上从顾里一公里范围内土遁消失,生怕下一秒就被无故轰得灰飞烟灭。 635 | 636 | 顾里利索地从包里掏出智能卡,按了一下,她的奔驰350发出“滴滴”两声之后,她打开车门,迅速地钻进车里,她扫了一眼迟疑着要不要跟上车的我,说:“上车。” 637 | 638 | 我怀疑顾里会驾着车带我去跳崖,更准确一点来说是,带我到悬崖,让我自己跳下去。 639 | 640 | 我颤巍巍地走到车旁,打开副驾驶室的车门,想了想,对面的车迎面撞过来的时候,司机总是下意识地往他那边打方面盘,迎难而上的大抵都是副驾驶室的人,必死无疑啊,更何况今天顾里是铁了心要我亡命。 641 | 642 | 我吞了吞口水,讪讪地关上车门,打开后座车门,坐进去。 643 | 644 | 我一直觉得我坐的是一舰时速26节的舰载机,什么劳斯莱斯、加长林肯,在航母身边就成了渔民出海捕鱼的小渔船。 645 | 646 | 我一看顾里这气势,怕了,立马抓好安全带绑上,我哆嗦着问:“顾里,你要带我犯罪还是让我背罪?” 647 | 648 | 顾里对着后视镜朝我翻了个白眼,然后她说:“唐宛如对吧,不管你现在在哪,你立马站马路边上去,我去兜你,对吧?十秒后到。” 649 | 650 | 我惊了,顾里她把我当成唐宛如了,还自个儿说一大堆莫名其妙的话。我提醒顾里说:“我是林萧,林萧!” 651 | 652 | 顾里轻蔑地笑了一声,“我和你说话了吗?还是你自认你是唐宛如?我跟你说,唐宛如可比你听话多了,乖多了,好养多了。别在这给脸不要脸的,林总监。” 653 | 654 | 听完顾里一系列连珠子似的话,我总算摸清头绪了。顾里在气我没跟她说我升职的事!我在心里暗暗盘算着要怎么对顾里解释,在我发愣之际,突然就看见一团土黄色的东西以摔的姿态摔进了后座,差点令我从另一边车窗飞出作飞鸟状。我龇牙咧嘴地挥舞着拳头,打算破口大骂,哪个天.煞.的随便扔垃圾啊靠! 655 | 656 | 唐宛如她整理好她土黄色的外套,转过头向我打了个招呼:“Hi,林萧。”然后她又一脸灿烂对顾里说:“真巧啊,顾里。” 657 | 658 | 我:“……” 659 | 660 | 顾里从后视镜把唐宛如全身上下扫了遍精光,好笑地开口说:“屎宛如天师,你是打算今晚作法,请天开眼收了林萧这个妖孽么?” 661 | 662 | 我也打量了一下唐宛如,嗯……她这形象的确像TVB播的那个抓妖天师钟馗,就差一鼎大香炉和手里握着一把驱邪木剑了。我在为顾里的言辞暗暗叫好的同时,忽然意识到顾里一箭双雕,把我当妖孽,我随手抄起一个抱枕,朝顾里扔去。顾里的头轻轻一偏,抱枕撞到车窗上,掉了下来。 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 | 顾里坐在红绒沙发,正拨打着茂悦订餐部电话,她回过头,对我身后的唐宛如说:“Bra除了当胸器还可以当凶器。来吧,如如,把你的Nu Bra甩出来,往林萧脖子上绕上两圈打个蝴蝶结吧!” 710 | 711 | “……” 712 | 713 | “对了,你有穿背心么,直接塞到林萧鼻孔里吧…” 714 | 715 | “……” 716 | 717 | “喂?订餐部么?江景房05,来瓶69年的Romanee Conti,不过估计你们没有…来瓶82年的吧,还有龙虾浓汤…” 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 | 房间内并没有开灯,借着穿过玻璃而来的光芒,顾里把Romanee Conti打开,多事香醇浓郁的葡萄味萦绕在鼻息,她倒满三杯酒,优雅地拿起其中一杯,举起来:“Cheers。” 746 | 747 | “干杯!!!” 748 | 749 | “Cheers~” 750 | 751 | 我们现在在太阳岛温泉度假酒店的温泉包房内,舒服地泡着温泉,除了唐宛如。因为她在十几平米的池里已经游了不下5个来回,她巨大的动作而扑腾起水花的声音和气喘吁吁的喘息声,一度让送餐点进来的服务员误会我跟顾里在温泉池里谋杀唐宛如。 752 | 753 | 顾里、我分别舒服地靠在用黛绿色的瓷砖砌起的边栏,身后有专业的按摩师在我们上半身揉来揉去。 754 | 755 | 而唐宛如则穿着泳衣在温泉池作蛙式畅泳,对于唐宛如从她一样是屎黄色的包包里淡定从容地掏出她的粉红色少女系沙滩比基尼。唐宛如一开始从包里扯出的是一条粉色的衣带,我以为她只是要拿出发带,把头发绑起来而已,直到一个粉色蕾丝边的比基尼出现在我眼前,我才知道我他.妈.小看唐宛如了!我的目光焦点在唐宛如脸上和她的粉色比基尼之间频繁切换,联想到的一句古话的就是:惊天地,泣鬼神!我甚至看见有一道闪电在唐宛如身后劈过,我.他.妈.被雷到了! 756 | 757 | 当时我颤抖着手指指向唐宛如,激动地问:“你你你……哪来的……”由于声带连同颤抖着,我明显听到自己发出的“哪”变成了“奶”。我警惕地看了看顾里和唐宛如,怕她们会一同鄙视我。不过很快我就发现我的担心是杞人忧天,因为顾里完全像是把我的话屏蔽了似的,头看向另一个方面,不知在想什么。而唐宛如就更不用说了,她完全不顾有他人(也只是有我和顾里)在场的情况,在暖气开得很足更衣间当众认真地脱下了她的屎黄色外套,脱了个精光了再认真地把粉红色比基尼装备到自己身上,在我思索着她会不会咬着我的“奶”字而笑个疯癫的时候,她正专心努力地调整着比基尼的舒适程度。 758 | 759 | “顾里,换衣服泡温泉去啦!”我抱着浴巾兴奋地小跑更衣间的隔间,在准备关上门换衣的时候,提醒顾里。 760 | 761 | “等下,”顾里猛地回过神来,利索地拉开LV包包拉链,从里面拿出Gucci纸袋,拿出一件红白条纹的比基尼和铜色的比基尼,问我,“你要哪一个?” 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 | 而一直对着Thinkpad W701笔记本的顾里,除了在她看见我脱掉浴袍剩下三点式的时候迸出的那句:“林萧,你把你的胸藏哪儿去了?以我目测,你胸围跟腰围是一比一的比例吧,你老实说,你到底是男人还是女人?噢,你不要误会,我不是介意我跟男人一块儿泡温泉,而是介意男人穿着三点式泡温泉,Man?”之后就没有再说一句话。 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 | 我亲爱的如如,你一定不知道,抓进**局与上法院,只不过是同一个选择的前后逻辑关系,就与是要告宫洺谋杀还是要将宫洺关进监狱一样,事实上,这些都不可能。我看到的,不过是一层表面的证据,看起来似乎是证据确凿,可是我用我脑袋去想,也能想出这些证据的一千种理由,更何况涉及产业广的《M.E》,对宫洺来说,就像是问他:你为什么要吃饭? 894 | 895 | 因为饿了呀。傻子都能回答上。 896 | 897 | 我摇摇头,迷茫地说:“不知道。看顾里的反应吧。” 898 | 899 | 听到扭动门把的声音,我们知道顾里回来了,唐宛如和我默契地对视一眼后,无力地靠在边栏作死尸状。 900 | 901 | 我合上眼睛,只剩下一条极其细小的缝,刚好能看到顾里的一举一动,而唐宛如就没我这么技术高超了,她不是翻白眼就是死死地眯上眼睛,眼圈四周垒起惨不忍睹的,梯田似的皱纹,那皱纹说能夹死一头水牛也不为过。 902 | 903 | 出于观音菩萨的慈悲为怀,我反手在池边抄起一瓶被我喝完的红酒,举到唐宛如面前,“赶紧拿出你装8的本色来!” 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 | 顾里走到更衣室,将密码纸上印有的条形码对准扫描区,在“滴——”柜门自动解锁之后,她打开柜子,并没有急于将昂贵的衣服从这个小小的格子解救出来,而是从她的LV包包里取出一张纸,看了一会后,她拿出手机,迅速地按着纸上的数字拨打电话。 949 | 950 | 在短暂的“嘟”声被切断,对方“Hello”一声后,她快速地说:“做你该做的事儿了。” 951 | 952 | 对方嗤笑了一声,过了一会儿,兴奋地说:“好。” 953 | 954 | 远在淮海中路的写字楼内,宫洺正靠在不久前从米兰空运过来的达芬奇米白色沙发上闭目养神,他纤细浓密的睫毛在脸上投下一块的暗色,桌上的咖啡已经凉了下去,不再源源不断地升腾起缭绕的炊烟。 955 | 956 | Kitty敲开宫洺办公室的门,发现宫洺并没有像往常加班的日子一样,坐在大班椅上查阅文件或者收发邮件,他闭着眼,头微微上扬倚在沙发靠背上,双手自然地向两边张开搭在靠背上。 957 | 958 | Kitty站在他面前,双手拿着一封信背在身后,简练地陈述:“宫先生,刚刚有人将这封信交到传达室人员手中,务必让我亲自交到您手上,务必请您看了它。” 959 | 960 | Kitty从身后取出信,双手呈上,将没有邮票也没有写上收信人或者写信人的信展现在宫洺面前。她见宫洺并没有举动,甚至连眼皮也不抬一下,于是继续补充道:“那个人说,您一定会有兴趣。” 961 | 962 | 宫洺像电影内慢镜头一样缓慢地睁开眼,他半睁的眼停留在空白的信封几秒后,刹那间,他的眼眸像被重见天日的阳光照耀着,可是只一秒,阳光便再次被铅色的云团遮盖,顿时暗了起来,他再次闭上眼,沉声道:“拿去碎了。” 963 | 964 | “是,我知道了。”Kitty看了看窗外透进来的灯光,“宫先生,时间也不早了,您早点回去休息吧。” 965 | 966 | 宫洺像是没有听到一样,依然保持着雕塑一样的神态。Kitty识趣地走出办公室,顺手带上把手,关上了门。 967 | 968 | 宫洺抬起手,“啪、啪、啪”把全部的灯光开关利索地打下,整间房突然陷进了广袤无垠的宇宙空间,穿透过纱帘缝隙的光像是宇宙中的星尘,漫无目的地飘浮于虚空的世界。 969 | 970 | 宫洺的背后是一匹白色的纱帘,穿帘而来的灰白色光芒将他的身影剪下一个黑色的剪影,他的五官被周边的光子映照着,散发着蒙蒙的光芒。 971 | 972 | 宫洺的目光直直地锁定在前方某一处,像在期待一位从宇宙深处远道而来的神秘访客,宫洺就这样坐在逆光之中,他黑色的躯体和灰白色的光形成极为鲜明的对比。突然,他像是看到了他期待中的人,嘴角轻轻勾起,一抹蛊惑众生的笑便从他嘴角蔓延开来,此刻的宫洺,像极了张开黑色羽翼,高举着闪着刀光的死神,有一种超越了时空的极致的俊美和危险气息。 973 | 974 | 良久,他缓缓开口道:“你输定了。” 975 | 976 | 自从过了心情无比复杂,比大便拉不出还纠结的一天之后的每一天,无论是在茶水间倒咖啡在电脑前看稿子在床上闭着眼却毫无睡意的时候,我总会揣摩当天在温泉室顾里的表情,企图从其中看出些什么端倪,但多天过去了,由始至终我也没挑出些什么异常来,到底是我的道行不够深,每到这时我都情不自禁地想起,如果南湘在就好了,同时我会认为,如果唐宛如不在就好了,因为从顾里在车上跟唐宛如说我是文字总监那一刻开始,唐宛如就无处不在地挑战我的惊吓承受能力,真的,无处不在。 977 | 978 | 她会在你舒适悠闲地泡在浴缸里享受的时候突然冒出个满是泡沫的头来对你说“林萧,你们宫总需不需要个体育总监啊……”或者是在我打开电脑等Windows欢迎界面后出现桌面的时候,很惊悚地发现我的桌面被置换成唐宛如高中时期的照片附加一行字:你们宫洺需要面试的话拿这张照片吧,翻相册翻一天了,就找到这张青春的”,再或者是我掀开被子准备装死尸,就看见唐宛如已经像一俱死尸一样四肢张开,平躺在我的床上媚眼如丝,说“你们宫洺如果需要体育总监,我可以的哦……” 979 | 980 | 后来唐宛如理所当然地被我海揍了一顿,她杀猪似的叫喊声像是能把屋顶都掀开,说到这,唐宛如还是很幸运的,每次她尖着嗓子满屋子跑的时候,顾里总是不在,不然顾里铁定会握着一剪刀,拨开她的肌肉把她的气管给剪断。事实上,从泡完温泉回来的每一天,我们住在同一屋檐下都很少能看到顾里的身影,更别提在公司了,她就像在她办公室外面布了一层隐身结界,任我怎么上班堵下班拦,她就是没从我眼前出现过,她穿梭于格子间的打桩机般的声音也随之变得稀少了。 981 | 982 | 我今天在公司也没有碰见顾里,不排除她是在月黑风高,我们睡得流口水的时候,她独自锦衣夜行去作案了。 983 | 984 | 我心急火燎地走去找顾里,经过蓝诀的办公桌的时候,蓝诀头也没抬,幽幽地从喉咙里飘出一句,“别白去了,顾里不在。” 985 | 986 | “不在?”我停住脚步,满脸的震惊。顾里的生物时钟终于失灵了?开玩笑!一大清早我去顾里房间发现已经人去楼空了。又怎么可能不在办公室? 987 | 988 | 蓝诀从一大堆文件中抬起头,找到我的眼睛,朝我翻了个白眼,“用不着这么惊讶的,她神龙见首不见尾的行为作风你又不是第一次见,她一回来就拿了一沓文件进了宫洺办公室。” 989 | 990 | “哦……”我拉长了语气,回过头看在走廊另一边的宫洺的办公室,那扇曾经被我推开无数次的厚重的门此刻严严实实的关上了,并且在我走出电梯的时候就听到宫洺通过电话传来的order:除非我允许,否则不要让任何人找我。 991 | 992 | 每每想到宫洺,我都升腾起一股厌恶的情愫,我厌恶宫洺,更厌恶自己,我恨他,可是我却没有能力报复他,我可以朝他的Armani西装上吐口水,但只能在心里,在上班遇见宫洺我还是只能恭敬地说一声“宫总早。” 993 | 994 | 我早把如何对付宫洺这个作战计划寄托到顾里身上来,而顾里呢,她依然无比精准地过着她的每一天,丝毫感受不到我内心的潮水已经万马奔腾开来。 995 | 996 | 那扇门仿佛贴了一张无比丑陋的画像,看得我脑袋瓜七窍生烟,我突然想像个暴发户一样“我有钱我怕谁”的死劲地痛打宫洺一顿,但是我的理智还是阻止了我,Kitty守在门前,跟押运人民币的战队没什么区别。 997 | 998 | “别看了,没个一时半会儿的,顾里准出不来。” 999 | 1000 | 我重新看回蓝诀,快速地扔下一句,“她出来了立马通知我。” 1001 | 1002 | 直到快到lunch time,仍没接到蓝的内线电话。我关掉电脑,走出办公室去找蓝诀,我站定在蓝诀面前,食指的指骨用力地敲着蓝诀面前的磨砂的玻璃隔挡,“顾里呢?还没出来么?**!在里面都能生出一娃儿来了!” 1003 | 1004 | 蓝诀惊诧抬起头,狠狠地盯着我说:“大姐,你别见谁逮谁好吧?又不是我把他俩关一块儿的。” 1005 | 1006 | “你是顾里的助理!哼……难说!” 1007 | 1008 | “你!”蓝诀被我气得咋舌了,后来他向我摆了摆手,“我没时间跟你贫嘴。”说完,他拿好一叠黑色文件夹站起来,向宫洺办公室的方向走去。 1009 | 1010 | “Kitty会拿着机枪把你扫射的。”我好心提示他。 1011 | 1012 | “同样,顾里会把你堵机枪口的。”蓝诀头也不回说。 1013 | 1014 | 蓝诀把文件交给Kitty,Kitty轻轻地敲了敲门,等待宫洺的答复。 1015 | 1016 | 结果等到的是顾里的声音,她说:“文件可以进来。” 1017 | 1018 | Kitty推开门,撞入眼帘的是顾里正对着宫洺坐,我看见她脸上含着明澈如溪水的笑意,像新开的镜子一样明星荧荧。 1019 | 1020 | 顾里正拿着Hermes茶杯,热气滋滋地冒着,听见门被打开的声音,顾里下意识地转过头看向门的方向,可是很快,她微微的愣住了,拿着茶杯的手也停住了,随即她从失神中恢复过来,回过头对着宫洺,微笑。 1021 | 1022 | 我知道顾里会突然怔住,因为她看见站在远处一脸惘然无措的我,我像一只被挖去了眼珠的鬼,两个窟窿幽幽地看着她。 1023 | 1024 | 可是我不知道顾里为什么会对着宫洺笑得如同春花开,不知道不知道!我迅猛地转过身,快步走回自己的办公室,“嘭”一声把门关得震天响。 1025 | 1026 | 到了下班时间,我穿过斑马线去对面马路拦的士,每到上下班时间,整条四车道的淮海路就塞得像一条鼻涕虫,管你干嘛干嘛的,老子就是慢慢地动。 1027 | 1028 | 我站在路口,在这时间,不等个几十分钟,别指望你的屁股能贴上坐垫,所以我都是怀着看破红尘的心态地等,一等再等。 1029 | 1030 | 11月末的上海开始走近冬天,淮海路的灯火也纷纷辉煌。那些妖艳野性的女人,开始出没在光怪陆离的夜上海,他们出入太平洋百货,血拼PARKSON百盛广场,扫荡恒隆广场,因此,夜间的上海不仅因为灯光,更因为女人,而变得妖媚璀璨,好似一个浑身赤裸的玉人儿,躺在长江出海口。 1031 | 1032 | 当我视线有意无意地落到对面马路,我见到宫洺那辆标志性的奔驰S600停在黄线边上,我突然想起宫洺要和顾里一起出席商务聚会,一个表面言笑晏晏的聚会,实质是浊水横流的角斗赛,彼此为了自己的利益,用最友善的笑容,开出最阴险的条件。 1033 | 1034 | 过了几秒,红灯转为绿灯,黑色的奔驰一下子飞奔出去,不一会儿就消失在滚滚的车流中,连亘到尽头的车流好像一条巨大的蟒蛇,它扭动它的躯体,甩动它的尾巴,一下子将我狠狠甩落。 1035 | 1036 | 我眺望着宫洺和顾里消失的远方,心里泛起酸水。 1037 | 1038 | 我伸手拦了辆的士,也一同混进了滚滚的车流中。 1039 | 1040 | 到了晚上十点多,顾里还没有回来,唐宛如用手肘撞了撞我,阴阳怪气地说:“你说顾里跟宫洺会不会勾搭上了?男未婚女未嫁的,同时活得那么变态,你说他俩老呆一块儿的,会不会擦出点什么火花?” 1041 | 1042 | 对于她的分析与猜测,我表现了一脸不爽,“这么喜欢八卦别人的私生活,你直接去问顾里问宫洺啊……” 1043 | 1044 | 不等我说完,唐宛如好个敏捷地拿起电话话筒,按了一连串号码,兴奋地等待着。 1045 | 1046 | 直到顾里在那边“喂”了一声,唐宛如压抑不住她的激动狂热,声音一下子高了N个key,把坐在旁边的我活生生地吓了一大跳,她说:“喂!顾里顾里,你们那边情况怎样?发展到白热化阶段没有?!” 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 | 后来我干脆拿起遥控摁掉开关,这下子真的清净了,没有了尘世的喧嚣吵闹。不时还可以听到来自厨房的Lucy口里飘出的菲律宾小调,轻轻的吟唱有时很清晰地传达过来,有时又被水龙头的“哗啦啦”水声覆灭,时隐时现,像是一首迷魂曲,我的眼帘不由自主地想闭上…… 1079 | 1080 | 迷糊中,我听到钥匙插进匙孔的声音,我就像一个突然被上紧发条的木人,一个激灵,赶紧坐直身子,拿过遥控重新摁下电视开关,原本漆黑的屏幕跳出顽皮豹的身影。 1081 | 1082 | 顾里推开门,将钥匙“哐当”一声扔在铜质的小狗叼着的飞盘上,语气不带任何起伏地说:“这么晚还不睡?” 1083 | 1084 | 顾里脱下她的Gucci皮草高跟鞋,换上Hermes豹纹高跟拖鞋,向吧台走去。 1085 | 1086 | 我目光紧随着她,不断地调整呼吸状态,尽量让我的语气听起来平稳,“是啊,别人纸醉金迷,我形影孤单,怎么睡得着?” 1087 | 1088 | 顾里似乎对我的冷嘲热讽充耳不闻,她从酒柜里拿出一瓶轩尼诗,漫不经心地说:“哦,柜子里有薰衣草花茶,安眠效果挺好。” 1089 | 1090 | 她又拿起一个高脚酒杯,一手轩尼诗,一手酒杯,慢慢地走上楼梯。 1091 | 1092 | “你这样算是什么!”我“嚯”地站起来,遥控器“啪嗒”一声从我腿上掉到地上,电池连同盖板纷纷脱落下来,不知飞到了哪里去。 1093 | 1094 | 顾里没有回头,她看着前方,语气平稳地说:“你是在挑起事端么?” 1095 | 1096 | “是啊,我不否认。我就是挑起事端,怎么着?我就是看不顺眼出事儿了,你还能像个过路人似的继续风风光光地过着,你的生活多么的色彩斑斓啊,你这样的平静让我差点就要以为那场火是你放的!我就是看不顺眼你对着宫洺像条哈巴狗,宫洺不是就你上司么?用得着你死心蹋地为他卖命儿么?你明明知道你对着的那人是天底下最险恶黑暗的操纵者,你为什么不用你的蛇蝎心肠不用你的毒牙去蛰他?你之前那些吞并收购计划呢,是被宫洺俘获了还是你根本就是一窝囊废?!” 1097 | 1098 | “是啊,我就是一窝囊废。林萧,这场争端你自个儿玩下去,我认输。恭喜你,你大获全胜。”不知为何,我总觉得顾里的声音听起来像个风洞,好像随时会哭的样子。但是我知道那是我的错觉,一个没有真实感情的人又怎么会哭?! 1099 | 1100 | 顾里说完,踩着Hermes高跟拖鞋,骄傲的像只孔雀,一步一步,消失在楼道转角处。 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 | 我现在正坐在警车上,如果不了解事情真相的人一定会以为我是一沦落女青年做了什么作奸犯科的事儿而被遣送***。人就那么的化学,哪怕是看见老爷爷跟大学孙女挽着手逛街,人也会像是戴着有色眼镜用鄙视的目光去打量他们,跟他们说女的是男的孙女,好吧,不相信,一口咬定老牛吃嫩草,女的是情妇。就像我身旁的**不断地说:“小姐,这可能真的是误会,起火原因也查出了是一起意外事故,追究起来也没有人会因为这而坐牢,毕竟这不是蓄意,想开点吧,你朋友的死不是用一命换一命就能换得回来的。再说了……人家宫洺一个堂堂《M.E》主编,怎么可能无缘无故去纵火呢?” 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 | 尽管在之前的那次争吵中,选择离开的人已经带走他们可以带走的物品,抽离了他们的感情,他们不遗余力地抹掉了他们在这个曾经充满欢笑与仇恨的空间里存在过的痕迹,但那些他们带不走的,比如沙发上的折痕、房门上的指印、地毯上的茶渍,都会成为荒凉的墓地上屹立的十字架,在我记忆的路上纷乱地穿插,成为触动泪腺的一道风景。 --------------------------------------------------------------------------------