提交 c1ccc8b8 编写于 作者: W wizardforcel

ch3 style _

上级 5604413b
......@@ -186,7 +186,7 @@ u'go'
词干解析的确有一个计算成本。 最终收益是否大于成本取决于应用程序。
### 含义的原子:从单词到 N-gram 到短语
### 含义的原子:从单词到 N-gram 到短语
词袋的概念很简单。但是,一台电脑怎么知道一个词是什么?文本文档以数字形式表示为一个字符串,基本上是一系列字符。也可能会遇到 JSON blob 或 HTML 页面形式的半结构化文本。但即使添加了标签和结构,基本单位仍然是一个字符串。如何将字符串转换为一系列的单词?这涉及解析和标记化的任务,我们将在下面讨论。
......@@ -198,25 +198,38 @@ u'go'
有时,分析需要使用句子而不是整个文档。例如,n-gram 是一个句子的概括,不应超出句子范围。更复杂的文本特征化方法,如 word2vec 也适用于句子或段落。在这些情况下,需要首先将文档解析为句子,然后将每个句子进一步标记为单词。
### String objects: more than meets the eye
字符串对象有各种编码,如ASCII或Unicode。 纯英文文本可以用ASCII编码。 一般语言需要Unicode。 如果文档包含非ASCII字符,则确保分词器可以处理该特定编码。否则,结果将不正确。
### Collocation Extraction for Phrase Detection
连续的token能立即被转化成词表和n-gram。但从语义上讲,我们更习惯于理解短语,而不是n-gram。在计算自然语言处理中,有用短语的概念被称为搭配。用Manning和Schütze(1999:141)的话来说:“配对是一个由两个或两个以上单词组成的表达,它们对应于某种常规的说话方式。”
搭配比其部分的总和更有意义。例如,“strong tea ”具有超越“great physical strength”和“tea”的不同含义,因此被认为是搭配。另一方面,“可爱的小狗”这个短语恰恰意味着它的部分总和:“可爱”和“小狗”。因此,它不被视为搭配。
搭配不一定是连续的序列。“Emma knocked on the door” 一词被认为包含搭配“knock door.”,因此不是每一个搭配都是一个n-gram。相反,并不是每个n-gram都被认为是一个有意义的搭配。
由于搭配不仅仅是其部分的总和,它们的含义也不能通过单个单词计数来充分表达。作为一种表现形式,词袋不足。袋子的ngram也是有问题的,因为它们捕获了太多无意义的序列(考虑“this is” in the bag-of-ngram example ),而没有足够的有意义的序列。
### 字符串对象
字符串对象有各种编码,如 ASCII 或 Unicode。纯英文文本可以用 ASCII 编码。 一般语言需要 Unicode。 如果文档包含非 ASCII 字符,则确保分词器可以处理该特定编码。否则,结果将不正确。
### 短语检测的搭配提取
连续的记号能立即被转化成词表和 n-gram。但从语义上讲,我们更习惯于理解短语,而不是 n-gram。在计算自然语言处理中,有用短语的概念被称为搭配。用 Manning 和 Schütze(1999:141)的话来说:“搭配是一个由两个或两个以上单词组成的表达,它们对应于某种常规的说话方式。”
搭配比其部分的总和更有意义。例如,`"strong tea"`具有超越`"great physical strength"``"tea"`的不同含义,因此被认为是搭配。另一方面,“可爱的小狗”这个短语恰恰意味着它的部分总和:“可爱”和“小狗”。因此,它不被视为搭配。
搭配不一定是连续的序列。`"Emma knocked on the door"`一词被认为包含搭配`"knock door"`,因此不是每一个搭配都是一个 n-gram。相反,并不是每个 n-gram 都被认为是一个有意义的搭配。
由于搭配不仅仅是其部分的总和,它们的含义也不能通过单个单词计数来充分表达。作为一种表现形式,词袋不足。袋子的 ngram 也是有问题的,因为它们捕获了太多无意义的序列(考虑`"this is in the bag-of-ngram example"`),而没有足够的有意义的序列。
搭配作为功能很有用。但是,如何从文本中发现并提取它们呢?一种方法是预先定义它们。如果我们努力尝试,我们可能会找到各种语言的全面成语列表,我们可以通过文本查看任何匹配。这将是非常昂贵的,但它会工作。如果语料库是非常特定领域的并且包含深奥的术语,那么这可能是首选的方法。但是这个列表需要大量的手动管理,并且需要不断更新语料库。例如,分析推文,博客和文章可能不太现实。
自从统计NLP过去二十年出现以来,人们越来越多地选择用于查找短语的统计方法。统计搭配提取方法不是建立固定的短语和惯用语言列表,而是依赖不断发展的数据来揭示当今流行的语言。
### Freqency-based methods
一个简单的hack频繁发生的n-gram。 这种方法的问题是最常发生的,这种可能不是最有用的。 表3-2显示了整个Yelp评论数据集中最流行的bigram(n=2)。 正如我们所知的,按文件计数排列的最常见的十大常见术语是非常通用的术语,并不包含太多含义。
自从统计 NLP 过去二十年出现以来,人们越来越多地选择用于查找短语的统计方法。统计搭配提取方法不是建立固定的短语和惯用语言列表,而是依赖不断发展的数据来揭示当今流行的语言。
### 基于频率的方法
一个简单的黑魔法是频繁发生的 n-gram。这种方法的问题是最常发生的,这种可能不是最有用的。 表 3-2 显示了整个 Yelp 评论数据集中最流行的 bigram(`n=2`)。 正如我们所知的,按文件计数排列的最常见的十大常见术语是非常通用的术语,并不包含太多含义。
![图3-biaod](../images/chapter3/biaod.PNG)
### Hypothesis testing for collocation extraction
Raw popularity count是一个比较粗糙的方法。我们必须找到更聪慧的统计数据才能够轻松挑选出有意义的短语。关键的想法是看两个单词是否经常出现在一起。回答这个问题的统计机制被称为假设检验。
假设检验是将噪音数据归结为“是”或“否”的答案。它涉及将数据建模为从随机分布中抽取的样本。随机性意味着人们永远无法100%的确定答案;总会有异常的机会。所以答案附在概率上。例如,假设检验的结果可能是“这两个数据集来自同一分布,其概率为95%”。对于假设检验的温和介绍,请参阅可汗学院关于假设检验和p值的教程。
在搭配提取的背景下,多年来已经提出了许多假设检验。最成功的方法之一是基于似然比检验(Dunning,1993)。对于给定的一对单词,该方法测试两个假设
观察的数据集。假设1(无效假设)表示,词语1独立于词语2出现。另一种说法是说,看到词语1对我们是否看到词语2没有影响。假设2(备选假设)说,看到词1改变了看到单词2的可能性。我们采用备选假设来暗示这两个单词形成一个共同的短语。因此,短语检测(也称为搭配提取)的似然比检验提出了以下问题:给定文本语料库中观察到的单词出现更可能是从两个单词彼此独立出现的模型中生成的,或者模型中两个词的概率纠缠?
### 用于搭配提取的假设检验
原始流行度计数(Raw popularity count)是一个比较粗糙的方法。我们必须找到更聪慧的统计数据才能够轻松挑选出有意义的短语。关键的想法是看两个单词是否经常出现在一起。回答这个问题的统计机制被称为假设检验。
假设检验是将噪音数据归结为“是”或“否”的答案。它涉及将数据建模为从随机分布中抽取的样本。随机性意味着人们永远无法 100% 的确定答案;总会有异常的机会。所以答案附在概率上。例如,假设检验的结果可能是“这两个数据集来自同一分布,其概率为 95%”。对于假设检验的温和介绍,请参阅可汗学院关于假设检验和 p 值的教程。
在搭配提取的背景下,多年来已经提出了许多假设检验。最成功的方法之一是基于似然比检验(Dunning,1993)。对于给定的一对单词,该方法测试两个假设观察的数据集。假设 1(原假设)表示,词语 1 独立于词语 2 出现。另一种说法是说,看到词语1对我们是否看到词语2没有影响。假设 2(备选假设)说,看到词 1 改变了看到单词 2 的可能性。我们采用备选假设来暗示这两个单词形成一个共同的短语。因此,短语检测(也称为搭配提取)的似然比检验提出了以下问题:给定文本语料库中观察到的单词出现更可能是从两个单词彼此独立出现的模型中生成的,或者模型中两个词的概率纠缠?
这是有用的。让我们算一点。(数学非常精确和简洁地表达事物,但它确实需要与自然语言完全不同的分析器。)
![图3-gongshi](../images/chapter3/gongshi.PNG)
......@@ -235,10 +248,13 @@ Raw popularity count是一个比较粗糙的方法。我们必须找到更聪慧
请注意,搭配抽取的所有统计方法,无论是使用原始频率,假设测试还是点对点互信息,都是通过过滤候选词组列表来进行操作的。生成这种清单的最简单和最便宜的方法是计算n-gram。它可能产生不连续的序列,但是它们计算成本颇高。在实践中,即使是连续n-gram,人们也很少超过bi-gram或tri-gram,因为即使在过滤之后,它们的数量也很多。为了生成更长的短语,还有其他方法,如chunking或与词性标注相结合。
### Chunking and part-of-Speech Tagging
Chunking比n-gram要复杂一点,因为它基于词性,基于规则的模型形成了tokens序列。
例如,我们可能最感兴趣的是在问题中找到所有名词短语,其中文本的实体,主题最为有趣。 为了找到这个,我们使用词性标记每个作品,然后检查该标记的邻域以查找词性分组或“块”。 定义单词到词类的模型通常是语言特定的。 几种开源Python库(如NLTK,Spacy和TextBlob)具有多种语言模型。
为了说明Python中的几个库如何使用词性标注非常简单地进行分块,我们再次使用Yelp评论数据集。 我们将使用spacy和TextBlob来评估词类以找到名词短语。
### 分块(Chunking)和词性标注(part-of-Speech Tagging)
分块比 n-gram 要复杂一点,因为它基于词性,基于规则的模型形成了记号序列。
例如,我们可能最感兴趣的是在问题中找到所有名词短语,其中文本的实体,主题最为有趣。 为了找到这个,我们使用词性标记每个作品,然后检查该标记的邻域以查找词性分组或“块”。 定义单词到词类的模型通常是语言特定的。 几种开源 Python 库(如 NLTK,Spacy 和 TextBlob)具有多种语言模型。
为了说明 Python 中的几个库如何使用词性标注非常简单地进行分块,我们再次使用 Yelp 评论数据集。 我们将使用 spacy 和 TextBlob 来评估词类以找到名词短语。
```python
>>> import pandas as pd
......@@ -385,23 +401,30 @@ date NOUN NN
['got', 'goldberg', 'arizona', 'new position', 'june', 'new doctor', 'nyc'
```
你可以看到每个库找到的名词短语有些不同。 spacy包含英语中的常见单词,如“a”和“the”,而TextBlob则删除这些单词.这反映了规则引擎的差异,它驱使每个库都认为是“名词短语”。 你也可以写你的词性关系来定义你正在寻找的块。使用Python进行自然语言处理可以深入了解从头开始用Python进行分块。
你可以看到每个库找到的名词短语有些不同。spacy 包含英语中的常见单词,如`"a"``"the"`,而 TextBlob 则删除这些单词。这反映了规则引擎的差异,它驱使每个库都认为是“名词短语”。 你也可以写你的词性关系来定义你正在寻找的块。使用 Python 进行自然语言处理可以深入了解从头开始用 Python 进行分块。
## 总结
## 总结:
词袋模型易于理解和计算,对分类和搜索任务很有用。但有时单个单词太简单,不足以将文本中的某些信息封装起来。为了解决这个问题,人们寄希望于比较长的序列。Bag-of-ngram 是 BOW 的自然概括,这个概念仍然容于理解,而且它的计算开销这就像 BOW 一样容易。
Bag of-ngram 生成更多不同的 ngram。它增加了特征存储成本,以及模型训练和预测阶段的计算成本。虽然数据点的数量保持不变,但特征空间的维度现在更大。因此数据密度更为稀疏。n 越高,存储和计算成本越高,数据越稀疏。由于这些原因,较长的 n-gram 并不总是会使模型精度的得到提高(或任何其他性能指标)。人们通常在`n = 2`或 3 时停止。较少的 n-gram 很少被使用。
防止稀疏性和成本增加的一种方法是过滤 n-gram 并保留最有意义的短语。这是搭配抽取的目标。理论上,搭配(或短语)可以在文本中形成非连续的标记序列。然而,在实践中,寻找非连续词组的计算成本要高得多并且没有太多的收益。因此搭配抽取通常从一个候选人名单中开始,并利用统计方法对他们进行过滤。
词袋模型易于理解和计算,对分类和搜索任务很有用。但有时单个单词太简单,不足以将文本中的某些信息封装起来。为了解决这个问题,人们寄希望于比较长的序列。Bag-of-ngram是bag-of-words的自然概括,这个概念仍然容于理解,而且它的计算开销这就像bag-of-words一样容易。
Bag of-ngram生成更多不同的ngram。它增加了特征存储成本,以及模型训练和预测阶段的计算成本。虽然数据点的数量保持不变,但特征空间的维度现在更大。因此数据密度更为稀疏。 n越高,存储和计算成本越高,数据越稀疏。由于这些原因,较长的n-gram并不总是会使模型精度的得到提高(或任何其他性能指标)。人们通常在n = 2或3时停止。较少的n-gram很少被使用。
防止稀疏性和成本增加的一种方法是过滤n-gram并保留最有意义的短语。这是搭配抽取的目标。理论上,搭配(或短语)可以在文本中形成非连续的标记序列。然而,在实践中,寻找非连续词组的计算成本要高得多并且没有太多的收益。因此搭配抽取通常从一个候选人名单中开始,并利用统计方法对他们进行过滤。
所有这些方法都将一系列文本标记转换为一组断开的计数。与一个序列相比,一个集合的结构要少得多;他们导致平面特征向量。
在本章中,我们用简单的语言描述文本特征化技术。这些技术将一段充满丰富语义结构的自然语言文本转化为一个简单的平面向量。我们讨论一些常用的过滤技术来降低向量维度。我们还引入了ngram和搭配抽取作为方法,在平面向量中添加更多的结构。下一章将详细介绍另一种常见的文本特征化技巧,称为tf-idf。随后的章节将讨论更多方法将结构添加回平面向量。
## 参考文献:
在本章中,我们用简单的语言描述文本特征化技术。这些技术将一段充满丰富语义结构的自然语言文本转化为一个简单的平面向量。我们讨论一些常用的过滤技术来降低向量维度。我们还引入了 ngram 和搭配抽取作为方法,在平面向量中添加更多的结构。下一章将详细介绍另一种常见的文本特征化技巧,称为 tf-idf。随后的章节将讨论更多方法将结构添加回平面向量。
## 参考文献
Dunning, Ted. 1993. “Accurate methods for the statistics of surprise and
coincidence.” ACM Journal of Computational Linguistics, special issue on using large corpora , 19:1 (61—74).
“Hypothesis Testing and p-Values.” Khan Academy, accessed May 31,
2016,https://www.khanacademy.org/math/probability/statistics-inferential/hypothesis-testing/v/hypothesis-testing-and-p-values.
Manning,Christopher D. and Hinrich Schütze. 1999. Foundations of StatisticalNatural Language Processing . Cambridge, Massachusettes: MIT Press.
Sometimes people call it the document “vector.” The vector extends from the original and ends at the specified point. For our purposes, “vector” and “point” are the same thing.
2016,<https://www.khanacademy.org/math/probability/statistics-inferential/hypothesis-testing/v/hypothesis-testing-and-p-values>.
Manning,Christopher D. and Hinrich Schütze. 1999. Foundations of StatisticalNatural Language Processing . Cambridge, Massachusettes: MIT Press.
Sometimes people call it the document “vector.” The vector extends from the original and ends at the specified point. For our purposes, “vector” and “point” are the same thing.
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册