假设您认识一名想要学习机器学习和自然语言处理的学生 .
他们应该关注哪些具体的计算机科学科目以及专门设计哪些编程语言来解决这些类型的问题?
我不是在寻找你最喜欢的科目和工具,而是寻找行业标准 .
Example :我猜测知道Prolog和Matlab可能对他们有所帮助 . 他们也可能想要研究离散结构*,微积分和统计 .
*图形和树木 . 函数:属性,递归定义,解决重现 . 关系:属性,等价,偏序 . 证明技术,归纳证明 . 计数技术和离散概率 . 逻辑:命题演算,一阶谓词演算 . 正式推理:自然演绎,分辨率 . 用于编程正确性和自动推理的应用程序 . 计算中代数结构的介绍 .
9 回答
字符串算法,包括后缀树 . 微积分和线性代数 . 不同的统计数据 . 人工智能优化算法 . 数据聚类技术......以及其他一百万种东西 . 这是一个非常活跃的领域,取决于你打算做什么 .
你选择使用什么语言并不重要 . 例如,Python有NLTK,这是一个非常好的免费软件包,用于修补计算语言学 .
我的建议是:或者全部(取决于他的数量和兴趣领域):
The Oxford Handbook of Computational Linguistics:
The Oxford Handbook of Computational Linguistics http://ukcatalogue.oup.com/images/en_US/covers/medium/9780199276349_140.jpg
Foundations of Statistical Natural Language Processing:
Foundations of Statistical Natural Language Processing http://nlp.stanford.edu/fsnlp/fsnlp.gif
Introduction to Information Retrieval:
Introduction to Information Retrieval http://nlp.stanford.edu/IR-book/iir.jpg
这个相关的stackoverflow问题有一些很好的答案:What are good starting points for someone interested in natural language processing?
这是一个非常大的领域 . 先决条件主要包括概率/统计,线性代数和基本计算机科学,尽管自然语言处理需要更加密集的计算机科学背景(经常覆盖一些基本的AI) . 关于特定的语言:Lisp创建"as an afterthought" for doing AI research,而Prolog(其根源于形式逻辑)特别针对自然语言处理,许多课程将使用Prolog,Scheme,Matlab,R或其他功能语言(例如OCaml is used for this course at Cornell)非常适合这种分析 .
以下是一些更具体的指针:
对于机器学习,Stanford CS 229: Machine Learning很棒:它包括所有内容,包括讲座的完整视频(也在iTunes上),课程笔记,问题集等等,而且Andrew Ng教学得非常好 .
请注意先决条件:
该课程使用Matlab和/或Octave . 它还建议以下读数(虽然课程说明本身非常完整):
Christopher Bishop,Pattern Recognition and Machine Learning . 施普林格,2006年 .
Richard Duda,Peter Hart和David Stork,Pattern Classification,第2版 . John Wiley&Sons,2001 .
Tom Mitchell,Machine Learning . 麦格劳希尔,1997年 .
Richard Sutton和Andrew Barto,Reinforcement Learning: An introduction . MIT出版社,1998年
对于自然语言处理,NLP group at Stanford提供了许多好的资源 . 入门课程Stanford CS 224: Natural Language Processing包括all the lectures online并具有以下先决条件:
一些推荐的文本是:
Daniel Jurafsky和James H. Martin . 2008. Speech and Language Processing: An Introduction to Natural Language Processing,计算语言学和语音识别 . 第二版 . 普伦蒂斯霍尔 .
Christopher D. Manning和HinrichSchütze . 1999. Foundations of Statistical Natural Language Processing . MIT出版社 .
詹姆斯艾伦 . 1995. Natural Language Understanding . 本杰明/卡明斯,2ed .
Gerald Gazdar和Chris Mellish . 1989. Natural Language Processing in Prolog . Addison-Wesley出版社 . (这可在线获取 free )
Frederick Jelinek . 1998. Statistical Methods for Speech Recognition . MIT出版社 .
前提条件computational linguistics course需要基本的计算机编程和数据结构知识,并使用相同的教科书 . 所需的人工智能课程is also available online以及all the lecture notes并使用:
这是标准的人工智能文本,也值得一读 .
我自己使用R进行机器学习,真的推荐它 . 为此,我建议查看The Elements of Statistical Learning,全文可在线免费获取 . 您可能需要参考CRAN上的Machine Learning和Natural Language Processing视图以获取特定功能 .
我会说 probabily & statistics 是最重要的先决条件 . 特别是 Gaussian Mixture Models (GMMs)和 Hidden Markov Models (HMMs)在机器学习和自然语言处理中都非常重要(当然,如果它是介绍性的话,这些科目可能是课程的一部分) .
然后,我会说基本的CS知识也很有用,例如 Algorithms , Formal Languages 和基本 Complexity 理论 .
Stanford CS 224: Natural Language Processing 已经提到的课程也包括videos online(除了其他课程材料) . 视频未与课程网站链接,因此很多人可能不会注意到它们 .
Jurafsky和Martin的语音和语言处理http://www.amazon.com/Speech-Language-Processing-Daniel-Jurafsky/dp/0131873210/非常好 . 不幸的是,第二版草案章节现已不再免费在线发布了:(
此外,如果你是一个不错的程序员,那么玩NLP程序永远不会太早 . 想到了NLTK(Python) . 它有一本书,你可以在网上免费阅读(我认为是OReilly) .
Markdown and an Introduction to Parsing Expression Grammars (PEG)发表于cletus在他的网站cforcoding上怎么样?
ANTLR似乎是开始自然语言处理的好地方 . 我不是专家 .
广泛的问题,但我当然认为有限状态自动机和隐马尔可夫模型的知识将是有用的 . 这需要统计学习,贝叶斯参数估计和熵的知识 .
潜在语义索引是许多机器学习问题中最常用的工具 . 有些方法很容易理解 . 有一堆潜在的基础项目 .
在文本语料库中查找文档/段落/句子聚类的共现 .
对文本语料库的情绪进行分类 .
自动注释或汇总文档 .
查找单独文档之间的关系,以在文档中自动生成"graph" .
编辑:非负矩阵分解(NMF)是一种由于其简单性和有效性而大受欢迎的工具 . 这很容易理解 . 我目前正在研究使用NMF进行音乐信息检索; NMF已经证明对于文本语料库的潜在语义索引也是有用的 . 这是一篇论文 . PDF
Prolog只会在学术上帮助它们,它也受限于逻辑约束和基于语义NLP的工作 . Prolog还不是一种行业友好的语言,因此在现实世界中尚不实用 . 而且,matlab也是一种基于学术的工具,除非他们做了大量科学或基于量的工作,他们真的不需要它 . 首先,他们可能想要拿起“Norvig”一书并进入人工智能世界,在所有领域获得基础 . 理解一些基本概率,统计数据,数据库,操作系统,数据结构,以及最有可能理解和使用编程语言的经验 . 他们需要能够向自己证明人工智能技术的工作原理和不工作的原因 . 然后更详细地查看机器学习和NLP等特定领域 . 事实上,norvig书在每章后都有参考资料,所以他们已经有了很多进一步的阅读资料 . 通过互联网,书籍,期刊论文为他们提供了大量的参考资料以供指导 . 不要只是阅读本书,尝试用编程语言构建工具,然后推断出“有意义”的结果 . 学习算法是否实际上按预期学习,如果不是为什么会这样,那怎么可能修复 .