月度归档:2012年11月

关于词典结构的思考

Deep Learning Specialization on Coursera

本科毕设那会儿搞的是中文分词。最后象征性地用c++写了个最大正向匹配的算法,用MFC写了个图形界面交差了。
回忆起来,当时看过不少关于讨论词典该如何组织,如何存放的期刊论文。现在想来无非就是hash。什么首字什么次字,什么利用发音,五花八门呵呵。
其实说到底,现在的PC内存,就那么点量词典,直接全部hash进去不就完了么。至于hash函数怎么设计?使用ruby
hash=Hash.new(0)
hash[str].....................不就好了么。
窃以为那些讨论组织结构的文章,貌似也就是近几年的东西,可算是滥竽充数?或者是我想得太肤浅?
个人意见。 欢迎拍砖。

斯坦福大学机器学习第十一课“机器学习系统设计(Machine learning system design)”

Deep Learning Specialization on Coursera

斯坦福大学机器学习斯坦福大学机器学习第十一课“机器学习系统设计(Machine learning system design)”学习笔记,本次课程主要包括5部分:

1) Prioritizing what to work on: Spam classification example(工作的优先级:垃圾邮件分类例子)

2) Error analysis(错误分析)

3) Error metrics for skewed classes(不对称性分类的错误评估)

4) Trading off precision and recall(精确度和召回率的权衡)

5) Data for machine learning(数据对于机器学习的重要性)

以下是每一部分的详细解读。

1) Prioritizing what to work on: Spam classification example(工作的优先级:垃圾邮件分类例子)

首先让我们来看一下垃圾邮件和非垃圾邮件的例子,以下是一个垃圾邮件示例:

垃圾邮件举例-我爱公开课-52opencourse.com

我们将其标注为“垃圾(spam)", 用1表示;以下是一个非垃圾邮件的例子:

非垃圾邮件举例-我爱公开课-52opencourse.com

我们将其标注为“非垃圾(non-spam)",用0表示。

如果我们有一些这样标注好的垃圾和非垃圾邮件样本,如何来训练一个垃圾邮件分类器?很清楚这是一个有监督学习的问题,假设我们选择逻辑回归算法来训练这样的分类器,首先必须选择合适的特征。这里定义:

x = 邮件的特征;
y = 垃圾邮件(1) 或 非垃圾邮件(0)

我们可以选择100个典型的词汇集合来代表垃圾/非垃圾(单词),例如deal, buy, discount, andrew, now等,可以按它们的字母顺序排序。对于已经标注好的邮件训练样本,如果100个词汇中有单词j在样本中出现,就用1代表特征向量x中的xj,否则用0表示,这样训练样本就被特征向量x所替代:
垃圾邮件分类特征向量表示-我爱公开课-52opencourse.com
注意在实际使用中,我们不会手动去选择100个典型的词汇,而是从训练集中选择出现频率最高的前n个词,例如10000到50000个。

那么,如何高效的训练一个垃圾邮件分类器使其准确率较高,错误率较小?

- 首先很自然的考虑到收集较多的数据,例如"honeypot" project,一个专门收集垃圾邮件服务器ip和垃圾邮件内容的项目;

- 但是上一章已经告诉我们,数据并不是越多越好,所以可以考虑设计其他复杂的特征,例如利用邮件的发送信息,这通常隐藏在垃圾邮件的顶部;

- 还可以考虑设计基于邮件主体的特征,例如是否将"discount"和"discounts"看作是同一个词?同理如何处理"deal"和"Dealer"? 还有是否将标点作为特征?

- 最后可以考虑使用复杂的算法来侦测错误的拼写(垃圾邮件会故意将单词拼写错误以逃避垃圾邮件过滤器,例如m0rtgage, med1cine, w4tches)

2) Error analysis(错误分析)

在我们需要机器学习算法来解决一些实际问题时,建议:

  • - 从一个简单的算法入手这样可以很快的实现这个算法,并且可以在交叉验证集上进行测试;
  • - 画学习曲线以决定是否更多的数据,更多的特征或者其他方式会有所帮助;
  • - 错误分析:人工检查那些算法预测错误的例子(在交叉验证集上),看看能否找到一些产生错误的原因。

假设交叉验证集上有500个邮件样本,其中算法错分了100个邮件,那么我们就人工来检查这100个bad case, 并且按如下的方式对它们进行分类:

  • (i) 邮件是什么类型的?
  • (ii) 什么样的线索或特征你认为有可能对算法的正确分类有帮助?

数值评估的重要性:
在对bad case进行分析后,我们可能会考虑如下的方法:

  • 对于discount/discounts/discounted/discounting 能否将它们看作是同一个词?
  • 能不能使用“词干化”的工具包来取单词的词干,例如“Porter stemmer"?

错误分析不能决定上述方法是否有效,它只是提供了一种解决问题的思路和参考,只有在实际的尝试后才能看出这些方法是否有效。
所以我们需要对算法进行数值评估(例如交叉验证集误差),来看看使用或不使用某种方法时的算法效果,例如:

  • 不对单词提前词干:5%错误率   vs 对单词提取词干:3% 错误率
  • 对大小写进行区分(Mom / mom): 3.2% 错误率

3) Error metrics for skewed classes(不对称性分类的错误评估)

什么是不对称性分类?

以癌症预测或者分类为例,我们训练了一个逻辑回归模型h_\theta(x). 如果是癌症,y = 1, 其他则 y = 0。
在测试集上发现这个模型的错误率仅为1%(99%都分正确了),貌似是一个非常好的结果?
但事实上,仅有0.5%的病人得了癌症,如果我们不用任何学习算法,对于测试集中的所有人都预测y = 0,既没有癌症:

不对称分类预测例子-我爱公开课-52opencourse.com

那么这个预测方法的错误率仅为0.5%,比我们废好大力训练的逻辑回归模型的还要好。这就是一个不对称分类的例子,对于这样的例子,仅仅考虑错误率是有风险的。

现在我们就来考虑一种标准的衡量方法:Precision/Recall(精确度和召回率)

首先对正例和负例做如下的定义:

正负例问题-我爱公开课-52opencourse.com

其中:

True Positive (真正例, TP)被模型预测为正的正样本;可以称作判断为真的正确率

True Negative(真负例 , TN)被模型预测为负的负样本 ;可以称作判断为假的正确率

False Positive (假正例, FP)被模型预测为正的负样本;可以称作误报率

False Negative(假负例 , FN)被模型预测为负的正样本;可以称作漏报率

那么对于癌症预测这个例子我们可以定义:

Precision-预测中实际得癌症的病人数量(真正例)除以我们预测的得癌症的病人数量:

Precision精确度-我爱公开课-52opencourse.com

Recall-预测中实际得癌症的病人数量(真正例)除以实际得癌症的病人数量:

召回率-我爱公开课-52opencourse.com

4) Trading off precision and recall(精确度和召回率的权衡)

假设我们的分类器使用了逻辑回归模型,预测值在0到1之间:0 \le h_\theta(x) \le 1, 一种通常的判断正负例的方法是设置一个阈值,例如0.5:

  • 如果 h_\theta(x) \ge 0.5,则预测为1, 正例;
  • 如果 h_\theta(x) < 0.5, 则预测为0, 负例;

这个时候,我们就可以计算这个分类器的precision and recall(精确度和召回率):

精确度和召回率的权衡-我爱公开课-52opencourse.com

这个时候,不同的阈值回导致不同的精确度和召回率,那么如何来权衡这二值?对于癌症预测这个例子:

假设我们非常有把握时才预测病人得癌症(y=1), 这个时候,我们常常将阈值设置的很高,这会导致高精确度,低召回率(Higher precision, lower recall);

假设我们不希望将太多的癌症例子错分(避免假负例,本身得了癌症,确被分类为没有得癌症), 这个时候,阈值就可以设置的低一些,这又会导致高召回率,低精确度(Higher recall, lower precision);

这些问题,可以归结到一张Precision Recall曲线,简称PR-Curve:

Precision Recall 曲线-PR 曲线-我爱公开课-52opencourse.com

那么如何来比较不同的Precison/Recall值呢?例如,对于下表:

精确度召回率表对比-F值-我爱公开课-52opencourse.com

通常我们会考虑用它们的均值来做比较,但是这会引入一个问题,例如上面三组Precision/Recall的均值分别是:0.45, 0.4, 0.51,最后一组最好,但是最后一组真的好吗?如果我们将阈值定的很低,甚至为0, 那么对于所有的测试集,我们的预测都是y = 1, 那么recall 就是1.0,我们根本就不需要什么复杂的机器学习算法,直接预测y = 1就得了,所以,用Precison/Recall的均值不是一个好办法。

现在我们引入标准的F值或者F1-score:

F值F1值-我爱公开课-52opencourse.com

F值是对精确度和召回率的一个很好的权衡,两种极端的情况也能很好的平衡:

F值-Precision/Recall-我爱公开课-52opencourse.com
5) Data for machine learning(数据对于机器学习的重要性)

在设计一个高准确率的机器学习系统时,数据具有多大的意义? 2001年的时候,Banko and Brill曾做了一个实验,对易混淆的单词进行分类,也就是在一个句子的上下文环境中选择一个合适的单词,例如:
For breakfast I ate ___ eggs
给定{to, two, too},选择一个合适的单词。
他们用了如下几种机器学习算法:

  • -Perceptron(Logistic regression)
  • -Winnow
  • -Memory-based
  • -Naïve Bayes

根据训练集的不同规模记录这几种算法的准确率,并且做了如下的图:

数据对于机器学习的意义

最终得到的结论是:

“It's not who has the best algorithm that wins. It's who has the most data."

选择大数据的理由?

假设我们的特征x \in R^{n+1} 有很多的信息来准确的预测y, 例如,上面的易混淆词分类的例子,它有整个句子的上下文可以利用;

反过来,例如预测房价的时候,如果仅有房屋大小这个特征,没有其他的特征,能预测准确吗?

对于这样的问题,一种简单的测试方法是给定这样的特征,一个人类专家能否准确的预测出y?

如果一个学习算法有很多的参数,例如逻辑回归/线性回归有很多的特征,神经网络有很多隐藏的单元,那么它的训练集误差将会很小,但容易陷入过拟合;如果再使用很大的训练数据,那么它将很难过拟合,它的训练集误差和测试集误差将会近似相等,并且很小。所以大数据对于机器学习还是非常重要的。

参考资料:

机器学习视频可以在Coursera机器学习课程上观看或下载: https://class.coursera.org/ml

第十一课“机器学习系统设计”的课件资料下载链接:
PPT   PDF

http://en.wikipedia.org/wiki/Precision_and_recall

http://en.wikipedia.org/wiki/Accuracy_and_precision

召回率 Recall、精确度Precision、准确率Accuracy、虚警、漏警等分类判定指标

True(False) Positives (Negatives)

http://en.wikipedia.org/wiki/F1_score

 

本系列文章来自我在52opencourse上发布的笔记,这里做个备份,转载请注明出处:
http://52opencourse.com/275/coursera%E5%85%AC%E5%BC%80%E8%AF%BE%E7%AC%94%E8%AE%B0-%E6%96%AF%E5%9D%A6%E7%A6%8F%E5%A4%A7%E5%AD%A6%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%AC%AC%E5%8D%81%E4%B8%80%E8%AF%BE-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1-machine-learning-system-design

翻译技术沙龙第十五次活动——“术语管理”通知

Deep Learning Specialization on Coursera

自然语言处理技术的深入发展,为新时代的语言服务提供了新的契机,术语管理的相关技术也借此得到了迅速的发展。为了满足不断增长的市场及客户需求,翻译技术和翻译工具提供商们开发了越来越多的计算机辅助翻译(Computer-Assisted Translation,CAT)工具,这些工具大都集成了文档翻译、译后编辑、项目管理、翻译记忆、术语管理以及语料回收等功能。由于术语管理贯穿于翻译实践的多个环节,因此CAT工具中的术语管理模块常常同其它功能模块一起发挥作用,而术语提取则是术语管理模块中最为核心的功能。

在国际市场的竞争日趋激烈的大背景下,很多跨国公司都将术语管理纳入其全球信息管理 (Global Information Management) 战略的一部分。SDL在2009年进行的一项关于术语管理的调查显示,95%的人认为术语是翻译过程中十分重要的环节,85%的人表示他们正在进行术语管理。由此可见,多数国外企业和国际化语言服务供应商已经意识到术语在整个信息管理以及项目管理中的重要意义。

在这个阳光明媚的暖冬里,我们诚挚邀请您参加“翻译技术沙龙”第十五次活动,大家一起来探讨有关“术语管理”的相关话题:

  • 术语的基本概念是什么?
  • 现代语言服务中的术语管理有何重要意义?
  • 现代语言服务中客户对术语管理有什么样的需求?
  • 术语自动提取有哪些主流的技术?
  • 如何对单语或双语文件进行术语提取?
  • 当前术语自动提取有哪些问题和局限性?
  • 翻译项目中如何快速提取术语?
  • 翻译实践中有哪些术语管理工具?
  • 术语管理有什么样的流程?
  • 术语库有什么样的分类和数据标准?
  • 如何创建并管理术语库?
  • 如何有效地管理语言资产管理?

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

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

活动基本信息:

时间:2012年11月25日(周日)下午14:00-17:00

报名截止日期:2012年11月22日(周四)23:59

地点:北京语言大学语言信息处理研究所

费用:无

请报名人员将个人信息、联系方式发送至邮箱trantechsalon@gmail.com。

 

“翻译技术沙龙”第十四次活动详情与小结

Deep Learning Specialization on Coursera

主题为“开源翻译技术”的翻译技术沙龙第14期活动于2012年10月14日14:00-17:30在中科院计算所501会议室举行。共有40位翻译技术研发者、翻译行业从业者和自然语言处理技术爱好者参加了本次活动。其中,高校科研院所的参与者来自:北京语言大学、北京大学、苏州大学、中科院自动化所、中科院软件所、北京师范大学、东北大学、中科院计算所(东道主)等;企业方面的参与者来自:明博智创、知识产权出版社、优酷网、微软、去哪儿网、莱博智、金山软件、网易有道、太科石油信息咨询、百度、橙译中科、语智云帆等。

在参会嘉宾分别进行简短介绍之后,沙龙进入特邀嘉宾发言阶段。本期特邀演讲嘉宾有:中科院计算所骆卫华老师:介绍计算所机器翻译研发;百度何中军博士:介绍百度机器翻译研发;东北大学肖桐老师:介绍东北大学NiuTrans开源机器翻译系统;北京大学俞敬松教授:介绍开源翻译技术与翻译教学;语智云帆胡日勒博士:其他开源翻译工具简介。

计算所骆老师首先做了题为《面向应用的机器翻译》的报告,介绍了机器翻译的基本原理和计算所(及橙译中科公司)机器翻译的主要研究方向。除了深入基于句法的翻译模型研究之外,计算所积极探索机器翻译的实用应用方向,主要有:新闻、专利、科技文献、外事文书、口语、名片、菜谱等,并在小语种翻译(韩、泰、维、藏、蒙、日等)方面具备一定的积累;产品方面,目前提供的有:
开放API、双语句子自动对齐、编辑后处理、云翻译资源库;骆老师还总结了机器翻译应用中的关键问题: 双语语料、未登录词、特殊语言现象、语言非典型用法、译后编辑与翻译模型的融合、翻译模型的压缩与优化、分布式并行运算平台等。

第二位发言的是百度机器翻译组的何中军博士。何博士介绍了百度在线翻译、百度英文论文写作助手、机器翻译API等产品。与会者对百度机器翻译研发非常感兴趣,就语料规模、响应性能、多引擎融合、评测、与谷歌翻译对比等问题与何博士进行了热烈的讨论。对于开源机器翻译系统,何博士的观点有二:一是开源系统虽然能够加快开发,但往往带来“不求甚解”,反而不利于学习者和研究人员深入理解,希望利用开源系统的学生和开发者要深入源码;二是开源系统给互联网带来了大量的语料噪音,给基于互联网的后续研发带来了很大的麻烦,希望从业人员要对产出的内容负起责任。

第三位发言的嘉宾是东北大学的肖桐老师。肖老师首先介绍了东北大学NLP组的历史和团队现状,然后具体介绍NiuTrans开源机器翻译系统的细节。NiuTrans开源至今已有550研究机构和个人下载使用,它是为数不多的支持绝大多数主流SMT模型的系统。在NiuTrans开发过程中,开发团队成员付出了非常大的努力——要做的不止是开发,还有技术支持,手册撰写,WEB维护等一系列繁琐的事务。小老师的开源观点:开源机器翻译系统主要用于学习和研究,也可以用于实际系统开发,但“裸奔”绝对不行。即系统搭建只是起步,调优才是关键!深入理解机器翻译系统必不可少。随后肖老师回答了大家很多关于NiuTrans的细节问题,自动化所陈振标老师给NiuTrans提出了不少实用的改进建议。

之后发言的嘉宾是北京大学语言信息工程系俞敬松教授。俞老师首先介绍了北京大学语言信息工程系的基本情况,包括计算机辅助翻译、文本翻译与技术写作、互联网数据挖掘(即原来的自然语言处理)三个专业方向。对于在与教学相关的开源技术应用,俞老师要求学生(尤其是NLP方向的)一要“求甚解”,不单要会用,还要深入理解,而且不能满足于算法和论文,要有动手编程实现的能力;二要“做贡献”,发现错误要能主动去fix。对于开源翻译工具,俞老师提出:1)可以更多关注一些BS结构的系统;2)格式问题是翻译工具应用的一大障碍,需要下大力气去解决;3)机器翻译应该多研究译员的行为,让人的思维可以对机器翻译产生干预。俞老师认为,机器翻译开发者应该注重MT的实际意义,面向译员的MT应该重视译员的最核心的需求。目前常见的情况是MT开发人员多数不了解译员在做什么。

最后一位发言的嘉宾是来自语智云帆的胡日勒博士。胡博士为大家总结了十四款开源翻译软件(事先在 @中文翻译技术沙龙 微博上已发布),从开源软件的不同协议对应的不同权利和责任说起,对各软件逐一进行了简要介绍。所涉及的软件除了前面讨论较多的机器翻译系统(moses, NiuTrans)之外,更多的是翻译记忆类的CAT工具(如OmegaT)、翻译记忆服务器TM Server(如OpenTM2 | TinyTM)、翻译管理系统 TMS(如GlobalSight)、机器翻译支撑环境(如m4loc)、本地化格式处理工具(如POedit)、翻译支持组件集合(如Okapi Framework Tools)等。其实机器翻译只是翻译技术的一个方面,在实际翻译生产中,各种各类的技术和工具发挥着重要的作用。大家应该多关心实际生产中的需求。

中间休息之后,活动转入互动环节。语智云帆魏勇鹏总经理主持互动环节,首先邀请太科石油、知识产权局、莱博智等公司代表从客户方和服务方角度谈如何看待机器翻译和辅助翻译技术。
太科石油吕经理的观点如下:
1)翻译公司有大量的语料,但是其整理是一个费时费力费钱的过程。2)绝大多数翻译公司都有一条“纪律”,就是不许用机器翻译!3)翻译只是翻译公司所做工作的其中一部分,工作流程中还有许多其他的环节和细节处理(如格式转换、排版、文件拆分、字数统计等),这些工作可能占据将近一半的时间;3)要让译员接受机器翻译,需要彻底了解机器翻译的原理,思维方式必须有翻天覆地的变化,不是短期内可以实现的。机器翻译发展的方向是什么,翻译公司该怎么去适应,这是太科参加翻译技术沙龙活动希望了解的内容。
知识产权局王先生:
在知识产权出版社从事信息抽取方面的工作,与机器翻译有相通之处。认为目前译员对机器翻译的期待远高于现有机器翻译系统能达到的水平。所以机器翻译还需要大幅度提高翻译质量。同样关心机器翻译发展的方向。
莱博智任先生:
介绍了莱博智机器翻译应用的情况。基本流程包括客户需求分析--原始文件获取--领域匹配--模型训练--自动翻译--交付或译后编辑等。

针对大家最为关心的机器翻译发展方向问题。骆老师、胡博士简要介绍了9月份在西安理工大学举办的第八届全国机器翻译研讨会(CWMT2012)的情况:会议议题涉及机器翻译理论方法、机器翻译应用、语音翻译、少数民族语言与机器翻译、机器翻译评测等;会议期间,百度、微软亚洲研究院、自动化研究所、东北大学、专利信息中心等单位展示了最新研究成果和机器翻译系统。CWMT会上,大家普遍认为新的、复杂的机器翻译模型离应用还比较远,如何将机器翻译与翻译流程相结合,并找到合适的商业模式,是当前机器翻译发展的重要任务。会上还探讨了基于语义的机器翻译发展方向。

嘉宾们还针对机器翻译的商业模式进行了讨论。语智云帆魏总提出,针对客户的需求进行引擎定制,是目前可行的一种模式,国外已有采用这种模式的商业案例。不过,出于语料数据的安全性和业务流程的可控性考虑,客户通常希望能够对翻译引擎有完全的控制力,但由于机器翻译系统的复杂性,以一般客户的技术能力又很难掌握。这就要求引擎提供商能够提供“点对点”、“手把手”的支持,售后服务的成本非常高。

中国译协本地化服务委员会秘书长崔启亮老师发表了对机器翻译的观点: 第一,机器翻译研究是热点,但研究与应用要适当分工,机器翻译要走出实验室,走向商业翻译应用。第二,机器翻译的应用领域应该多元化,例如信息情报检索不要求高的翻译译文质量。第三,仅靠机器翻译不能解决译文质量问题,还需要结合译前预处理,包括翻译记忆,术语,标签TAG保护,特殊规则,译后人工校对。崔老师呼吁作为程序员的MT开发者和作为用户的外语翻工作者(场外关注沙龙并进行实况转发的 @一本词典 认为这两类人“似乎活在两个不同的世界里”)应该互相关注,多多交流,了解实际翻译需求,希望机器翻译关注更多自身具有优势的领域,注意拓展多元化的商业模式。

太科石油吕经理进一步补充:目前市场上主流的辅助翻译产品都是国外开发的,很多方面并不适合国内翻译行业的需求。希望国内的机器翻译、辅助翻译开发者联合起来,合理分工及协作,为国内翻译行业打造更加适用的翻译工具。语智云帆魏总也倡议,希望对开源翻译技术有兴趣的研究者和开发者能一起进一步调研、分析、改进、整合各种开源翻译技术资源,将技术转化为真正的生产力。

最后,参加活动的部分嘉宾合影留念,本次沙龙活动圆满结束。