这学期修了 Prof. Daniel Gildea 的 Statistical Speech and Language Processing 课程。作为 machine learning 的进阶课程,这门课的确难度不小。本文记录了这两天复习期末考所作的笔记,里面涵盖了本次课程涉及的主要内容(忽略了一些复杂、较为不重要的部分)。另外,列出了课上和复习期间领悟的一些心得,个人以为是上这门课最大的收获。水平有限,理解难免有误,请各位指正。
另外,推荐大家去看Coursera上哥大的Natural Language Processing课程,讲的非常清楚,例子也很多。
总结
- NLP 课程主要介绍了以下三类应用:
- POS Tagging:给句子中的每个词标记相应的词性
- Parsing:分析得到句子的句法结构(通常得到一个句法树)
- Machine Translation:将源语言表述的句子翻译为目标语言表述的句子
其实这三类应用之间互有联系,方法也有相似之处。粗略地讲:Parsing 可以看作 Tagging 的进化版,因为它不仅需要对每个词进行标记,还需要标记出层次性的句法结构。因此虽然 Parsing 的算法同样是动态规划(或前向后向),但比 Tagging 要计算多一个维度的信息。MT 尤其是 Syntax based MT 与 Parsing 也有相似之处,只不过除了 Parse 源句子外还要注意两个平行语料库(parrallel corpus)的关系。
- 动态规划(DP)在 NLP 中尤为重要。只要涉及到解码问题(decoding),即给定数据(句子)和 模型 (参数)求最优解(序列),基本都要用到 DP 来求解。这就很自然地延伸到两个问题:
- 为什么要用DP?
因为可行解的数量太多(对于长度为 n 、状态个数为T 的解码问题,可行解有 Tn 个),穷举法效率太低。而DP可以给出多项式时间复杂度的解法。 - 为什么可以用DP?
个人认为这涉及到NLP中模型设计。动态规划适用于有重叠子问题和最优子结构性质的问题。而 NLP 中所用的模型(如HMM,PCFG)的性质使其优化问题具有类似 “ max∏ ” 的形式。而 “ ma
- 为什么要用DP?