机器学习和自然语言处理

44

假设您认识一个想学习机器学习和自然语言处理的学生。

他们应该专注于哪些具体的计算机科学学科,以及哪些编程语言是专门用于解决这些类型的问题的?

我不是在寻找您最喜欢的学科和工具,而是行业标准。

例子: 我猜知道 Prolog 和 Matlab 会有所帮助。他们还可能想学习离散结构、微积分和统计学。

*图和树。函数:属性、递归定义、求解递推公式。关系:属性、等价关系、偏序。证明技巧,归纳证明。计数技术和离散概率。逻辑学:命题演算、一阶谓词演算。形式推理:自然演绎法、消解。应用于程序正确性和自动推理。介绍计算中的代数结构。


一个相关(切题)的问题在https://datascience.stackexchange.com/questions/36463/mastering-nlp-reading-list/36472。 - Davide Fiocco
9个回答

55
这个相关的stackoverflow问题有一些不错的答案: 对于想学习自然语言处理的人来说,有哪些好的起点? 这是一个非常广阔的领域。先决条件主要涉及概率/统计、线性代数和基本计算机科学,尽管自然语言处理需要更加深入的计算机科学背景以便开始(通常会涵盖一些基本的人工智能内容)。关于具体的编程语言:Lisp是“事后”为进行AI研究而创建的,而Prolog(其根源在于形式逻辑)则特别针对自然语言处理,并且许多课程会使用Prolog、Scheme、Matlab、R或其他函数式语言(例如康奈尔大学的此门课程使用OCaml),因为它们非常适合进行此类分析。
以下是一些更具体的指导点:
对于机器学习来说,斯坦福CS 229:机器学习非常好:它包括了所有内容,包括完整的课程视频(也可在iTunes上观看),课程笔记,问题集等,并且由Andrew Ng教授非常出色地讲授。
请注意先决条件:

学生需要具备以下背景知识:基本计算机科学原理和技能,足以编写相当复杂的计算机程序。熟悉基本的概率论。熟悉基本的线性代数。

该课程使用Matlab和/或Octave。它还推荐以下读物(尽管课程笔记本身已经非常完整): 对于自然语言处理,斯坦福大学的NLP团队提供了许多优秀的资源。入门课程斯坦福CS 224:自然语言处理包括所有在线讲座,并具备以下先决条件:

足够的编程和形式结构经验。编程项目将用Java 1.5编写,因此需要了解Java(或愿意自学)。熟悉人工智能和/或计算语言学中的标准概念。基本熟悉逻辑、向量空间和概率。

一些推荐的文本如下:

前提条件 计算语言学课程 需要基本的计算机编程和数据结构知识,并使用相同的教材。所需的人工智能课程 也可在线获得,同时附有所有讲座笔记,并使用:

这是标准的人工智能教材,值得一读。

我建议您使用R进行机器学习。为此,我建议您查看统计学习的要素,其完整文本可免费在线获取。您可能需要参考CRAN上的机器学习自然语言处理视图以获取特定功能。

8

5

我认为概率和统计是最重要的先决条件,尤其是高斯混合模型(GMM)和隐马尔可夫模型(HMM),它们在机器学习和自然语言处理中都非常重要(当然,如果是入门课程,这些主题可能会被包含在内)。

接下来,我认为基本的计算机科学知识也很有帮助,例如算法、形式语言和基本的复杂性理论。


5

字符串算法,包括后缀树。微积分和线性代数。各种各样的统计学。人工智能优化算法。数据聚类技术......还有许多其他东西。根据您的意图,这是一个非常活跃的领域。

您选择使用哪种语言并不重要。例如,Python具有NLTK,这是一个相当不错的免费软件包,可用于处理计算语言学。


4

斯坦福大学CS 224:自然语言处理课程已经提到,该课程还包括在线视频(除其他课程材料之外)。这些视频未在课程网站上链接,因此许多人可能没有注意到它们。


这个链接上已经没有视频了,@michau。 - james.garriss

3
Jurafsky和Martin的《语音与语言处理》(http://www.amazon.com/Speech-Language-Processing-Daniel-Jurafsky/dp/0131873210/)非常好。不幸的是,由于已经出版,草稿第二版章节现在不再免费在线了 :(
此外,如果您是一名合格的程序员,那么尝试玩转NLP程序绝不为时过早。NLTK(Python)值得一提。它有一本书可以在线免费阅读,由OReilly出版。

2

1
ANTLR和类似的工具是面向形式语言的,具有明确定义、无歧义的语法。自然语言处理研究人员几十年来一直试图使用这些工具,但发现它们根本不起作用。 - Fred Foo

2
广义的问题,但我认为有限状态自动机和隐马尔可夫模型的知识会很有用。这需要掌握统计学习、贝叶斯参数估计和熵的知识。
潜在语义索引是许多机器学习问题中常用但最近才开始使用的工具。其中一些方法相当容易理解。有一些基本的潜在语义索引项目:
1. 在文本语料库中查找共现关系以进行文档/段落/句子聚类。 2. 对文本语料库的情绪进行分类。 3. 自动注释或总结文档。 4. 查找不同文档之间的关系,以自动生成文档之间的“图”。
编辑:非负矩阵分解(NMF)是一种工具,由于其简单性和有效性而变得越来越受欢迎。它易于理解。我目前研究使用NMF进行音乐信息检索;NMF已经被证明对于文本语料库的潜在语义索引也很有用。这里有一篇论文。PDF

1

Prolog 只能在学术上帮助他们,而且它也受到逻辑约束和基于语义 NLP 的工作的限制。Prolog 还不是一种业界友好型语言,因此在实际应用中并不实用。除非他们需要进行大量科学或量化工作,否则 Matlab 也是一种学术工具,他们不会真正需要它。首先,他们可能想要阅读“Norvig”书籍,并进入 AI 的世界,获得所有领域的基础知识。了解一些基本的概率、统计、数据库、操作系统、数据结构,以及最有可能的是对编程语言的理解和经验。他们需要能够向自己证明为什么 AI 技术有效,以及它们不起作用的地方。然后,更详细地了解机器学习和 NLP 等特定领域。事实上,“Norvig”书籍每章后都有参考资料,因此他们已经可以获得大量进一步阅读的资料。互联网、书籍、期刊论文等提供了大量的参考资料,供他们参考。不要只是阅读书籍,尝试使用编程语言构建工具,然后推断出“有意义”的结果。学习算法是否如预期那样学习,如果没有,为什么会这样,如何解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接