前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Coursera NLP 课程 - 第一周 - 02 - 纯文本分类

Coursera NLP 课程 - 第一周 - 02 - 纯文本分类

作者头像
caoqi95
发布2019-03-27 17:49:54
9210
发布2019-03-27 17:49:54
举报

「学习内容总结自 coursera 上的 Natural Language Processing 课程」

文本处理

Tokenization 令牌化

将输入文本拆分为有意义的块 (chunks) 的过程称为 Tokenization,并且这个被拆分出来的块实际上被称为令牌 (Token)。

  • 可以认为在语义处理过程中一个 Token 就是一个有用的单元
  • 可以划分为一个单词 (word),一个句子 (sentence),一个段落 (paragrapgh) 等等

下面来看一下简单的 WhitespaceTokenizer 的例子,它是将文本按照空白格划分的。在 NLTK 这个自然语言处理库里还有很多其他的 Tokenization 的方法,比如:TreeBanktokenizer 和 WordPunctTokenizer 等。

代码语言:javascript
复制
from nltk.tokenize import WhitespaceTokenizer
word_tokenizer = WhitespaceTokenizer()
word_list = word_tokenizer.tokenize("This is Andrew's text, isn't it?")
print(word_list)
?
['This', 'is', "Andrew's", 'text,', "isn't", 'it?']
Token Normalization 令牌标准化

我们可能需要同样的 Token 来表达不同形式的单词,比如 wolf 和 wolves ,一个是单数形式,一个是多数形式,但它们的意思是一样的。所以就将其统一表达为 wolf 。

代码语言:javascript
复制
wolf , wolve ——> wolf
talk , talks ——> talk 

标准化的过程可以称为 Stemming (词干来源)或者 Lemmatization (词形还原)。

Stemming

  • A process of removing and replacing suffixes to get to the root form of the word, which is called the stem.
  • It usually refers to heuristic that chop off suffixes or replaces them.

词干来源 Stemming 是一个删除和替换后缀以获得词根形式的过程。它通常指的是试图将后缀截断或替换它们。

Lemmatization

  • Usually refer to doing things properly with the use of vocabularies and morphological analysis.
  • Returns the base or dictionary form of a word, which is known as the lemma.

词形还原时,通常会使用词汇表和形态分析来正确地处理。结果会返回一个单词的基本或字典形式,这就是所谓的 lemma。

Token 转换为特征

Bag of Words (BOW)

首先计算一个特定 token 出现的频率。我们实际上要寻找像 "excellent" 和 "disappointed" 这样的标记语言,并鉴别这些单词,且以特定单词的存在与否来做决定。下面以一部电影的三个评论 good movie,not a good movie ,did not like来举个例子。 提取文本中所有的单词或者 token ,对于每个这样的单词或者 token,引入一个与该特定单词对应的新特征。因此,这是一个非常庞大的数字指标,以及我们如何将文本转换为该指标中的行或者向量。具体做法如下图所示,对于 good movie 而言,good 和 movie 都出现在我们的文本中,所以均标记为 1 ;not, a, did, like 这四个单词均没出现,所以标记为 0 。下面not a good movie 和 did not like 以此过程类推。这个过程为称为文本向量化 (Text vectorization) ,因为我们实际上用一个巨大的数字向量替换文本,并且将该向量的每个维度对应于我们数据库中的某个 token。

但是这个方法会存在一些问题:

  • 失去的单词顺序。因为我们实际上是对单词进行随机排放,而正确的表示将保持不变。这就是为什么它被称为 bag of words,因为它是一个没有序列的包,单词可以按任何顺序出现。
  • 计数器没有标准化。

解决 BOW 方法的缺陷:

保护一些秩序的方法:提取 n-grams,即提取一些 token 对,三元组或者其他不同的组合。其中1-grams 表示 tokens ;2-grams 表示 token pairs;.... 其他的以此类推。虽然 n-grams 能够解决失序的问题,但同时又会产生另外一个问题--特征的数量会变得庞大。为了避免特征数量变得巨大,可以移除一些高频和低频的 n-grams 。

  • 高频 n-grams : - 名词,介词等(例如:a,the,and),这些被称为停用词的词汇,它们不会帮助我们区分文本,我们可以很容易地删除它们。
  • 低频 n-grams: - 拼写错误,稀少的 n-grams ,我们不需要这些词汇,因为它们会造成过拟合。

通过频率的方法我们可以滤出一些坏的 n-grams ,但是将频率用于对中频 n-grams (我们真正需要的 n-grams)排名会怎么样呢?其实可以看出频率越低将会越容易被鉴别,因为在文本中其能够捕获一些特殊的信息。透过这个想法可以提出下面的 TF (Term Frequency,词频) 的概念。

TF-IDF 词频-逆文档频率

沿用上面词频的想法,下面将介绍关于词频的一些概念。

首先要知道词频 TF (Term Frequency) 的概念:

  • 用 tf(t,d) 表示词(或者 n-grams) t 在文本 d 中的频率。
  • 多种表现形式:

接着介绍逆文本频率 IDF (Inverse Document Frequency) 的概念:

  • N = |D| -- 用大写 N 表示语料库中所有文本的数量,用大写 D 表示语料库。
  • | {d ∈ D:t ∈ d }| -- 表示包含词 t 的文件的数量。
  • idf(t,D) = log(N / | {d ∈ D:t ∈ d }|)

一般正常情况是将包含词 t 的文件的数量除以语料库中所有的文本的数量,以此得到文档频率。而逆文档频率是取其倒数,再取 log 值。

最后将上面两者结合得到 TF-IDF 概念:

  • tfidf(t,d,D) = tf(t,d) * idf(t,D),通常将词频与逆文档频率相乘得到 TF-IDF 的值。
  • TF-IDF 的主要思想是:如果某个词在一篇文档中出现的频率高,即 TF 高;并且在语料库中其他文档中很少出现,即 DF 低,也即 IDF 高,则认为这个词具有很好的类别区分能力。
更好的 BOW

有了 n-grams 和 TF-IDF 的概念就可以改进 BOW 的缺陷。主要是下面两个方面:

  • 用 TF-IDF 的值取代单词计算中的计数器
  • 逐行标准化结果(除以 L2 正则)
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.06.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文本处理
    • Tokenization 令牌化
      • Token Normalization 令牌标准化
      • Token 转换为特征
        • Bag of Words (BOW)
          • TF-IDF 词频-逆文档频率
            • 更好的 BOW
            相关产品与服务
            NLP 服务
            NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
            http://www.vxiaotou.com