Python自然语言处理实践: 在NLTK中使用斯坦福中文分词器

斯坦福大学自然语言处理组是世界知名的NLP研究小组,他们提供了一系列开源的Java文本分析工具,包括分词器(Word Segmenter),词性标注工具(Part-Of-Speech Tagger),命名实体识别工具(Named Entity Recognizer),句法分析器(Parser)等,可喜的事,他们还为这些工具训练了相应的中文模型,支持中文文本处理。在使用NLTK的过程中,发现当前版本的NLTK已经提供了相应的斯坦福文本处理工具接口,包括词性标注,命名实体识别和句法分析器的接口,不过可惜的是,没有提供分词器的接口。在google无果和阅读了相应的代码后,我决定照猫画虎为NLTK写一个斯坦福中文分词器接口,这样可以方便的在Python中调用斯坦福文本处理工具。

首先需要做一些准备工作,第一步当然是安装NLTK,这个可以参考我们在gensim的相关文章中的介绍《如何计算两个文档的相似度》,不过这里建议check github上最新的NLTK源代码并用“python setup.py install”的方式安装这个版本:https://github.com/nltk/nltk。这个版本新增了对于斯坦福句法分析器的接口,一些老的版本并没有,这个之后我们也许还会用来介绍。而我们也是在这个版本中添加的斯坦福分词器接口,其他版本也许会存在一些小问题。其次是安装Java运行环境,以Ubuntu 12.04为例,安装Java运行环境仅需要两步:

sudo apt-get install default-jre
sudo apt-get install default-jdk

最后,当然是最重要的,你需要下载斯坦福分词器的相应文件,包括源代码,模型文件,词典文件等。注意斯坦福分词器并不仅仅支持中文分词,还支持阿拉伯语的分词,需要下载的zip打包文件是这个: Download Stanford Word Segmenter version 2014-08-27,下载后解压。

准备工作就绪后,我们首先考虑的是在nltk源代码里的什么地方来添加这个接口文件。在nltk源代码包下,斯坦福词性标注器和命名实体识别工具的接口文件是这个:nltk/tag/stanford.py ,而句法分析器的接口文件是这个:nltk/parse/stanford.py , 虽然在nltk/tokenize/目录下有一个stanford.py文件,但是仅仅提供了一个针对英文的tokenizer工具PTBTokenizer的接口,没有针对斯坦福分词器的接口,于是我决定在nltk/tokenize下添加一个stanford_segmenter.py文件,作为nltk斯坦福中文分词器的接口文件。NLTK中的这些接口利用了Linux 下的管道(PIPE)机制和subprocess模块,这里直接贴源代码了,感兴趣的同学可以自行阅读:
继续阅读

发表在 中文信息处理, 中文分词, 自然语言处理 | 标签为 , , , , , , , , , , , , , , , , , , , , , , , , | 6 条评论

翻译技术沙龙第17次活动——“翻译质量评估及控制技术与工具”活动通知

翻译作为一种沟通手段,在全球一体化的今天扮演着越来越重要的角色。如何进行翻译质量评估也因此成为值得深思的问题。从House的《翻译质量评估———修订的模式》,到Williams 在《翻译质量评估:论辩理论模式》,再到2014年2月TAUS(翻译自动化用户协会)发布的DQF(动态翻译质量框架),翻译质量评估模式不断变革,翻译技术与工具在其中起到了很大作用。现今的翻译质量评估已不再局限于评判语义传达是否准确,而是涉及到术语统一、风格统一以及页面排版等诸多方面。

在秋高气爽的十月,我们诚挚邀请各位参加“翻译技术沙龙”第十七次活动,共同探讨“翻译质量评估及控制技术与工具”的相关话题,探讨内容围绕但不限于:

 

  • 翻译错误分类、判定与错误率计算方式
  • 国内外主要翻译质量评估标准
  • 翻译协作中的术语统一问题及方法
  • 翻译质量量化模式探讨
  • 译文大批量抽检技术和方法
  • 中文自动化校对技术和工具
  • 客户方对翻译质量的感知方式和评价方法

 

本沙龙致力于组织翻译技术相关从业者、兴趣爱好者通过一次又一次的沙龙式“头脑风暴”来互通有无、资源共享、共同进步。如果您也是“同道中人”,欢迎加入我们!

一切因有您的参与而更加精彩!

 

活动基本信息:

时间:2014年10月12日(周日)下午14:00-18:00

报名截止日期:2014年10月9日(周四)23:59

地点:水木汇咖啡(保福寺桥西中科资源大厦南楼4楼)

费用:请与会嘉宾至吧台点一杯咖啡,以支持场地提供方水木汇咖啡

请报名人员将下方报名表格发送至邮箱 trantechsalon@163.com

 

附:报名表格

姓名 性别 手机 邮箱 所在单位 职位/职称
希望发言或讨论的话题
发表在 自然语言处理 | 留下评论

Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱

曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开发语言是C/C++,但平时的很多文本数据处理任务都交给了Python。离开腾讯创业后,第一个作品课程图谱也是选择了Python系的Flask框架,渐渐的将自己的绝大部分工作交给了Python。这些年来,接触和使用了很多Python工具包,特别是在文本处理,科学计算,机器学习和数据挖掘领域,有很多很多优秀的Python工具包可供使用,所以作为Pythoner,也是相当幸福的。其实如果仔细留意微博,你会发现很多这方面的分享,自己也Google了一下,发现也有同学总结了“Python机器学习库”,不过总感觉缺少点什么。最近流行一个词,全栈工程师(full stack engineer),作为一个苦逼的创业者,天然的要把自己打造成一个full stack engineer,而这个过程中,这些Python工具包给自己提供了足够的火力,所以想起了这个系列。当然,这也仅仅是抛砖引玉,希望大家能提供更多的线索,来汇总整理一套Python网页爬虫,文本处理,科学计算,机器学习和数据挖掘的兵器谱。

一、Python网页爬虫工具集

一个真实的项目,一定是从获取数据开始的。无论文本处理,机器学习和数据挖掘,都需要数据,除了通过一些渠道购买或者下载的专业数据外,常常需要大家自己动手爬数据,这个时候,爬虫就显得格外重要了,幸好,Python提供了一批很不错的网页爬虫工具框架,既能爬取数据,也能获取和清洗数据,我们也就从这里开始了:

1. Scrapy

Scrapy, a fast high-level screen scraping and web crawling framework for Python.

鼎鼎大名的Scrapy,相信不少同学都有耳闻,课程图谱中的很多课程都是依靠Scrapy抓去的,这方面的介绍文章有很多,推荐大牛pluskid早年的一篇文章:《Scrapy 轻松定制网络爬虫》,历久弥新。

官方主页:http://scrapy.org/
Github代码页: https://github.com/scrapy/scrapy

2. Beautiful Soup

You didn’t write that awful page. You’re just trying to get some data out of it. Beautiful Soup is here to help. Since 2004, it’s been saving programmers hours or days of work on quick-turnaround screen scraping projects.

读书的时候通过《集体智慧编程》这本书知道Beautiful Soup的,后来也偶尔会用用,非常棒的一套工具。客观的说,Beautifu Soup不完全是一套爬虫工具,需要配合urllib使用,而是一套HTML/XML数据分析,清洗和获取工具。

官方主页:http://www.crummy.com/software/BeautifulSoup/

3. Python-Goose

Html Content / Article Extractor, web scrapping lib in Python

Goose最早是用Java写得,后来用Scala重写,是一个Scala项目。Python-Goose用Python重写,依赖了Beautiful Soup。前段时间用过,感觉很不错,给定一个文章的URL, 获取文章的标题和内容很方便。

Github主页:https://github.com/grangier/python-goose

二、Python文本处理工具集

从网页上获取文本数据之后,依据任务的不同,就需要进行基本的文本处理了,譬如对于英文来说,需要基本的tokenize,对于中文,则需要常见的中文分词,进一步的话,无论英文中文,还可以词性标注,句法分析,关键词提取,文本分类,情感分析等等。这个方面,特别是面向英文领域,有很多优秀的工具包,我们一一道来。
继续阅读

发表在 数据挖掘, 机器学习, 科学计算, 自然语言处理 | 标签为 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | 2 条评论

翻译技术沙龙第十六次活动——“互联网技术驱动下的语言服务众包模式” 通知

互联网技术的飞速发展为语言服务行业带来了巨大的挑战和市场需求。信息爆炸在带来海量待译内容的同时,也造成翻译内容碎片化现象,并提出快速交付的要求。与此同时,越来越多的译者或准译者进入语言服务市场,寻求工作和学习的机会。在机器翻译仍旧无法突破质量桎梏的情况下,有着效率高、参与面广、质量相对较高、成本较低等特点的众包翻译模式恰恰能够满足市场的需求。

“众包”概念自2006年出现以来,在语言服务、电商以及物流等领域的成功案例层出不穷。如今,TextMaster等国外众包平台日趋成熟,国内平台发展迅速,充分体现了众包模式的价值;而Facebook、Twitter等网站依托众包模式在短时间内实现多语种本地化,《哈利波特7》等畅销书的众包翻译尝试举得成功,亦说明众包翻译模式必将对传统翻译模式造成冲击。
继续阅读

发表在 自然语言处理 | 留下评论

[火光摇曳]神奇的伽玛函数(下)

原文链接: http://www.flickering.cn/?p=203

五、$ \Gamma(n) = (n-1)!$ 还是 $ \Gamma(n) = n! $ ? 

伽玛函数找到了,我们来看看第二个问题,为何伽玛函数被定义为满足 $\Gamma(n)=(n-1)!$? 这看起来挺别扭的,如果我们稍微修正一下,把伽玛函数定义中的 $t^{x-1}$ 替换为 $t^x$
$$ \Gamma(x) = \int_0^{\infty} t^{x}e^{-t}dt , $$
这不就可以使得 $\Gamma(n)=n!$了嘛。估计数学界每年都有学生问这个问题,然而答案却一直有一些争议。

欧拉最早的伽玛函数定义还真是如上所示,选择了$\Gamma(n)=n!$,事实上数学王子高斯在研究伽玛函数的时候, 一直使用的是如下定义:
$$ \Pi(x)=\int_{0}^\infty t^x e^{-t}\,dt ,$$
然而这个定义在历史上并没有流传开来。

Legendre

勒让德肖像水彩画

欧拉在伽玛函数的推导中实际上引入了两类积分形式
$$ \int_0^1 t^{x}(1-t)^{y}dt, \quad \quad \int_0^{\infty} t^{x}e^{-t}dt $$
现在我们分别称为欧拉一类积分和欧拉二类积分。勒让德追随欧拉的脚步,发表了多篇论文对欧拉积分进行了深入的研究和推广,不过在勒让德的研究中,对积分中的参数做了 $-1$的移位修改,主要定义为
$$ B(x, y) = \int_0^1 t^{x-1}(1-t)^{y-1}dt $$

$$ \Gamma(x) = \int_0^{\infty} t^{x-1}e^{-t}dt .$$
$B(x,y)$ 现在称为贝塔积分或者贝塔函数。其中$\Gamma(x)$ 的这个定义选择导致了 $ \Gamma(n) = (n-1)!$ 。实际上伽马函数中的$\Gamma$符号历史上就是勒让德首次引入的,而勒让德给出的这个伽玛函数的定义在历史上起了决定作用,该定义被法国的数学家广泛采纳并在世界范围推广,最终使得这个定义在现代数学中成为了既成事实。
继续阅读

发表在 自然语言处理 | 一条评论

[火光摇曳]神奇的伽玛函数(上)

原文链接: http://www.flickering.cn/?p=163

一、开篇

数学爱好者们汇集在网络论坛上的一大乐事就是对各类和数学相关的事物评头论足、论资排辈。如果要评选历史上最伟大的数学家,就会有一大堆的粉丝围绕高斯、黎曼、牛顿、欧拉、阿基米德等一流人物展开口水战;如果要讨论最奇妙的数学常数,$e, \pi, \phi=\frac{\sqrt{5}-1}{2} $ 肯定在候选队列中;如果要推举最美丽的数学公式,欧拉公式 $e^{i\pi} + 1= 0$ 与和式 $ 1 + \frac{1}{2^2} + \frac{1}{3^2} + \frac{1}{4^2} + \cdots = \frac{\pi^2}{6} $ 常常被数学爱好者们提及;如果有人追问最神奇的数学函数是什么? 这个问题自然又会变得极具争议,而我相信如下这个长相有点奇特的伽玛函数
$$ \Gamma(x)=\int_0^{\infty}t^{x-1}e^{-t}dt $$
一定会出现在候选队列中。

伽玛函数不是初等函数,而是用积分形式定义的超越函数,怎么看都让人觉得不如初等函数自然亲切。然而伽玛函数也被称为阶乘函数,高等数学会告诉我们一个基本结论:伽玛函数是阶乘的推广。通过分部积分的方法,容易证明这个函数具有如下的递归性质
$$\Gamma(x+1) = x \Gamma(x)$$
由此可以推导出,对于任意的自然数$n$
$$\Gamma(n) = (n-1)! .$$
由于伽玛函数在整个实数轴上都有定义,于是可以看做阶乘概念在实数集上的延拓。

如果我们继续再学习一些数学,就会惊奇地发现这个具有神秘气质的伽玛函数真是才华横溢。她栖身于现代数学的各个分支,在微积分、概率论、偏微分方程、组合数学, 甚至是看起来八竿子打不着的数论当中,都起着重要的作用。 并且这个函数绝非数学家们凭空臆想的一个抽象玩具,它具有极高的实用价值,频繁现身于在现代科学尤其是物理学之中。

笔者对数学的涉猎很有限,主要是从概率统计中频繁地接触和学习这个函数,不过这个函数多年来一直都让我心存疑惑:

  • 都说$n!$ 和伽玛函数是近亲,可是从相貌上这两个数学公式都差了十万八千里,历史上数学家们是如何找到这个奇特的函数的?
  •  现代数学对伽玛函数的定义使它满足 $\Gamma(n) = (n-1)!$,既然号称是$n!$ 的推广,为何定义伽玛函数的时候不让它满足$\Gamma(n) = n!$?这看起来不是更加舒服自然吗?
  •  伽玛函数是唯一满足阶乘特性的推广函数吗?
  •  伽玛函数在各种概率分布的密度函数中频繁出现,伽玛函数本身是否有直观的概率解释?

带着这些疑问,笔者翻阅了许多讲解伽马函数历史和应用的资料,发现伽玛函数真是一个来自异族的美女,与生俱来携带着一种神秘的色彩。你要接近她并不难,然而她魅力独特,令你无法看透。从她出生开始,就吸引着众多一流的数学家对她进行解读。 历史上伽玛函数的发现,和数学家们对阶乘、插值以及积分的研究有着紧密的关系,而这最早要从著名的沃利斯公式讲起。
继续阅读

发表在 自然语言处理 | 留下评论

NLPJob 主站上线

NLPJob之前主要以博客的模式在运作,虽然这个圈子的招聘很热闹,每次的招聘信息大家也响应的很热烈,但是毕竟博客这种人工模式比较低效,加之自己之前忙于其他的事情,这个博客慢慢的也淡了。前段时间,打开nlpjob的联系邮箱(nlpjob01 at gmail.com) 看了一下,赫然发现躺了很多邮件,包括招聘方的,也包括求职者的,由于自己的疏于搭理,冷落了这批同学,自己深感自责。所以,这段时间我在考虑把 NLPJob 的主站上线,考虑找个开源的或者自己动手写一个心中比理想的小众招聘网站来服务这个圈子。恰好清明的时候遇到了Jobberbase,试用后的立马觉得就是它了,所以这两天和同事一起着手定制和汉化,现在终于可以和大家打招呼了,欢迎大家试用,也欢迎大家多提建议。

www.nlpjob.com

这是一个完全自助式的互联网公司招聘平台,不需要任何注册信息。只需要在招聘和求职的时候留下相关的邮箱即可,我们的平台讲通过邮件服务为招聘者和求职者建立相关的联系

使用的时候招聘的同学可以直接发布职位,请注意,为了防止Spam,第一次发布职位的时候需要我们后台进行验证,如果验证通过,以后发布讲一路绿灯,畅通无阻,主要参照物将是邮箱。求职的同学可以在这个平台上直接申请相关的职位,求职信息及简历讲通过我们的平台邮件发送到招聘者的信箱之中。

另外特别需要注意的是,请猎头同学在发布职位的时候务必开头注明是猎头职位,否则讲无法通过验证或者将做删除处理。

如果您需要讲招聘信息置顶或者推荐到首页,请通过邮箱或者微博私信和我们取得联系,商讨相关事宜:

邮箱: nlpjob01@gmail.com
微博:@NLPJob

发表在 随笔 | 标签为 , , , , , , | 留下评论

顺丰海淘SFBuy首次体验-美国亚马逊海淘Kindle DX转运全攻略

虽然家里早已有一个6寸多的Kindle,但是发现阅读一些英文pdf书籍和paper还是很不方便,所以一直想搞一个大一点的Kindle。虽然知道海淘已经有一段时间,但是一直没有尝试,即使前段时间决定要买一个9.7寸的Kindle DX (Kindle DX, Free 3G, 9.7″ E Ink Display, 3G Works Globally) ,也跑到淘宝上了解了一下海外代购的价钱。不过促使我第一次开启海淘之旅的还是由于顺丰海淘SFBuy的走起:

SFBuy开淘走起!

SFBuy 自4月10日正式开放客户体验,请点击 “SFBuy邀请码获取” 或 “顺丰分享” 获取邀请码进行SFBuy注册,为了感谢您对SFBuy的支持,在4月30日前成功注册的客户我们将赠送一个月贵宾会员服务,欢迎您来注册!
我们将为您献上更贴心、更安全、更实惠、更快速的海淘转寄服务,通过SFBuy,海淘商品从美国转寄至中国内地只须7-10个工作日,运费低至三折,还可享受30天的免费仓储服务等。凭借顺丰速运超过20年的物流服务经验及稳定的技术保障,确保您海淘的宝贝安全到家。

所以在4月11号发现顺丰海陶SFBuy开放注册后,立即注册了一个账号,并且很快的在美国亚马逊(Amazon)上下单了Kindle DX (Kindle DX, Free 3G, 9.7″ E Ink Display, 3G Works Globally) ,也就在那天,发了这样一条微博:

今天无意间发现顺丰的海淘开放注册了, 就通过邀请码的方式注册了一个帐号,然后在美国亚马逊上下单了一个9.7寸的Kindle DX, 第一次正式体验海淘,这里将继续记录这次顺丰海淘之旅。

昨天拿到 Kindle DX , 相当开心,整个过程历经了12天,期间还由于 Amazon 周末在美国投递没有成功耽误了两天,所以补充了如下的微博:

52nlp:10美元的手续费//@52nlp: 刚刚拿到kindle,开始的时候由于周末UPS在美国没有投递成功耽误了两天外,其他都比较顺利,回头写个小总结。

这几条微博得到了很多同学的回应,今天还有同学评论也下单了 Kindle DX , 所以觉得很有必要在这里把这次顺丰海淘及转运的整个过程记录一下。这次海淘也Google了很多资料,发现网上有很多海淘攻略,也有很多美国亚马逊 Amazon 海淘攻略,但是关于顺丰海淘SFBuy的资料不是太多,主要也就是官网上提供了一些海淘攻略,所以也就有了本文的题目:顺丰海淘SFBuy首次体验-美国亚马逊海淘Kindle DX转运全攻略 。好了,以下将尽可能的详细说明整个顺丰海淘亚马逊 Kindle DX 的过程,希望对以后有相似需求的同学有些帮助,其实海淘也很简单
继续阅读

发表在 随笔 | 标签为 , , , , , , , , , , , , , , , , , , , , , , , , , | 14 条评论

DigitalOcean使用小记

晚上看到微博上的@developerWorks同学推荐DigitalOcean, 赫然发现自己使用DigitalOcean大概也一年了(2013年2月28日开始),自从前段时间把52nlp搬牵过来之后,我在国外的vps就只有DigitalOcean了。所以在微博上简短回复了一下:

上半年就开始用DO了,52nlp前段时间也搬到DO了,用的是10美元每月的Plan, 彻底告别了linode。

自从08年底52nlp开张以来,依次用过便宜好用的虚拟主机host2ez, 朋友免费赞助的小空间,Godaddy上免费附赠的空间(但是带广告),国外的老鹰主机(Hawkhost),以及用信用卡注册免费使用一年的AWS(但是一直没用上),直到遇见口碑极高的Linode,花上20多美元/每月搞一个完全自主拥有root权限的VPS(Virtual Private Server)后,发现自己已经离不开VPS了,虽然没有了Cpanel之类的控制面板可用(貌似也可以自己安装),但是更享受这种完全自主的命令行控制和Root权限。之后接触并玩过的VPS还有目前使用的阿里云和DigitalOcean

Linode大概使用了有两年,期间几乎没有出过什么问题,感觉非常棒,不过印象去年也是微博上某个朋友推荐我用DigitalOcean,号称配置SSD VPS( SSD cloud server, SSD云主机),了解了一下它的配置,发现最低配5美元/每月的Plan(512MB内存,1核,20G SSD硬盘, 1TB流量)和我每月20多美元的Linode Plan的配置基本旗鼓相当(不过目前linode最低配已经升级为1G内存…,印象也是这一年期间逐步加量不加价的,有竞争就是好啊),不过国外便宜的VPS有很多,不能因为便宜就放弃Linode,所以在没有放弃Linode的前提下选了一个Digital Ocean中最便宜的5美元/月的Plan玩一下,在这个上面诞生了“我爱公开课”,“挖课”等网站,也跑了一个python flask网站,课程图谱的前身:CourseraReview,从2013年2月28号到目前为止,基本上还没有出现过什么问题,感觉还不错,也欢迎大家体验这几个网站。

2013年年底,终于决定告别用了2年多的Linode,不是因为Linode不好,而是性价比没有DigitalOcean好,刚好这篇对比DO和Linode的英文文章“Digital Ocean vs. Linode”也道出了我的心声,这哥们也使用了2年的Linode,但是最终决定告别Linode,投向DigitalOcean的怀抱。所以除了之前5美元的vps外,我又为52nlp选了一个DigitalOcean中最流行的10美元/月的Plan或者官方说法是”Droplets”,下面是我的后台截图,2个DigitalOcean Droplets:
继续阅读

发表在 随笔 | 标签为 , , , , , , , , , , , , , , , , , , , , , , , , , , , , | 18 条评论

中文分词入门之字标注法全文文档

将“中文分词入门之字标注法”这个系列整理成了一个PDF文档放到微盘中了,感兴趣的同学可以下载:

微盘:中文分词入门之字标注法.pdf
百度网盘:中文分词入门之字标注法.pdf

如果愿意看网页,也可以从这个标签进入:字标注中文分词

另外在上一节关于CRF中文分词的介绍中,通过CRF++训练了一个CRF中文分词模型,实际训练的时间比较长,为了方便大家测试,也把这个CRF模型上传到微盘了,感兴趣的同学可以下载:crf_model

注:原创文章,转载请注明出处“我爱自然语言处理”:www.52nlp.cn

本文链接地址:http://www.52nlp.cn/中文分词入门之字标注法全文文档

发表在 中文信息处理, 中文分词, 自然语言处理 | 标签为 , , , , , , , , , , , , , , | 8 条评论