学习自然语言处理之初对其的了解
去年的时候有接触过人工智能方向的一个分支--信息检索。但也只是知道一点小皮毛而已,不如称其为入门好了。
今年7月份开始学习,因为刚好是暑假,所以接下来的两个月时间基本上都是在原地兜兜转转,也不知给绕晕了多少回。9月份开学了,比较系统地接触到了自然语言的学习方法,开始抓住了重点,明确了方向。虽然在自然语言组会上听到的那些文献分析以及论文讨论我都听不明白。但是至少也知道统计方法学中的n-gram,HMM,机器学习,模式识别,数学中的概率论(贝叶斯曲线),线性代数(矩阵)非常重要。至于编程语言,我选择Java,脚本语言Perl和python。C和C++虽然我不是很喜欢,但是里面的难点部分算法和数据结构思想,无论在哪里都是需要用到的。(Java摒弃了C++中的许多缺点,比如全局变量,goto语句,指针,内存管理都不要用到,对数据类型的支持也宽泛了许多。我汗!都幸亏不要用到指针,不然我就死了。。。)额,忘记了一门最主要的语言汇编。汇编是低级语言,别被“低级”这两个字误导啦!如果汇编学得很好的话,拿下C,C++,Java这些编程语言都不在话下。而且完全有能力开发出一门新的编程语言。操作系统的话,Windows和Linux当然都是需要的,国外的话基本都是在Linux系统下开发。
说了这么多,无非就是想说要想学NLP(Natural Language Processing),第一,学好数学中的概率论,统计学和线性代数。第二,至少会一门编程语言,第三,懂得用电脑。o(∩∩)o...
自然语言是指在我们平时的生活中,人与人之间用来沟通和交流的语言。(注意:手语也是自然语言。)
现在人工智能大体上分为三大块:信息检索(谷歌,雅虎,百度等搜索引擎),智能机器人,机器翻译。这些都需要用到自然语言处理技术。
NLP中的几个环节(任务):
(1)将语言录入处理程序:将普通的文本写入处理程序--》使用变量将文本保存。对于文本的处理,推荐使用Perl语言。(写入文本)
(2)写入文本后,首先要对文本进行分词处理。对于中文,基本方法是前后项最大匹配方法(基于规则的方法)。或者采用马尔可夫模型(HMM)的统计方法。分词是最基本的环节,几乎所有自然语言处理都要用到分词。(分词)
(3)分词之后可以做词性标注。词性标注是为了能够区分每一给词的不同词性。(词性标注)
(4)词性标注之后可以做句法剖析。句法剖析是为了确定对于一种特定词性的词的语法归属,也就是说明一个词是主语,宾语还是谓语等等。(句法剖析)
(5)句法剖析之后可以给出单词的不同语义信息,也就是对这个词的确切解释。(语义分析)
(6)接下来就可以做机器翻译了。
如果只是做文本分类的话,只需做(1),(2)步就行。初级的信息检索做到(1),(2),(3)步。
这几步需要用到哪些技术呢?