Regular Expressions, Text Normalization, Edit Distance 读书笔记

最近在看NLP的一些书籍,网络上首推的教材是斯坦福的Speech and Language Processing,遂前往阅读。至此刚刚读完第一章,列一些笔记以便复习。

  1. 综述
    1. ELIZA:识别你是谁这样的模式语句,然后反问为什么你认为我是谁,简单且效果简单
    2. 正则表达式:regular expression:用于从一个文档中找到我们想要提取的特定字符串
    3. 文本标准化:text normalization:将文本转化为更为方便的、标准的形式
    4. 令牌化:tokenizing,困难,有些词有空格却不应该被分开,有些词没空格却应该分成两个,汉字根本没空格。
    5. 词性还原:lemmatization,确定两个词是否有相同的词根。一个词性还原图可以将sung,sang,sing都指向sing。
    6. 句子分段:sentence segmentation:将一个文本变为独立的句子。
    7. 编辑距离:edit distance:通过一个字符串需要进行多少修改才能到达第二个串来判断两个字符串的相似度。
  2. 正则表达:Regular Expressions
    1. 一般来说,一个正则表达式是为了描述一组字符串的一个代数标记。
    2. 当我们有一个需要被搜索的模式串或者一组需要被搜索的语料库的时候,正则表达式很有用
    3. 应用:
      1. 替换:substitution
      2. 捕获组:capture group:捕获组就是把正则表达式中子表达式匹配的内容,保存到内存中以数字编号或显式命名的组里,方便后面引用。当然,这种引用既可以是在正则表达式内部,也可以是在正则表达式外部。
      3. ELIZA:
        1. s/.* I’M (depressed|sad) .*/I AM SORRY TO HEAR YOU ARE \1/
        2. s/.* I AM (depressed|sad) .*/WHY DO YOU THINK YOU ARE \1/
        3. s/.* all .*/IN WHAT WAY/
        4. s/.* always .*/CAN YOU THINK OF A SPECIFIC EXAMPLE/
    4. 先行断言:
      1. 代表字符串中的一个位置,紧接该位置之后的字符序列能够匹配pattern。
      2. 判断不影响游标
  3. 单词和语料库:Words and Corpora
    1. 在讨论处理单词之前,首先要决定什么才算一个单词。
    2. 标点符号对于寻找事物边缘很重要
    3. 有时也把标点符号视为一个单独的单词
    4. 陌生人电话交谈语料库:90年代前期,2430个平均6分钟的对话
    5. 表述:utterance:一个句子的口语关联
    6. 两种不流利部分
      1. 碎片:fragment:被打碎的词main-
      2. 补白:fillers:语气词
      3. 根据应用确定这些词是否是words
      4. 有时补白中uh,um这些词对接下来的词汇预测很有帮助,uh,um还具有不同的含义
    7. lemma:一个词的不同形式(单双数)
    8. Herdan定律和Heap定律
        1. V为词的种类数
        2. N为不同词(token)的总数
        3. K和β为正数常量,0 < β < 1
  4. 文本标准化:Text Normalization
    1. 对于任何文本的自然语言处理都需要将文本标准化。
    2. 三个步骤
      1. 分词
      2. 标准化词的形式
      3. 分句
    3. Unix命令:tr:
      1. 分词
      2. 按字母序排列
      3. 按出现次数排列
    4. Word令牌化和标准化
      1. 数字、特殊符号
      2. 对于很多情况,不能通过它们进行分词
      3. 有些连在一起的要分成两个
      4. named entity detection:信息抽取
      5. Penn Treebank to- kenization
        1. Linguistic Data Consortium发布
        2. 可以分开附着词
        3. 可以将连字符词语保留
        4. 把所有的标点分开。
      6. Case folding
        1. 语音识别、信息重获,全部变成小写
        2. 情感分析、文本分类任务、信息抽取、机器翻译,大小写很重要
        3. 标准的方法是使用基于正则式的确定性算法,编译为高效率的有穷状态自动机,精心设计的确定性算法可以处理多样性。
      7. 中文分词,最大匹配算法
        1. 最大匹配算法,贪心搜索
          1. 每次选词库中最长的一个词匹配,没有的话就划分单字词
            1. 适用于中文,不适用于英文,中文短词汇更多
            2. 词汇错误率:实际分词和最好分词的标准化的最小编辑距离
          2. 算法的问题:处理不在词典中的词汇或者整体题材与字典不同
          3. 更好地算法:顺序模型
        2. Lemmatization and Stemming
          1. the task of determining that two words have the same root, despite their surface differences.
            1. The words am, are, and is have the shared lemma be;
            2. the words dinner and dinners both have the lemma dinner.
        3. 分句
          1. 与分词相似,不能简单按标点分句。
          2. State-of-the-art的方法基于机器学习
        4. affixes:adding “additional” meanings of various kinds.
          1. Porter算法:将词尾附加部分简单变形
        5. stem:词根
        6. 用原型来表达某个词在网络搜索中非常重要
          1. method:morphological parsing(词法解析)
    5. 最小编辑距离
      1. 测量两个字符串有多相似
      2. 词汇纠正
      3. 共指关系
      4. 可分配权值
      5. 算法:
        1. 动态规划
        2. 可以对权值进行变形
      6. 在语音语言处理中计算错误率
      7. 在机器翻译中实现两个语料库中对应词汇的匹配
      8. 校正
        1. 先执行最小距离
        2. 从后往回找获取路径
This chapter introduced a fundamental tool in language processing, the regular expression, and showed how to perform basic text normalization tasks includingword segmentation and normalization, sentence segmentation, and stemming. We also introduce the important minimum edit distance algorithm for comparing strings. Here’s a summary of the main points we covered about these ideas:
  • The regular expression language is a powerful tool for pattern-matching.
  • Basic operations in regular expressions include concatenation of symbols,disjunction of symbols ([], |, and .), counters (*, +, and {n,m}), anchors(ˆ, $) and precedence operators ((,)).
  • Word tokenization and normalization are generally done by cascades of simple regular expressions substitutions or finite automata.
  • ThePorteralgorithmisasimpleandefficientwaytodostemming,stripping off affixes. It does not have high accuracy but may be useful for some tasks.
  • The minimum edit distance between two strings is the minimum number of operations it takes to edit one into the other. Minimum edit distance can be computed by dynamic programming, which also results in an alignment of the two strings.

发表评论

电子邮件地址不会被公开。 必填项已用*标注