自然语言处理 - 文本表示模型 以及 文本数值化(基于频次)

自然语言处理 - 语言模型 以及 文本数值化 - 基于频次

文本是一类非常重要的非结构化数据,但在计算机中我们最希望处理结构化数据,那么如何表示文本就成了重要的一个环节。

文本表示的第一步则是构建 文本表示模型,意味着如何选取要素表示文本;

第二步则是 文本数值化,计算机在计算中面向的是数值,而文本则是计算机无法直接理解的字符串,如何将构建好的文本表示模型转化成数值也是非常重要的研究领域。

文本表示模型常见的有:词袋模型、N-gram 等;

数值化方法包含两个方面:基于频次、Word Embedding 等。

下面就对以上内容进行介绍。

  • 文本表示模型

    • Bag of Words

      词袋模型,这是最基础的文本表示模型,它将整个语料库以词为单位进行切分,最终生成一个不包含重复对象的 词集合

      例如有语料库:“我们一起去玩,明天我们也要去”

      利用 Bag of Words 建模则得到集合:(我们,一起,去,玩,明天,也要)

      那么一个新的文本 “我们明天玩” 则会被建模成 (我们,明天,玩)

      Bag of Words 方法简单,但是它忽略了句子中词出现的顺序,也没有考虑不同词之间的相关性,而且对于一个语料库来讲,其中的词量非常庞大,而一个句子的词非常小,这样一个句子的模型表示起来非常稀疏。

      由此出现了 N-gram 模型。

    • N-gram

      N-gram 是在 Bag of Words 的基础上考虑了 N 个词的共现,将 N 个词之间的组合看做一个“词”,最终生成一个不包含重复对象的 词组合的集合

      例如有语料库:“我们一起去玩,明天我们也要去”

      Bag of Words得到集合:(我们,一起,去,玩,明天,也要)

      在此基础上建模 N-gram,

      1. 当 N=2 时,称为 2-gram,意味着两两组合:(我们一起,我们去,我们玩,我们明天,我们也要,…)
      2. 当 N=3 时,称为 3-gram,意味着三个词进行组合:(我们一起去,我们一起玩,我们一起明天,…)

      当 N=1 时,1-gram 与 Bag of Words 等价。

      N-gram 同样是非常稀疏的,且随着 N 的增加,N-gram 模型的维数迅速膨胀。

  • 文本数值化

    文本数值化是在文本表示模型的基础上,将模型中的每个元素(词,词组合)以数值代替。最简单的是 One-Hot 表示,在这种稀疏的情况下通常与 PCA 联合使用。

    下面看一下基于频次的文本数值化方法。

    • 基于频次

      基于频次的 Embedding 一般没有维数的降低,映射前后的词向量的各个维度是一一对应的。

      • Count Vector

        顾名思义,是通过计数来生成向量的。

        例如:

        有包含 2 个文档的语料库:“①我爱祖国。②我爱你,非常爱。

        语料库中共有 5个 词出现,那么每句话用 Count Vector 来表示,每个 文档向量 的维数都为 5:

        第一文档中, 出现了 1 次,所以计数为 1;
        第二文档中, 出现了 2 次,所以计数为 2;
        以此类推。

    Index祖国非常
    11100
    12011
    • TF-IDF Vector

      TF-IDF,Term Frequency - Inverse Document Frequency,词频-逆文档频率。

      每一个词不用 Count 计数来表示其值,而是用 TF-IDF 值来表示,并以此构成 文档向量 来表示各个句子。

      具体的 : t f _ i d f ( t , d ) = t f ( t , d ) ∗ i d f ( t ) tf\_idf(t,d)=tf(t,d) * idf(t) tf_idf(t,d)=tf(t,d)idf(t)

      其中,

      t f ( t , d ) = c o u n t ( t , d ) s i z e ( d ) tf(t,d)=\frac{count(t,d)}{size(d)} tf(t,d)=size(d)count(t,d)

      是指在文档 d 中,单词 t 的数量 c o u n t ( t , d ) count(t,d) count(t,d),占文档 d 总单词数量的比例(单词 t 在文档 d 中出现的频率)。
      用来衡量单词 t 对与文档主旨的重要性。

      i d f ( t ) = l o g ( N D N t ) idf(t)=log(\frac{N_D}{N_t}) idf(t)=log(NtND)
      是指文档的总个数 ND ,除以包含单词 t 的文档数 Nt
      越多的文档出现单词 t ,即分母越大,值越小,则说明单词 t 越通用,对主旨贡献小。

      对于刚才的例子:“①我爱祖国。②我爱你,非常爱。

      D = { ① , ② } D=\{①,②\} D={,}


      对 ① 文档:

      t f ( 我 , ① ) = 1 3 , i d f ( 我 ) = l o g ( 2 2 ) , t f _ i d f ( 我 ) = 0 tf(我,①)=\frac{1}{3},idf(我)=log(\frac{2}{2}),tf\_idf(我)=0 tf(,)=31idf()=log(22)tf_idf()=0

      t f ( 爱 , ① ) = 1 3 , i d f ( 爱 ) = l o g ( 2 2 ) , t f _ i d f ( 爱 ) = 0 tf(爱,①)=\frac{1}{3},idf(爱)=log(\frac{2}{2}),tf\_idf(爱)=0 tf(,)=31idf()=log(22)tf_idf()=0

      t f ( 祖 国 , ① ) = 1 3 , i d f ( 祖 国 ) = l o g ( 2 1 ) , t f _ i d f ( 祖 国 ) = 0.099 tf(祖国,①)=\frac{1}{3},idf(祖国)=log(\frac{2}{1}),tf\_idf(祖国)=0.099 tf(,)=31idf()=log(12)tf_idf()=0.099

      t d _ i d f ( 你 , ① ) = 0 , t d _ i d f ( 非 常 , ① ) = 0 td\_idf(你,①)=0,td\_idf(非常,①)=0 td_idf(,)=0td_idf(,)=0


      对 ② 文档:

      t f ( 我 , ① ) = 1 5 , i d f ( 我 ) = l o g ( 2 2 ) , t f _ i d f ( 我 ) = 0 tf(我,①)=\frac{1}{5},idf(我)=log(\frac{2}{2}),tf\_idf(我)=0 tf(,)=51idf()=log(22)tf_idf()=0

      t f ( 爱 , ① ) = 2 5 , i d f ( 爱 ) = l o g ( 2 2 ) , t f _ i d f ( 爱 ) = 0 tf(爱,①)=\frac{2}{5},idf(爱)=log(\frac{2}{2}),tf\_idf(爱)=0 tf(,)=52idf()=log(22)tf_idf()=0

      t f ( 你 , ① ) = 1 5 , i d f ( 你 ) = l o g ( 2 1 ) , t f _ i d f ( 你 ) = 0.3 tf(你,①)=\frac{1}{5},idf(你)=log(\frac{2}{1}),tf\_idf(你)=0.3 tf(,)=51idf()=log(12)tf_idf()=0.3

      t f ( 非 常 , ① ) = 1 5 , i d f ( 非 常 ) = l o g ( 2 1 ) , t f _ i d f ( 非 常 ) = 0.3 tf(非常,①)=\frac{1}{5},idf(非常)=log(\frac{2}{1}),tf\_idf(非常)=0.3 tf(,)=51idf()=log(12)tf_idf()=0.3

      t f _ i d f ( 祖 国 ) = 0 tf\_idf(祖国)=0 tf_idf()=0

    Index祖国非常
    000.09900
    0000.30.3
    • 共现矩阵

      共现矩阵是指,在中心词的左右某个大小的范围内,某两个词共同出现的次数:

      这个窗口称为滑动窗口。如果窗口大小为 1,则计算中心词与前后 1 个位置的词的共现次数。

      共现矩阵是一个对称矩阵,它 常用来分析词与词之间基于上下文的相似性

      例如,对于文档 “我爱祖国。” ,滑动窗口大小为 1.

      得到的共现矩阵如下:

index祖国非常
01000
10100
祖国01000
00000
非常00000
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值