对自然语言处理感兴趣的人有什么好的起点?

时间:2008-10-17 13:52:52

标签: nlp dcg

问题

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

Natural language processing是处理这类问题的领域,经过一些初步研究后,我发现了OpenNLP Hub和大学合作,如attempto project。 stackoverflow有this

如果有人能把我与一些好的资源联系起来,从研究论文和介绍性文本到apis,我会比一个6岁的小孩打开他的圣诞礼物更开心!

更新

通过我的一条建议,我发现opencyc'世界上最大,最完整的常识知识库和常识推理引擎')。更令人惊奇的是,有一个项目是opencyc的蒸馏版本,名为UMBEL。它以rdf / owl / skos n3语法中的语义数据为特色。

我还偶然发现antlr,一个解析器生成器,用于'从语法描述构建识别器,解释器,编译器和翻译器

我在这里有一个问题,列出了大量的free and open data

感谢stackoverflow社区!

10 个答案:

答案 0 :(得分:28)

艰难的呼吁,NLP是一个比大多数人认为的更广泛的领域。基本上,语言可以分为几类,这需要你学习完全不同的东西。

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

如果你对文本的含义感兴趣,那么,这就是下一件大事。语义搜索引擎被预测为启动Web 3.0,但我们还远离'那里'。从文本中提取逻辑取决于几个步骤:

  • Tokenization,Chunking
  • 在词汇层面消除歧义(时间过得像箭一样,但果实像香蕉一样苍蝇。)
  • 句法分析
  • 形态分析(时态,方面,案例,数量,等等)

一个小小的名单,在我的头顶。还有更多:-),以及每个点的更多细节。例如,当我说“解析”时,这是什么?有许多不同的解析算法,并且解析形式也同样多。最强大的是Tree-adjoining grammarHead-driven phrase structure grammar。但是他们两个都很难在现场使用(现在)。通常,你会处理一些半生不熟的生成方法,并且必须自己进行形态分析。

从那里走向语义是一大步。语法/语义接口依赖于所使用的语法语义框架,并且还没有单一的工作解决方案。在语义方面,有经典的生成语义,然后有Discourse Representation Theorydynamic semantics等等。即使是所有基于的逻辑形式主义仍然没有明确定义。有人说应该使用一阶逻辑,但这似乎不够;然后是蒙塔古所使用的内涵逻辑,但这似乎过于复杂,而且计算上不可行。还有动态逻辑(Groenendijk和Stokhof开创了这些东西。很棒的东西!)而且最近,今年夏天,Jeroen Groenendijk提出了一种新的形式主义, Inquisitive Semantics ,也很有趣。

如果你想在一个非常简单的层面上开始,请阅读Blackburn and Bos (2005),这是很棒的东西,以及对计算语义的事实上的介绍!我最近将他们的系统扩展到覆盖问题的分区理论(问题回答是野兽!),正如Groenendijk和Stokhof(1982)提出的那样,但不幸的是,该理论在个体领域具有O(n²)的复杂性。 。在这样做的同时,我发现B& B的实现在某些地方有点,呃...... hackish。尽管如此,它确实可以帮助您深入研究计算语义,并且它仍然是一个令人印象深刻的展示,可以做些什么。此外,他们还需要额外的冷点来实现在低俗小说(电影)中定义的语法。

虽然我正在接受它,但请选择Prolog。计算语义学的许多研究都是基于Prolog的。 Learn Prolog Now!是一个很好的介绍。我还可以推荐“Prolog的艺术”和Covington的“Prolog Programming in Depth”和“Prolog Programmers的自然语言处理”,前者可以在线免费获得。

答案 1 :(得分:10)

乔姆斯基完全是寻找NLP的错误来源(并且他自己也说得很重要) - 请参阅:“Statistical Methods and Linguistics”来自Abney。

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

答案 2 :(得分:4)

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

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

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

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

答案 3 :(得分:3)

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

答案 4 :(得分:2)

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

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

答案 5 :(得分:2)

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

答案 6 :(得分:2)

Cycorp有一个short description他们的Cyc知识库如何从句子中获得意义。

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

答案 7 :(得分:1)

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

答案 8 :(得分:1)

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

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

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

答案 9 :(得分:0)

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