42

问题

因此,我最近提出了一些新的可能项目,这些项目必须处理从用户提交和生成的文本中获取“意义”。

自然语言处理是处理这类问题的领域,经过一些初步研究,我发现了OpenNLP Hub和大学的合作,比如尝试项目。而stackoverflow有这个

如果有人可以将我链接到一些好的资源,从研究论文和介绍性文本到 api,我会比一个 6 岁的孩子打开他的圣诞礼物更快乐!

更新

通过您的一项建议,我发现了 opencyc“世界上最大、最完整的通用知识库和常识推理引擎”)。更令人惊奇的是,有一个项目是 opencyc 的精炼版本,名为UMBEL。它具有 rdf/owl/skos n3 语法中的语义数据。

我还偶然发现了antlr,这是一个解析器生成器,用于“从语法描述中构建识别器、解释器、编译器和翻译器”

我在这里提出了一个问题,列出了大量免费和开放的数据

感谢stackoverflow社区!

4

10 回答 10

29

艰难的呼吁,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 的自然语言处理》,前者可在线免费获得。

于 2008-10-18T14:00:44.443 回答
10

Chomsky 完全是寻找 NLP 的错误来源(他自己也会这么强调)——参见 Abney 的“ Statistical Methods and Linguistics ”。

上面提到的 Jurafsky 和 ​​Martin 是标准参考,但我自己更喜欢Manning 和 Schütze。如果您对 NLP 很认真,您可能会想同时阅读这两本书。网上有 Manning 的一门课程的视频。

于 2009-03-16T04:05:56.080 回答
4

如果您通过 Prolog 直到现在 Learn Prolog 中的 DCG 章节!上面 Dimitrov 先生提到,您将有一个良好的开端,将一些语义融入您的系统,因为 Prolog 为您提供了一种非常简单的方法来维护知识和信念数据库,可以通过问答进行更新。

关于文献,我给你一个主要的建议:用完并购买Jurafsky & Martin 的Speech and Language Processing。这几乎是一本关于 NLP书(第一章可在线获取);在一所大学的课程中使用,但对于非语言学家和实践导向的人来说也非常易读,同时对语言学问题进行了相当深入的研究。我真的不能推荐它。第 17、18 和 21 章似乎是您正在寻找的内容(第一版中的第 14、15 和 18 章);他们向您展示了简单的 lambda 符号,它可以很好地转换为具有功能的 Prolog DCG。

哦,顺便说一句,关于获得语言学硕士学位;如果你喜欢 NL 语义,我宁愿推荐你能找到所有与 AI 相关的课程(尽管任何关于“普通”语言语义、逻辑、逻辑语义、DRTLFG /HPSG/CCG、NL的课程解析,形式语言理论等不会受到伤害......)

阅读乔姆斯基的原著并没有什么用处;据我所知,目前还没有与他的理论直接对应的实现,他的所有有用的东西几乎都被其他理论所包含(并且任何在任何时间都与语言学家保持密切联系的人都会通过渗透吸收乔姆斯基的知识) .

于 2009-02-23T09:38:48.563 回答
3

我强烈建议您使用NLTK并阅读NLTK Book。NLTK 非常强大且易于上手。

于 2009-03-14T02:23:01.750 回答
2

您可以尝试阅读一些有关短语结构化语法的内容,这基本上是许多语言处理背后的数学。它实际上并没有那么重,主要基于集合和图论。我在很多个月前作为离散数学课程的一部分研究了它,我想在这个阶段有很多很好的参考资料。

编辑:没有我在谷歌上的预期,虽然这个看起来是一个很好的学习资源。

于 2008-10-17T14:00:28.860 回答
2

NLP 的早期探索者之一是 Noam Chomsky。他在 50 年代到 70 年代写了关于这个主题的小书。您可能会发现阅读引人入胜。

于 2008-10-17T14:01:11.417 回答
2

Cycorp简要描述了他们的 Cyc 知识库如何从句子中获取含义。

通过利用大量的常见事实知识库,系统可以确定句子的最合乎逻辑的解析。

于 2008-10-17T14:20:19.880 回答
1

从构建块开始的一个更简单的地方是查看尝试执行此操作的包的文档。我推荐 Python [Natural Language Toolkit (NLTK) 1,特别是因为他们写得很好,免费的书,里面充满了例子。它不会让你一直得到你想要的(这是一个人工智能难题),但它会给你一个很好的立足点。NLTK 具有解析器、分块器、上下文无关语法等。

于 2008-10-20T14:33:54.657 回答
1

真是件难事。我会从至少获得语言学硕士学位开始,然后攻读计算机科学博士学位,专注于 NLP。

问题是我们大多数人不了解什么是语言。如果没有这种理解,实施解决方案将非常困难。

其他评论给出了一些读数,如果您想开始解决问题的一小部分,这可能很好,但是为了提出一个真正强大的解决方案,没有捷径可走。你需要这两个学科的学术背景。

于 2008-10-20T14:50:11.067 回答
0

Steven Pinker 的 The Language Instinct 是一个非常有趣的可读介绍。它涉及乔姆斯基的东西,还从进化生物学的角度讲述了有趣的故事。如果您是该主题的新手,那么在深入研究乔姆斯基的论文和相关工作之前,可能值得从类似的东西开始。

于 2008-10-20T14:44:47.803 回答