建造者说

总在造着什么的路上

0%

古龙说,无论什么东西,最好的都只有一种。经历半年的文本分类实践,我们基本已断定,最好的文本分类算法就是SVM – 支持向量机。
但是纵然知道了天机,新手做文本分类仍然需要学习不少东西,例如算法原理、分词、向量化等等。如果用上scikit-learn这样的庞然大物,更有种高射炮打蚊子的异样感。
有没有可能把最好的文本分类算法,包装成一个超级简单的工具提供给大家?
这是我开发TextGrocery的初衷。

阅读全文 »

Scrapy提供了定制输出格式的功能,包括JSON/CSV等,其实对于文本,分隔符不带Key的格式仍然是最好处理的。
虽然可以修改CSV_DELIMITER让CsvItemExporter输出符合需求的格式,但是对HTML总是存在编码转换的问题让我头疼不已。
索性继承BaseItemExporter实现了一个真正称心如意的定制版ItemExporter。
ItemExporter的代码不多,但必须配合自定义的StorePipeline使用。
客观们想要什么样的格式,就到format_output的函数里恣意妄为吧:
小2拜谢:custom_pipeline.py

当下数据矿工们谈论最多的,莫过于这「星火」了。Spark这名字,总让我联想起高中背过的单词书,从而印象不佳,哈哈。
今天也凑了把热闹,把一个日志解析的模块改成Spark实现,算是体验之旅吧。

阅读全文 »

工作中难免有遇到MySQL欧巴的时候,奈何我是个记性不大好的人,临笔忘词,只能祭出谷歌大法,于是想着造个小破轮子,优雅地解决Python连接MySQL的问题。
这个轮子一定不要像sqlalchemy那么复杂,也不需要像Django的ORM那么丰富,就像一碗白米饭,管你吃饱,还为你解决三大问题:

  1. 轻松连接MySQL
  2. 数据结构到模型的映射
  3. 满足增改查的基本功能,避免手写SQL
阅读全文 »

近期团队正在做一些环境配置自动化的工作,不得不感叹LibShortText这种C和Python混合、代码结构带着浓浓学术味的依赖库太不标致了。
于是花了点时间帮LibShortText写了个setup脚本,希望对LibShortText有兴趣的同学能从中得到更优雅的使用感受。

GitHub地址:python-libshorttext

如果喜欢,就不要吝惜,为2shou送上一颗星星吧:P

「用户画像系统」项目迭代中用Impala逐步替换原有的Hive作为查询组件,速度有了脱胎换骨的飞跃。但在把原先按列存储的表转换成两个按行存储的表之后,联表查询的表现不那么给力了(原先对Hive的十倍速度优势变成了两倍)。

考虑到项目转用Impala是我的提议,调整存储结构也是我的提议,这个结果确实是个让我丢面子的事情,于是挽起袖子找优化查询的方案。

阅读全文 »

最近在做一个面向Hive的查询服务,主程序是Python写的。
Hive的查询时间通常都要在1分钟以上,让用户等待不太友好,因此我们想到了用HiveServer2的异步接口,第一时间给用户返回,下次用户再访问的时候,利用密钥重建上次的查询,获取上个查询的状态,如果用户等待太久了还可以主动取消。

阅读全文 »

为了开发的方便,我在服务器自己的账号路径下创建了一个独立的Python环境,通过在.bash_profile设置alias别名替换掉python指令。

1
2
3
alias python="/home/bigdata/env/python/bin/python2.7"
alias pip="/home/bigdata/env/python/bin/pip"
alias easy_install="/home/bigdata/env/python/bin/easy_install"

近期有个Tornado项目部署上去了,需要做进程守护,我自然想到了supervisord这个神器。
以前都是在root权限下安装的,非root还是第一次。

阅读全文 »

什么是线性分类器?

线性分类器试图通过训练集中的样本得出一个分类超平面,目标是最大程度地区分训练集中不同类别的样本,最终把这个分类超平面应用于新样本的分类。

阅读全文 »

LibShortText是一个开源的Python短文本(包括标题、短信、问题、句子等)分类工具包。它在LibLinear的基础上针对短文本进一步优化,主要特性有:

  • 支持多分类
  • 直接输入文本,无需做特征向量化的预处理
  • 二元分词(Bigram),不去停顿词,不做词性过滤
  • 基于线性核SVM分类器(参见SVM原理简介:最大间隔分类器),训练和测试的效率极高
  • 提供了完整的API,用于特征分析和Bad Case检验
    阅读全文 »