sunrise

每天不断学习,才能不断提升自己。

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  64 随笔 :: 0 文章 :: 92 评论 :: 0 Trackbacks

  最近的工作都是小任务,很简单的小任务,水水的就写好了。因为觉得自己在自然语言处理方面了解甚少,剩下的时间就在看《人工智能》,最近再看第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进行相似度计算的时候,词与词之间的距离对于路径相同的,层次高的要比层次低的层次低的距离远,稀疏的要比稠密的距离远。所以用worknethownet考虑更多的问题。对于句子与句子之间的相似度计算很容易实现,但是时间复杂度太高,上次做优化的时候,在89万次计算中,只有1000+的有效计算,所以选择把词与词之间的距离先算好,直接读取,要快很多。

最后后面的词性标注和分词一直都是直接用公司的代码去调用的,自己还在学习中,期待在不久的将来能够掌握这些。

一天比一天多一点的进步就好,快乐码农中。

posted on 2012-05-22 14:55 SunRise_at 阅读(1457) 评论(1)  编辑 收藏 引用 所属分类: 人工智能

评论

# re: 自然语言理解总结 2012-05-22 14:58 C小加
有进步  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理