对于对自然语言处理感兴趣的人来说,什么是好的起点?[关闭]

StackOverflow https://stackoverflow.com/questions/212219

  •  03-07-2019
  •  | 
  •  

问题

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

自然语言处理 是处理此类问题的领域,经过一些初步研究,我发现 OpenNLP 中心 和大学合作,例如 尝试项目. 。并且 stackoverflow 有 .

如果有人能给我链接一些好的资源,从研究论文、介绍性文本到 API,我会比一个 6 岁的孩子打开圣诞礼物更高兴!

更新

通过你的推荐之一我发现 开放式循环 (“世界上最大、最完整的通用知识库和常识推理引擎”)。更令人惊奇的是,有一个项目是 opencyc 的精炼版本,名为 伞形花序. 。它具有 rdf/owl/skos n3 语法中的语义数据。

我也偶然发现 蚂蚁金服, ,一个解析器生成器 “根据语法描述构建识别器、解释器、编译器和翻译器”.

我在这里提出了一个问题,其中列出了很多 免费和开放的数据.

感谢 stackoverflow 社区!

有帮助吗?

解决方案

艰难的是,NLP 的领域比大多数人想象的要广泛得多。基本上,语言可以分为几个类别,这将要求您学习完全不同的东西。

在开始之前,让我告诉您,如果您没有某个(密切相关的)领域的学位,我怀疑您是否会取得任何显着的成功(至少作为专业人士)。涉及到的理论很多,大部分都是干货,很难学。你需要很大的耐力,最重要的是:时间。

如果您对文本的含义感兴趣,那么这就是下一件大事。语义搜索引擎预计将引领 Web 3.0,但我们距离“实现”还很远。从文本中提取逻辑取决于几个步骤:

  • 标记化、分块
  • 词汇层面的歧义消除(时间过得像箭,但果蝇像香蕉。)
  • 句法分析
  • 形态分析(时态、体、格、数等)

一个小清单,从我的脑海中浮现出来。还有更多:-),每一点还有更多细节。例如,当我说“解析”时,这是什么?有 许多 不同的解析算法,以及同样多的解析形式。其中最强大的是 树邻接语法中心词驱动的短语结构语法. 。但它们都很少在现场使用(目前)。通常,您将处理一些不成熟的生成方法,并且必须自己进行形态分析。

从那里到语义是一大步。语法/语义接口既依赖于语法又依赖于语法 采用了语义框架,但还没有单一的工作解决方案。在语义方面,有经典的生成语义,然后有 话语表征理论, 动态语义, , 还有很多。即使一切所基于的逻辑形式主义仍然没有明确定义。有人说应该使用一阶逻辑,但这似乎还不够。然后是蒙塔古使用的内涵逻辑,但这似乎过于复杂,并且在计算上不可行。还有动态逻辑(Groenendijk 和 Stokhof 是这方面的先驱。很棒的东西!)最近,实际上是今年夏天, 杰罗恩·格罗南迪克 提出了新的形式主义, 好奇 语义学, ,也很有趣。

如果您想从非常简单的水平开始,请阅读 布莱克本与博斯 (2005), ,这是很棒的东西,而且是计算语义学的事实上的介绍!我最近扩展了他们的系统以涵盖问题的划分理论(问答是一个野兽!),正如 Groenendijk 和 Stokhof(1982)提出的那样,但不幸的是,该理论在个体领域的复杂度为 O(n²) 。在这样做的过程中,我发现 B&B 的实现在某些地方有点,呃……黑客。尽管如此,它确实会帮助你深入研究计算语义,而且它仍然是一个非常令人印象深刻的展示,展示了可以做什么。此外,他们在实现《低俗小说》(电影)中规定的语法方面值得额外的酷点。

当我这样做的时候,拿起 Prolog。计算语义学的很多研究都是基于Prolog。 立即学习 Prolog! 是一个很好的介绍。我还可以推荐《Prolog 的艺术》和 Covington 的《Prolog 深度编程》和《Prolog 程序员的自然语言处理》,前者可以在网上免费获得。

其他提示

乔姆斯基完全是寻找NLP的错误来源(并且他自己也说得很重要) - 请参阅:“统计方法和语言学”通过Abney。

上面提到的Jurafsky和Martin是标准参考,但我自己更喜欢 Manning和Schü tze 。如果你对NLP很认真,你可能想要阅读这两本书。有一个Manning课程的视频可供在线

如果您通过Prolog直到现在学习Prolog的DCG章节!上面的Dimitrov先生提到,你可以在系统中获得一些语义,因为Prolog为你提供了一种维护知识和信念数据库的简单方法,可以通过问答来更新。

关于文献,我有一个主要建议:跑出去买 Jurafsky的语音和语言处理马丁。它几乎是关于NLP的 书(第一章可在线获取);在非语言大学课程中使用,但对非语言学家和实践导向也非常可读,同时深入研究语言学问题。我真的不能推荐它。第17,18和21章似乎是你正在寻找的东西(第一版中的14,15和18);它们向您展示了简单的lambda符号,它可以很好地转换为Prolog DCG的功能。

哦,顺便说一下,获得语言学硕士学位;如果你是NL语义,我宁愿建议你学习所有与AI相关的课程(虽然任何关于“普通”语言语义,逻辑,逻辑语义的课程, DRT LFG / HPSG / CCG,NL解析,形式语言理论等不会受到伤害......)

阅读乔姆斯基的原创文献并不是很有用;据我所知,目前没有直接与他的理论相对应的实现,他的所有有用的东西几乎被其他理论所包含(任何留在语言学家任何时间的人都会通过渗透吸收乔姆斯基的知识。

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

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

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

NLP的早期探险家之一是Noam Chomsky;他在50年代到70年代期间写过关于这个主题的小书。你可能会发现这种吸引人的阅读。

Cycorp有一个简短说明,了解他们的Cyc知识库如何产生意义来自句子。

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

从构建块开始的一个更简单的地方是查看尝试执行此操作的程序包的文档。我推荐Python [自然语言工具包(NLTK) 1 ,特别是因为他们的精心编写的免费书籍,里面有很多例子。它不会让你一直到你想要的东西(这是一个AI难题),但它会给你一个良好的立足点。 NLTK具有解析器,块,无上下文语法等。

这是非常的难点。我首先获得至少一个语言学硕士学位,然后攻读计算机科学博士学位,专注于NLP。

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

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

非常令人愉快的可读性介绍是Steven Pinker的The Language Instinct。它进入乔姆斯基的东西,并从进化生物学角度讲述有趣的故事。如果你是这个主题的新手,那么在深入了解乔姆斯基的论文和相关工作之前,可能值得开始这样的事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top