Python 的编码问题

使用 Python 最烦的就是处理编码问题,有几点体会:

0、所有数据一律编码为 UTF-8,这样较为合适

1、 Windows 默认的编码不是 UTF-8,使用 open() 函数读写文件的时候如果不指定编码就容易出问题。 建议使用 open(FILENAME, ‘r’, encoding=’utf-8′) 这种形式

2、Python 2 默认的编码不是 UTF-8,使用前先指定编码:

import sys

reload(sys)

sys.setdefaultencoding(‘utf-8’)

即便如此,如果输入不是 utf-8 编码的数据,在经过字符串相关函数处理后,返回的结果仍可能是 ANSI 格式,特别是和字符串常量混在一起运算的时候。这是 Python 2 最大的问题之一。

 

3、 Python 3 默认的编码是 UTF-8,建议使用 Python 3

4、文本数据在使用 encode 函数编码之后,输出到文件或者数据库时要用 decode 函数解码,否则很可能会发现最后输出的数据是二进制形式的,需要再次读取后用 decode 函数解码。

5、unicode 没有所谓的“标点符号”字符集,只能在沿用 string.punctuation 的基础上自己加入想要的字符。 或者使用正则表达式选择文本中想保留的字符

6、print 函数在控制台输出的编码格式是由控制台的编码决定的。 比如 Windows 中文版使用的是 ANSI 编码,因此如果 print 函数要输出一个 UTF-8 编码的数据,很可能会遇到错误 (比如\xe6 这样的字符),因此输出的时候需要改为形如  print s.encode(‘utf-8′,’ignore’)。(print 函数遇到二进制编码的文本数据时会自动解码)

适合当夜宵的食物

一个人居住,夜深的时候难免孤独寂寞冷,如果这个时候肚子饿,那就更惨了。这两年试过不少食物当作夜宵,略有心得,在这里分享一下。

速食和面包:

面包、汉堡包、三明治等:吃腻了。

麦片巧克力:不宜长期吃,适合旅行或运动中补充能量,因为很便宜

康师傅红烧牛肉面:不合适,过于重口,而且味道会布满整个房间。吃久了会腻

统一都会小馆和冠军榜·兰州牛肉面:味道不错,但是不适合作为长期夜宵。同样过于重口。另外都会小馆和冠军榜的区别似乎只是在于冠军榜有牛肉。。。

日清合味道海鲜口味:较为合适。味道略清淡,吃完肠胃不会有太大负担

寿桃鲜虾云吞口味:较为合适,但是面身碱味较重,有的人可能不喜欢。

康师傅鲜虾鱼板面:很合适。胡椒开胃,海鲜汤底清淡。缺点是有一定气味,需要开窗通风一下。

康师傅香菇炖鸡面:不太合适,比较油腻。

泰国艾米(iMEE)方便面:汤头优秀,但是面条较硬,不吸汤。

所有咖喱味方便面:不合适,味道很重,肠胃负担重。

魔芋方便面:非常不合适。。。虽然热量很低,但是特别不好吃。本人试吃过某品牌菌菇口味魔芋方便面,入口即想吐。非常佩服那些每天吃着减肥的女生,还苦中作乐地留下不少态度积极的商品评论

冲泡速食汤:虽然味道不错,但无饱腹感,等于没吃任何东西。

零食类:

坚果(花生、核桃、松子、杏仁等等):因为太硬,吃完容易导致牙龈发炎,要刷牙

萨其马:太甜了,如果是连续熬夜可以考虑吃一个补充能量,平时就算了。

核桃酥、杏仁酥等等:太甜了,热量惊人。。。建议每次最多吃两个

烤海苔:一般。感觉比较上火,而且吃了无饱腹感,摄入盐分又比较多。

素食(腌制杏鲍菇、素肉、豆腐干等等):淘宝上卖的大部分都是烧烤、麻辣口味,晚上吃对口腔不利。不宜多吃。

牛肉制品(腌制牛筋、牛腩、牛百叶、牛肉等等):不适合当主要食物,另外盐分过多。适合加入方便面

腌制海鲜类(带子、扇贝等等):容易变质,不好储存。不合适。

需要自己下厨的:

煎蛋:比较油腻,不建议。

水煮蛋:推荐。容易做而且有饱腹感。

水饺:根据饥饿感决定。个人不喜欢夜宵吃太多东西。另外分享个小技巧:可以冷水下饺子,这样能保证饺子皮和饺子馅一块熟。

芝麻、花生汤圆:偶尔想吃甜的时候可以考虑,单身狗福利。

方便面:比较浪费时间,但是吃起来会有一点幸福感

挂面+各种酱(老干妈、饭扫光等等):比较油腻,口味较重,其实不太推荐。

炒饭:对于夜宵来说过于隆重了。最好是葱油口味,加青葱和火腿丁。吃起来比较香

螺狮粉:不容易调味,容易过咸或者过辣,比较考验厨艺。

其他种类或高难度夜宵:没吃过或者不会做,不评了。。

我比较欣赏的NLP/IR学者

这里列举的都是已经功成名就或者有一定声望的学者

林钦佑 (Chin-yew Lin):我一直以为微软的“小冰”算数学题的功能是用了很复杂的自然语言理解技术,看了论文以后才明白,他叫了几个RA收集网上解题网站的数据,然后用统计学习的办法提取解答过程的文本特征,生成一些特定的解答模板(未知数和方程)。遇到新的查询的时候,先查找最相似的解答模板,然后把数值填进去,最后解方程得到答案。 这种巧妙避开难点曲线救国的壮举如同欧拉应用韦达定理到无穷级数方程得到巴塞尔问题的解

吕正东:比较喜欢他在利用神经网络处理NLP和IR问题时候采用的符号主义思想。国内很多的研究人员满脑子都是向量表示+神经网络,然后把解决问题的方法论归结到调整神经网络中各种奇怪的激活函数和网络结构。

W. Bruce Croft:有很多基础性的工作。很多人对他的印象停留在十年多前向量空间模型大行其道的时候,其实他们组也探索了不少利用新的表示法的检索模型(比如  paragraph2vector 和 PRMS),虽然结果都不是很理想

Krisztian Balog:巴主席把正常人能想到的 entity retrieval model 都做了一遍。。。。每次我想到一个新的想法要实现的时候,我都很兴奋。几个月之后,当我得到一些结果的时候,发现他和他的马仔已经把论文拿去某个会议投稿了。。。。大大提升了我延期毕业的风险