最近的工作都是小任务,很简单的小任务,水水的就写好了。因为觉得自己在自然语言处理方面了解甚少,剩下的时间就在看《人工智能》,最近再看第8章自然语言理解。很认真的看过了解过,现在做一下总结。
自然语言理解现在大体分为5个层次:语音分析,词法分析,语义分析和语用分析。
一.语音分析跳过,直接进入词法分析。所谓词法分析就是从句子中切分出单词,找出词汇的各个词素,从中获得单词的语言学信息并确定单词的词义。
1.for English
repeat
look for word in dictionary
If not found
Then modify the word
Until word found or no further modification possible
所以在自然语言理解的词典中一般只放词根,支持词素分析可以大大的压缩电子词典的规模。英语词法分析的难度在于词义判断,以为单词有很多解释,要判定词义只能依靠句子中其他相关单词和词组的分析。
2.对于汉语
汉语中的每一字都是一个词素,但是要切分出各个词就非常困难,最主要的就是切分歧义。一句话可以有多种拆分方式,要是遇到那种“下雨天留客天留我不留”,基本就死翘翘了。
二.句法分析
这个和汇编原理里的那个好像是一样的,至于到底是不是一个,我也忘却了。主要分为两类:基于规则的方法和基于统计的方法。
1.短语结构语法
2.乔姆斯基形式语法
3.语法分析树
4.转移网络
5.扩充转移网络
具体细节自己查去,我主要写一下扩充转移网络(Augmented Transition Network,ANT),该语法属于一种增强型的上下文无关语法。
ANT主要对转移网络中的弧附加了过程得到的,过程的主要功能:对文法特征进行赋值。前后把书翻看几遍也没有发现对文法特征进行赋值是什么,暂理解成把一个单词赋给ART,当随着弧走到这时,检查词性部分是否等于ART。如果是则把ART赋值给NP,S\DET,否则,失败引起回溯。第二个就是检查数或人称条件是否满足,并据此允许或不允许转移,整个ANT语法就构成了一个句法树。
三.语义分析(百度去吧,谷歌去吧)
大规模真实文本的处理
最近做的处理工作好像就是这些,在各种语料中提取各种库,里面的很多发现自己也断断续续的在接触。
这里的两个语料库一个是基于wordnet,另一种是hownet.hownet以前介绍过,直接wordnet.
其实wordnet就是把所有的词构建成一棵树,整个名词组成一个继承关系。
补充一下:在利用worknet进行相似度计算的时候,词与词之间的距离对于路径相同的,层次高的要比层次低的层次低的距离远,稀疏的要比稠密的距离远。所以用worknet要hownet考虑更多的问题。对于句子与句子之间的相似度计算很容易实现,但是时间复杂度太高,上次做优化的时候,在89万次计算中,只有1000+的有效计算,所以选择把词与词之间的距离先算好,直接读取,要快很多。
最后后面的词性标注和分词一直都是直接用公司的代码去调用的,自己还在学习中,期待在不久的将来能够掌握这些。
一天比一天多一点的进步就好,快乐码农中。