前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论程序员怎么拥有咪蒙的文笔

论程序员怎么拥有咪蒙的文笔

作者头像
挖数
发布2018-07-25 10:23:52
5370
发布2018-07-25 10:23:52
举报
文章被收录于专栏:挖数

虽然我很讨厌咪蒙,但不可否认的是,咪蒙有很好的文笔~

作为半个程序员的我,是怎么训练我的文笔的呢?今天,我就跟陈独秀一起,分享一些提升文笔的小技巧


一、分词取同类型词

读书时写作文,老羡慕同桌学霸成语用得溜,写描述春天的句子,我只会写春天来了,燕子多了,他偏偏写春回大地,万紫千红,给隔壁班花寄情书,我写你真好看啊,眼睛很大,他偏写你眼波流转,秀色可餐,于是放学后我只能眼睁睁看他们手牵着手。

现在成了半个程序员,成语用得比当年的学霸还溜,你问我怎么学的?文本分析呗。

比如拿起金庸的《鹿鼎记》,我立马可以知道金庸喜欢用哪些成语,它们的使用频次如何,只要跑一段分词代码,把成语提取出来并统计频次

如果你不喜欢武侠小说,拿琼瑶的《窗外》也可以

以下是分词的Python代码

代码语言:javascript
复制
a={'word':[],'count':[]}
f=open('c:/python/wenben/chuan.txt','r',encoding='utf8').read()
words=list(jieba.cut(f))
for word in words:
    if len(word)>=4:
        a['word'].append(word)
        a['count'].append(1)
b=pd.DataFrame(a)
c=pd.pivot_table(b,index=['word'],values=['count'],aggfunc=np.sum)
c.to_csv('c:/python/wenben/chuan.csv',mode='w',encoding='utf8')

二、寻找某一词性最集中的段落

很多时候觉得一篇文章文笔美,是因为它有很多描写事物的辞藻,当读多这样的文章时,自己的文笔也能得到提高。

那假设读文章只读辞藻华丽的部分,抛弃其他部分,这样是不是可以提高你单位时间的吸收效率?

为了简化,把“辞藻华丽程度”量化为一个段落里的“形容词密度”,写一段代码用来统计各段落的形容词密度,然后把徐志摩的几篇散文放进去,让它输出辞藻华丽程度Top5的段落,结果如下:

Top1 《北戴河海滨的幻想》第4段,形容词密度:10.4%

青年永远趋向反叛,爱好冒险;永远如初度航海者,幻想黄金机缘于浩渺的烟波之外:想割断系岸的缆绳,扯起风帆,欣欣的投入无垠的怀抱。他厌恶的是平安,自喜的是放纵与豪迈。无颜色的生涯,是他目中的荆棘;绝海与凶巘,是他爱取自由的途径。他爱折玫瑰;为她的色香,亦为她冷酷的刺毒。

Top2 《北戴河海滨的幻想》第7段,形容词密度:9.6%

流水之光,星之光,露珠之光,电之光,在青年的妙目中闪耀,我们不能不惊讶造化者艺术之神奇,然可怖的黑影,倦与衰与饱餍的黑影,同时亦紧紧的跟着时日进行,仿佛是烦恼、痛苦、失败,或庸俗的尾曳,亦在转瞬间,彗星似的扫灭了我们最自傲的神辉——流水涸,明星没,露珠散灭,电闪不再!

Top3 《翡冷翠山居闲话》最后一段,形容词密度:8.1%

书是理想的伴侣,但你应得带书,是在火车上,在你住处的客室里,不是在你独身漫步的时候。什么伟大的深沉的鼓舞的清明的优美的思想的根源不是可以在风籁中,云彩里,山势与地形的起伏里,花草的颜色与香息里寻得?...

Top4《北戴河海滨的幻想》第6段,形容词密度:8%

幻象消灭是人生里命定的悲剧;青年的幻灭,更是悲剧中的悲剧,夜一般的沉黑,死一般的凶恶。纯粹的,倡狂的热情之火,不同阿拉伯的神灯,只能放射一时的异彩,不能永久的朗照;转瞬间,或许,便已敛熄了最后的焰舌,只留存有限的余烬与残灰,在未灭的余温里自伤与自慰。

Top5 《泰山日出》第7段,形容词密度:6.9%

一方的异彩,揭去了满天的睡意,唤醒了四隅的明霞一光明的神驹,在热奋地驰骋……

python代码

代码语言:javascript
复制
adj={'content':[],'cnt':[]}
for line in open('c:/python/wenben/zhimo.txt','r'): 
    adj['content'].append(line)
    words = pseg.cut(line)
    adj_cnt=0
    cnt=0
    for word, flag in words:
        if flag in ['Ag','a','ad','an']:
            adj_cnt+=1
        cnt+=1
    adj['cnt'].append(adj_cnt/cnt)
adj2=pd.DataFrame(adj)
adj2=adj2.sort_values(by = 'cnt',axis = 0,ascending = False)
print(adj2[:5])

三、利用词向量找同义词

记得小学语文课本上有一篇朱自清的《春》,上面有一段描写

盼望着,盼望着,东风来了,春天的脚步近了。 春天像小姑娘,花枝招展的,笑着,走着。

自从学了这篇课文,从此班上同学写春天,都是千篇一律的“春姑娘来了”,“春天的脚步近了”,老师看了特别恼火。

后面我才知道,文笔的好坏,还在于他描写的多样性。写一样东西,如果你能七十二变不重样,应该也算是文笔好之一吧。

由此我想到词向量的应用,如果你学过线性代数应该知道向量这个东西,词向量实际就是把一个词变成一个高维向量,变成向量的好处之一,是通过计算两个向量的相似度,来近似于他们在语料里边的相似度。

比如你想学金庸的描写手法,可以用词向量把他对一件事物的描写手法全部枚举出来。

试试枚举跟笑相关的描述

Python代码

代码语言:javascript
复制
#分词并生成语料库
f1 =open("c:/python/wenben/lu.txt",encoding='utf8')  
f2 =open("c:/python/wenben/word.txt", 'w',encoding='utf8')  
lu=f1.read()
lu.replace('\t','').replace('\n','').replace(' ','')  
word = jieba.cut(lu)  
f2.write(" ".join(word))    
f1.close()  
f2.close()
#用语料训练词向量
sentences =word2vec.Text8Corpus("c:/python/wenben/word.txt")  
model =word2vec.Word2Vec(sentences, size=200)
#输出同义词
y = model.wv.most_similar("笑",topn=20)
for item in y:  
    print (item[0], item[1])  

Just for fun, don't be serious~

End

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 挖数 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档