艰难的呼吁,NLP 是一个比大多数人想象的更广泛的领域。基本上,语言可以分为几类,这需要你学习完全不同的东西。
在我开始之前,让我告诉你,如果没有某个(密切相关的)领域的学位,我怀疑你会取得任何显着的成功(至少作为专业人士)。涉及的理论很多,大部分都是枯燥的东西,很难学。你需要很多耐力,最重要的是:时间。
如果您对文本的含义感兴趣,那就是 Next Big Thing。语义搜索引擎预计将启动 Web 3.0,但我们离“那里”还很远。从文本中提取逻辑取决于几个步骤:
- 标记化,分块
- 词汇层面的消歧(时光如箭,果蝇如香蕉。)
- 句法分析
- 形态分析(时态、体态、格、数等)
一个小清单,在我脑海中浮现。还有更多:-),以及每一点的更多细节。例如,当我说“解析”时,这是什么?有许多不同的解析算法,也有同样多的解析形式。其中最强大的是树邻接语法和头部驱动的短语结构语法。但是它们都很少在该领域中使用(目前)。通常,您将处理一些半生不熟的生成方法,并且必须自己进行形态分析。
从那里到语义是一大步。语法/语义接口依赖于所使用的句法和语义框架,目前还没有单一的工作解决方案。在语义方面,有经典的生成语义,然后是话语表示理论、动态语义等等。甚至一切都基于的逻辑形式主义仍然没有明确定义。有人说应该使用一阶逻辑,但这似乎还不够;然后是蒙太古使用的内涵逻辑,但这似乎过于复杂,并且在计算上不可行。还有动态逻辑(Groenendijk 和 Stokhof 开创了这个东西。很棒的东西!)最近,实际上是今年夏天,Jeroen Groenendijk提出了一种新的形式主义,Inquisitive Semantics,也很有趣。
如果您想从一个非常简单的层面开始,请阅读Blackburn 和 Bos (2005),这是很棒的东西,以及事实上的计算语义介绍!正如 Groenendijk 和 Stokhof (1982) 所提出的,我最近扩展了他们的系统以涵盖问题的划分理论(问题回答是一头野兽!),但不幸的是,该理论在个人领域具有 O(n²) 的复杂性. 这样做的时候,我发现 B&B 的实现有点,呃…… hackish,在某些地方。尽管如此,它确实会真正帮助您深入了解计算语义,而且它仍然是一个非常令人印象深刻的展示可以做什么。此外,他们应该获得额外的酷点来实现在低俗小说(电影)中解决的语法。
当我在做的时候,拿起Prolog。许多计算语义的研究都是基于 Prolog 的。立即学习 Prolog!是一个很好的介绍。我还可以推荐《The Art of Prolog》和 Covington 的《Prolog Programming in Depth》和《Prolog Programmers 的自然语言处理》,前者可在线免费获得。