编程对于自然语言处理、语料库研究等领域而言是一门重要的技术。
说这句话大概是“安全”的,不过我不敢断言说“必要”的技术,因为可以获取的工具很多,灵活驾驭这些工具一样可以解决很多问题。不过每一种成型的工具都有其局限性,某些情况下难以满足一些特殊的要求。比如lemmatization词条归类,免费的工具很少有在用户界面上提供这种功能的。如果需要更复杂的归类,比如用同义词典或wordnet等语义网络词典来对词条归类分析就更麻烦了。这个时候,编程就能派上用场了,可以自己开发工具,也可以从网上找到一些很有用的工具包,把其中的模块整合到自己的程序中。而且对应于现在大多数流行程序设计语言的NLP工具几乎都能找到,典型的有perl和后起之秀python。Java工具也有很多,而且有可能还有大的发展,因为热衷于Java的人太多了。
刚才提到“自己开发工具”,这个事情的确不容易,会编程离能开发软件还有相当的距离。然而所谓程序并非一定要达到软件的标准。很多编程的结果是寻找某种solution。举个例子,昨天我从一个电影资料库下载了几百个脚本,都是网页形式的,我编了个程序把其中有用的文本部分自动提取出来,做成了一个很毛糙的电影脚本语料库。这个solution仅仅是一段代码,必须在IDE(集成开发环境,程序的编辑器)里执行,但最终目的达到了。程序设计语言是一种随时可以解决问题的工具,就像工具包里的螺丝刀,这也是为什么人们对编程语言的RAD(快速应用开发)性能如此感兴趣的一个原因。此外,学编程还有个好处,对程序设计的认识可以极大的帮助我们理解现成软件工具的工作原理,开发解决方案的经验更能够强化我们使用各种工具的能力。
新兴的高级程序设计语言都声称自己是优秀的RAD工具,不过我认为每个人对琳琅满目的程序设计语言很可能有自己的感觉。很多人说perl的源代码很难读,我没这感觉。Python的口碑相当好,不过对我来说python是块最难肯的硬骨头,不知怎么搞的,Python写的代码我常常读不懂,更别说写代码了。顺便说一句,如果是从C语言开始打基础的,大概没我这么费劲,我是从Pascal开始的,后来自学了Visual Basic和perl。只懂“高级”语言(程序设计语言的高级和低级有特殊的意思,高级语言容易学,直接对硬件编程的汇编语言就是最“低级”的,很难掌握。),所以程序设计的能力一直停留在“低级”阶段,有过做软件的想法,现在看来能力还不够。不过我毕竟不是职业程序员,也不是靠做软件生活,所以用RAD来做一些solution对我而言足够了。
从使用RAD编程来开发解决方案的角度,我固执地推荐Visual Basic。虽然在语料库或NLP程序设计这个方面Visual Basic一直是个冷门。我想原因不外乎有这样几种:商业软件,不免费。速度不够快。长期被业内人士定位为数据库界面开发工具。功能的确有限。难以跨平台,加上不是免费的,对软件的传播也有限制。不过理性地看,对编程语言的评价常常是以软件设计为视角的,而且Visual Basic一直在发展,现如今其功能几乎可以和其他.NET框架中的语言不相上下。而且也许是出于宣传目的,微软已经推出了免费版本,拿来在很多领域中当RAD工具还是相当够用的。
当然了,我推荐Visual Basic的主要目的还是在于它很好学,虽然VB.NET和原始版本的VB比起来的确麻烦了一点。不过Basic语言不愧其名。为什么这样说呢?现在的程序设计流行OOP(面向对象),VB也不例外,但Basic家族的语言始终在传统的“面向过程”程序设计模式保持着高度的直观和易学易用性。OOP是一种很好的程序设计模式,但入门的难度比较大,我认为OOP对程序设计的系统化思维要求教高,到不是说OOP的概念本身多难懂。所以高度强调OOP的程序设计设计语言很可能使用起来还是没那么随意。虽然perl和python之类的在这方面也不差,但看起来Basic还是简易一些。Perl的灵活的确搞的代码看起来很“玄”;Python,偏激地说,我很不喜欢,用缩进的方式定义语句块终究是很别扭的,我看不如Perl和Java里的大括号或者Basic和Pascal里的Begin...End之类的结构。而且Python所谓集结了很多语言的优势,同时也集结了很多语言的难度,处处弥漫着C语言的低级复杂和OOP的抽象。
Visual Basic好学,但的确在我们的研究领域里还没那么好用,目前主要是因为参考资料少,过去是因为功能不够强大。功能这方面,现在可以说没问题了。VB和C#等语言一样都是.NET的成员。用.NET来开发的NLP等软件或工具包越来越多,主要是C#,但绝大多数功能用VB.NET完全可以调用。免费的VB.NET IDE用起来很舒服的,尤其是自动代码提示,一直是微软编程工具的强项。
不过话又说回来,如果从VB.NET开始学Visual Basic,肯定也会面对不少难度,那主要是因为.NET不太好学,VB语言本身还是很容易上手的。从零开始的初学者也可以从Visual Basic的老版本开始,比如VB6.不过,如果学编程有比较深入的目的,比如将来想开发成型的软件的话,Basic 语言绝对不是个好的起点。如果不满足于只使用别人的软件,想找个顺手的程序设计工具,Visual Basic 是个相当好的选择。[未完。。。]
说这句话大概是“安全”的,不过我不敢断言说“必要”的技术,因为可以获取的工具很多,灵活驾驭这些工具一样可以解决很多问题。不过每一种成型的工具都有其局限性,某些情况下难以满足一些特殊的要求。比如lemmatization词条归类,免费的工具很少有在用户界面上提供这种功能的。如果需要更复杂的归类,比如用同义词典或wordnet等语义网络词典来对词条归类分析就更麻烦了。这个时候,编程就能派上用场了,可以自己开发工具,也可以从网上找到一些很有用的工具包,把其中的模块整合到自己的程序中。而且对应于现在大多数流行程序设计语言的NLP工具几乎都能找到,典型的有perl和后起之秀python。Java工具也有很多,而且有可能还有大的发展,因为热衷于Java的人太多了。
刚才提到“自己开发工具”,这个事情的确不容易,会编程离能开发软件还有相当的距离。然而所谓程序并非一定要达到软件的标准。很多编程的结果是寻找某种solution。举个例子,昨天我从一个电影资料库下载了几百个脚本,都是网页形式的,我编了个程序把其中有用的文本部分自动提取出来,做成了一个很毛糙的电影脚本语料库。这个solution仅仅是一段代码,必须在IDE(集成开发环境,程序的编辑器)里执行,但最终目的达到了。程序设计语言是一种随时可以解决问题的工具,就像工具包里的螺丝刀,这也是为什么人们对编程语言的RAD(快速应用开发)性能如此感兴趣的一个原因。此外,学编程还有个好处,对程序设计的认识可以极大的帮助我们理解现成软件工具的工作原理,开发解决方案的经验更能够强化我们使用各种工具的能力。
新兴的高级程序设计语言都声称自己是优秀的RAD工具,不过我认为每个人对琳琅满目的程序设计语言很可能有自己的感觉。很多人说perl的源代码很难读,我没这感觉。Python的口碑相当好,不过对我来说python是块最难肯的硬骨头,不知怎么搞的,Python写的代码我常常读不懂,更别说写代码了。顺便说一句,如果是从C语言开始打基础的,大概没我这么费劲,我是从Pascal开始的,后来自学了Visual Basic和perl。只懂“高级”语言(程序设计语言的高级和低级有特殊的意思,高级语言容易学,直接对硬件编程的汇编语言就是最“低级”的,很难掌握。),所以程序设计的能力一直停留在“低级”阶段,有过做软件的想法,现在看来能力还不够。不过我毕竟不是职业程序员,也不是靠做软件生活,所以用RAD来做一些solution对我而言足够了。
从使用RAD编程来开发解决方案的角度,我固执地推荐Visual Basic。虽然在语料库或NLP程序设计这个方面Visual Basic一直是个冷门。我想原因不外乎有这样几种:商业软件,不免费。速度不够快。长期被业内人士定位为数据库界面开发工具。功能的确有限。难以跨平台,加上不是免费的,对软件的传播也有限制。不过理性地看,对编程语言的评价常常是以软件设计为视角的,而且Visual Basic一直在发展,现如今其功能几乎可以和其他.NET框架中的语言不相上下。而且也许是出于宣传目的,微软已经推出了免费版本,拿来在很多领域中当RAD工具还是相当够用的。
当然了,我推荐Visual Basic的主要目的还是在于它很好学,虽然VB.NET和原始版本的VB比起来的确麻烦了一点。不过Basic语言不愧其名。为什么这样说呢?现在的程序设计流行OOP(面向对象),VB也不例外,但Basic家族的语言始终在传统的“面向过程”程序设计模式保持着高度的直观和易学易用性。OOP是一种很好的程序设计模式,但入门的难度比较大,我认为OOP对程序设计的系统化思维要求教高,到不是说OOP的概念本身多难懂。所以高度强调OOP的程序设计设计语言很可能使用起来还是没那么随意。虽然perl和python之类的在这方面也不差,但看起来Basic还是简易一些。Perl的灵活的确搞的代码看起来很“玄”;Python,偏激地说,我很不喜欢,用缩进的方式定义语句块终究是很别扭的,我看不如Perl和Java里的大括号或者Basic和Pascal里的Begin...End之类的结构。而且Python所谓集结了很多语言的优势,同时也集结了很多语言的难度,处处弥漫着C语言的低级复杂和OOP的抽象。
Visual Basic好学,但的确在我们的研究领域里还没那么好用,目前主要是因为参考资料少,过去是因为功能不够强大。功能这方面,现在可以说没问题了。VB和C#等语言一样都是.NET的成员。用.NET来开发的NLP等软件或工具包越来越多,主要是C#,但绝大多数功能用VB.NET完全可以调用。免费的VB.NET IDE用起来很舒服的,尤其是自动代码提示,一直是微软编程工具的强项。
不过话又说回来,如果从VB.NET开始学Visual Basic,肯定也会面对不少难度,那主要是因为.NET不太好学,VB语言本身还是很容易上手的。从零开始的初学者也可以从Visual Basic的老版本开始,比如VB6.不过,如果学编程有比较深入的目的,比如将来想开发成型的软件的话,Basic 语言绝对不是个好的起点。如果不满足于只使用别人的软件,想找个顺手的程序设计工具,Visual Basic 是个相当好的选择。[未完。。。]