Posted by snowblink on 三月 3rd, 2010
昨天突然发现visual studio不能调试,按F5弹出对话框:”Unable to start debugging. The debugger is not properly installed. Run setup to install or repair the debugger. ” 这是Visual Studio 2003的情况(原谅我还用这么老的开发工具吧……) 换Visual Studio 2005试了一下,也是类似的对话框,似乎人性了一点,加了一点解释说明。
这个问题搜索引擎里搜不到十分准确的答案,大部分是说unable to start debugging on web server的,和asp.net有关,而我的开发只是一个小程序而已,绝对和asp没有关系。
vs 2003和2005都出问题,可见是它们share的组件有问题。这个组件肯定和调试器有关。又在搜索引擎上搜了一下调试的机制,拼凑得出调试和一个系统服务有关,也就是Machine Debug Manager,一般在安装Visual Studio的时候加入。它对应的应用程序是C:/Program Files/Common Files/Microsoft Shared/VS7DEBUG /mdm.exe。而现在这个系统服务不翼而飞了。
我自己的电脑上和实验室的电脑上同时出现了此问题,不知道是不是安装更新时或杀毒软件/360的误删。
重新安装一次vs实在太麻烦了……那么,怎样添加一个系统服务呢?
先试了一个下载的可视化的工具,srvinstw.exe。但是添加以后无法启动。原来原先的Machine Debug Manager服务依赖于RPC(Remote Procedure Call)服务,
而可视化工具无法添加依赖关系。
后来又受指导说可以用命令行的sc create来添加系统服务,但是实在记不住那么多命令……
最后终于找到了一个简单方法。找一台别的电脑,导出注册表中的HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/MDM表项,然后导入本机。重新启动以后,这个系统服务就恢复了。
ps. 为什么输入不了反斜杠呢?不得不用”/”代替。。。。
Posted by snowblink on 九月 14th, 2009
很久没有继续这个系列。其实电脑里有很多草稿,只是改了删,删了改,到最后就没有信心写下去,这就是拖拉的坏处……也有原因是接触nlp的方面越来越多,从以前的只能看到树木,变成了能看到森林吧……
上次说到自然语言处理领域的一些书籍,这次讲一下自然语言处理的相关领域。其实这个领域应该是一个文理交叉的学科,从大的学科分类来说是计算机科学,语言学,认知科学的交叉,从小的研究方向来说,相关方向是机器学习,数据挖掘,生物信息学,人工智能等。
下面分别介绍一下各个方面对自然语言处理领域的影响。
先从大的方面说起。
因为有了计算机科学,才催生了自然语言处理的需求。否则人们靠大脑处理自然语言,而不靠计算机科学处理自然语言。由于信息爆炸,人们希望计算机能“懂得”自然语言,节省人们的处理时间,降低人工处理成本。
语言学是自然语言处理的基础,但是在自然语言处理中,并非使用传统语言学的知识越多越好,因为计算机有时不能像人类一样进行“模糊处理”,而语言学家提供的知识常常会彼此冲突。
认知科学是探索人类怎样学习的科学,研究人脑和心智的工作机制。由于语言是人脑处理的信息的重要部分,所以认知科学的知识有助于人们了解自然语言在人脑中处理的机制,并让计算机“模拟”这种机制。
然后说相关方向。
机器学习现已成为自然语言处理的重要辅助,甚至可说是理论基础。机器学习在自然语言处理领域中的应用一般利用统计的方法,从大量数据中学习模型的参数,利用训练好的模型完成自然语言处理任务。在句法分析,机器翻译等自然语言处理的重要领域都大量利用了机器学习方法。机器学习还在图像处理等领域有着广泛应用。
数据挖掘是从大量数据中获取人们感兴趣的模式的方法。由于互联网上有大量的语言资源,从中获取有意义的模式能够为自然语言处理提供有价值的资源。
生物信息学和自然语言处理的共同点在于它们都处理“序列”。在生物信息学中是DNA序列,在自然语言处理中是语言序列,包括字符序列和语音序列。
人工智能曾经是自然语言处理方法的基础,虽然近年来随着统计方法的兴起而逐渐淡出,但是许多学校的自然语言处理实验室依然归于人工智能分支,利用人工智能方法解决自然语言问题是“最初的梦想”,虽然一时无法完全实现,但是必然是最终追求的目标。
下面再说一下自然处理语言领域的常见问题和分支:
信息检索:随着搜索引擎大行其道,搜索技术真正影响到了人们的生活。有商业利益驱动,信息检索是自然语言处理的一个活跃方向。
机器翻译:对自动翻译文件的迫切要求也促使机器翻译成为自然语言处理领域的热门研究课题。但是现在机器翻译还未能做到完全实用化。
问答系统:这方面我了解不多,也是自然语言处理与生活息息相关的应用之一,也许可以归为“智能信息检索”。
信息抽取: 与数据库技术结合,旨在将杂乱无章的信息归纳成结构化,包含语义关系的信息。
自动文摘,句子压缩:从语义层面处理自然语言。
(这里列举的问题和分支只是我了解的小部分,必定存在不完整和错误之处。)
我将涉及自然语言处理,机器学习,数据挖掘,人工智能等方面的书籍整理成了豆列,地址在http://www.douban.com/doulist/264539/。
下一篇讲自然语言处理中的数学知识。
Posted by snowblink on 七月 14th, 2009
Heuristics(启发式方法)对自然语言处理的影响究竟几何?
计算机科学中的启发式方法:”In computer science, a heuristic is a technique designed to solve a problem that ignores whether the solution can be proven to be correct, but which usually produces a good solution or solves a simpler problem that contains or intersects with the solution of the more complex problem. Some commercial anti-virus scanners use heuristic signatures to look for specific attributes and characteristics for detecting viruses and other forms of malware.” (from Wikipedia)
启发式方法与理论方法的比较: heuristics tends to be more related to engineering. (See Where it comes from)
语言是经验的产物,但是没有理论的参与,分析语言将变为困难的事。然而,启发式方法在NLP中的应用毋庸置疑,假如我们只用理论来描述语言,就应了那句”All grammar leaks”。近年来一批启发式方法的论文说明了启发式方法的重要性,但必须指出的是,它们经常利用一些语法作为理论基础。
造成启发式方法在NLP中如此重要的原因可能是NLP的评价标准不是确定的。不像理论计算机科学有时空复杂度作为标准,数据库,网络等应用有带宽,存储空间等指标作为标准,自然语言处理结果的评价几乎是只能依靠人工的,并且还可能因人而异。在没有一个统一的评价标准指导下,自然语言处理中优化的指标也就是难以统一的。启发式方法虽然没有坚实的理论基础为支撑,但是对具体的指标可能有很好的效果。
还有一个原因是语言是因国而异的,大家指导标准不同,语法自然不能适用于所有语言。启发式方法可能发现一种特定语言的特异之处,而这种特异之处并不能形成统一的理论,甚至不能为其他语言所用。
目前NLP问题的处理方法大多以理论为骨架,加入启发式方法为枝叶,构成可根据具体情况配置的方法。可能还没有一种方法先由启发式方法提出,然后研究者找出了足以包括该方法的,简单的理论。但是我觉得这个构想很美好……
Posted by snowblink on 六月 26th, 2008
现在市面上比较流行的国外自然语言处理教材有三种:
《统计自然语言处理基础》,Chirstopher D.Manning(Stanford) 等著,苑春法等译,电子工业出版社,原书写于1999年
《自然语言处理》,James Allen(Rochester)著,刘群等译,电子工业出版社,原书写于1995年(第二版)
《自然语言处理综论》,Daniel(Stanford)等著,冯志伟等译,电子工业出版社,原书写于2000年,据作者主页上说马上要出第二版了。
关于这三本书,一个共同点就是出版时间比较早,另一个共同点是虽然是较久远的书,现在很多自然语言处理,计算语言学相关的课程还是将其用为教材。国内的课程就先不提了,Michael Collins,一个在各会议上发文章无数的MIT副教授讲的Advanced Natural Language Processing课还是用上列的第一和第三本书,第一本书更是传说中google研究员推荐的入门书。总结:姜还是老的辣……
但是,如果你仅仅看这三本书而不看任何论文,你肯定无法与一个正在搞NLP的人正常交流。(NLP:Natural Language Processing),当你看了这三本书,也看了论文,但缺乏机器学习,概率,语言学方面的知识,你恐怕能看懂的论文就有限。所以学习自然语言处理,或许不像想象中的那样有一个固定的框架,尽管据说自然语言处理的研究已经进入了平台期。它与太多东西有着联系,又或许可以说没有联系,像那句著名的”All grammar leak”一样,我们也可以说”All NLP leak”。
几乎所有的自然语言处理教程和课程都谈及了经验主义和理性主义之争。理性主义发展成为基于规则的自然语言处理,经验主义发展为基于统计的自然语言处理。虽然现在是基于统计的自然语言处理占主流,但是也有人坚持自己的信念做基于规则的NLP。
我有一个习惯是接受一样东西要先从最坏的角度考虑它,也就是找它的缺点。鉴于目前我做的是基于统计的自然语言处理,我就先写一点它的缺点。基于统计的自然语言处理的缺点也就是统计方法缺点的折射,第一,自然语言的现象太过丰富,范围太过广泛,连一个精通某种语言的所有说法的人都很难找到,(你懂古文白话文以及90后的火星文么……)更不用说训练出一台精通某种语言的机器了。所以统计样本很难找,而且规模太大,对计算提出了挑战。第二,要做统计就要计算概率,而概率是一个人为的概念,有很多事情不是一定按概率发生的,比如4个3的组合成为了中奖的彩票号码。另外,为了计算概率,常常要假设语言中字与字间的概率不互相影响。但是实际上,它们是互相影响的。概率的估算目前还很粗糙,有时候借用一点机器学习的方法,但是还是经常逃不开统计方法的宿命。好的对自然语言的概率估计是困难的。然而概率确实是一种很优秀的方法,尽管它有很多的缺点,它和信息论一样,都是对语言问题的简化,虽然简化会带来很多问题,但是不简化就根本没办法在根本问题上有一点点进展。
未完待续……
====================
ps. 本来是上个月发的这篇文章,后来服务器down了就丢失了,也懒得恢复了,重新再发一遍吧。
Recent Comments