机器学习和自然语言处理

假设你知道一个想学习机器学习和自然语言处理的学生。

你会推荐哪些入门科目?

例如 :我猜测,知道Prolog和Matlab可能会帮助他。 他也可能想学习离散结构*,微积分和统计。

*图和树木。 函数:属性,recursion定义,解决重复。 关系:属性,等价,部分秩序。 certificate技巧,归纳certificate。 计数技术和离散概率。 逻辑:命题演算,一阶谓词演算。 正式推理:自然演绎,parsing。 应用程序正确性和自动推理。 计算中的代数结构介绍。

这个相关的stackoverflow问题有一些很好的答案: 有兴趣进行自然语言处理的人有什么好的起点?

这是一个非常大的领域。 先决条件主要包括概率/统计学,线性代数和基础计算机科学,尽pipe自然语言处理需要更深入的计算机科学背景(经常包括一些基本的AI)。 关于具体的语言:Lisp被创build为“AI事后研究” ,而Prolog(根源于forms逻辑)特别针对自然语言处理,许多课程将使用Prolog,Scheme,Matlab,R或其他function语言(例如OCaml在Cornell的这门课程中使用 ),因为它们非常适合这种分析。

以下是一些更具体的指针:

对于机器学习, 斯坦福大学的CS 229:机器学习非常棒:它包括了所有的内容,包括讲座的全部video(也可以在iTunes上),课程笔记,问题集等等,而Andrew Ng的教导非常好。

请注意先决条件:

学生应具备以下背景知识:掌握基本的计算机科学原理和技能,足以编写合理的非平凡计算机程序。 熟悉基本的概率论。 熟悉基本的线性代数。

课程使用Matlab和/或八度。 它还build议以下阅读材料(虽然课程笔记本身非常完整):

  • Christopher Bishop, 模式识别和机器学习 。 施普林格,2006年。
  • Richard Duda,Peter Hart和David Stork, Pattern Classification ,2nd ed。 John Wiley&Sons,2001。
  • Tom Mitchell, 机器学习 。 McGraw-Hill,1997。
  • Richard Sutton和Andrew Barto, 强化学习:介绍 。 MIT出版社,1998年

对于自然语言处理, 斯坦福大学的NLP团队提供了许多优质的资源。 “ 斯坦福大学CS 224:自然语言处理 ”入门课程包括所有在线讲座,并具有以下先决条件:

在编程和正式结构方面有足够的经验。 编程项目将使用Java 1.5编写,因此需要了解Java(或自行学习)的知识。 对人工智能和/或计算语言学中标准概念的了解。 基本熟悉逻辑,向量空间和概率。

一些推荐的文本是:

  • Daniel Jurafsky和James H. Martin。 2008. 语音和语言处理:自然语言处理 ,计算语言学和语音识别。 第二版。 学徒霍尔。
  • Christopher D. Manning和HinrichSchütze。 统计自然语言处理基础 。 MIT出版社。
  • 詹姆斯·艾伦 自然语言理解 。 本杰明/卡明斯,2ed。
  • 杰拉尔德Gazdar和克里斯Mellish。 1989年。Prolog中的自然语言处理 。 Addison-Wesley出版社。 (这是免费在线)
  • 弗雷德里克·耶利内克。 语音识别的统计方法 。 MIT出版社。

前提计算语言学课程需要基本的计算机编程和数据结构知识,并使用相同的教科书。 所需的人工智能课程也可以在网上与所有课堂笔记和用途一起提供:

  • S.Russell和P.Norvig,“ 人工智能:现代方法” 。 第二版

这是标准的人工智能文本,也值得一读。

我使用R进行机器学习,并真正推荐它。 为此,我build议您查看统计学习的要素,全文可在线免费获取。 您可能想要参考CRAN上的机器学习和自然语言处理视图以了解特定的function。

我的build议将是这些的一个或所有(取决于他的数量和感兴趣的领域):

牛津计算语言学手册 :

牛津计算语言学手册http://ukcatalogue.oup.comhttp://img.dovov.comen_US/covers/medium/9780199276349_140.jpg

统计自然语言处理的基础 :

统计自然语言处理的基础fsnlp/fsnlp.gif

信息检索介绍 :

信息检索介绍IR-book/iir.jpg

stringalgorithm,包括后缀树。 微积分和线性代数。 各种统计变化。 人工智能优化algorithm。 数据聚类技术…还有其他一百万种。 这是一个非常活跃的领域,取决于你打算做什么。

Pythonselect哪种语言并不重要,例如Python有NLTK,这是​​一个非常好的免费软件包,用于修补计算语言学。

我会说可能性和统计是最重要的先决条件。 特别是高斯混合模型 (GMMs)和隐马尔可夫模型 ( HMMs )在机器学习和自然语言处理中都是非常重要的(当然,如果是介绍性的话,这些主题可能是课程的一部分)。

那么,我会说CS的基本知识也是有帮助的,例如algorithmforms语言和基本的复杂性理论。

斯坦福大学CS 224:提到的自然语言处理课程已经包括在线video (除了其他课程教材)。 video没有链接到课程网站上,所以很多人可能不会注意到它们。

Jurafsky和Martin的语音和语言处理http://www.amazon.com/Speech-Language-Processing-Daniel-Jurafsky/dp/0131873210/是非常好的。; 不幸的是,草稿第二版的章节已不再免费在线,现已发布:(

另外,如果你是一个体面的程序员,玩NLP程序永远不会太早。 想起NLTK(Python)。 它有一本书,你可以在网上免费阅读,已经发表(我认为是OReilly)。

Markdown和parsingexpression式语法(PEG)的介绍是如何通过cletus在他的网站的cforcoding上发布的?

ANTLR似乎是开始进行自然语言处理的好地方。 我不是专家。

广泛的问题,但我当然认为有限状态自动机和隐马尔可夫模型的知识将是有用的。 这需要知识的统计学习,贝叶斯参数估计和熵。

潜在语义索引是许多机器学习问题中最常用的工具。 有些方法比较容易理解。 有一些潜在的基础项目。

  1. 为文档/段落/句子聚类find文本语料库中的同现事件
  2. 分类文本语料库的心情
  3. 自动注释或汇总文档。
  4. find单独的文档之间的关系 ,以自动生成文档之间的“graphics”。

编辑: 非负matrix分解 (NMF)是一个工具,由于其简单性和有效性已经大大stream行。 这很容易理解。 我目前正在研究使用NMF进行音乐信息检索; NMF也被certificate对于文本语料库的潜在语义索引是有用的。 这是一张纸。 PDF

Prolog只会在学术上帮助他们,它也限制了逻辑约束和基于语义NLP的工作。 Prolog还不是一个行业友好的语言,所以在现实世界中还不实用。 而且,matlab也是一个基于学术的工具,除非他们正在进行大量的科学研究或基于数量的工作,他们实际上并不需要太多的工作。 开始他们可能想拿起“诺维格”书,进入人工智能的世界,在所有的领域打下基础。 理解一些基本的概率,统计学,数据库,操作系统,数据结构,最可能的是理解和使用编程语言的经验。 他们需要能够certificate为什么人工智能技术的工作和他们不这样做。 然后看看机器学习和NLP等更多细节。 事实上,诺维书本在每一章之后都提供了参考资料,所以他们已经有了很多更深入的阅读资料。 有很多参考资料可以通过互联网,书籍和期刊论文获得指导。 不要只读本书,尝试用编程语言来构build工具,然后推断出“有意义”的结果。 学习algorithm实际上是否按照预期学习,如果不是这样的话,怎么可能修复。