文本特征抽取与处理

一、NLP的文本表示

既是语言模型(language model),是我们分析的入口。

1、统计语言模型的目的:
--  建立一个能够描述一句话、一个词的概率估计方法

2、语义模型的基础模型:
--  P(W1W2W3...WI) = 累乘(P(W1)P(W2|W1)P(W2|W2W1)...)

3、语义模型的概率估计(一句话一个词组在一起的概率,比如W1W2W3)
-- 基于对数似然
-- L = log(P(w1)P(w2|w1)P(w3|w1w2))
-- 既是log(P(w|w所有上下文))的累加和

4、语言模型的基础模型为: P(W1W2...WT) = (1到n的累乘)P(W1)P(W2|W1)P(Wi|W1W2...Wi-1)
    这样既可以得到一个词组或者句子 W1W2...WT 的条件概率
    对后面每一项累乘的解释:
        P(Wi|W1W2...Wi-1) : 既是第i个词出现在词组W1W2...Wi-1中的概率
        P(W1) : 是W1在整个文本中的概率
        这样累乘可以得到一个词组或者句子的条件概率


5、语言模型的目标函数(基于对数似然)
    L = (累加和)log(P(w|context(w)))
        context(w)为词w的上下文
        P(w|context(w)):词w在其上下文中的条件概率
    L可以描述这个这个语言模型的合理程度

二、最基本的语言模型-词袋模型

把文本看作无序的词组合,利用统计语言模型来理解,每个词出现的概率与自身有关,与上下文无关;

所谓词袋模型: 
-- 既是TF-IDF
-- 语义模型的极端情况
-- 只考虑单个词的权重,放入词袋

1、TF

词汇F在文档D中的频数

2、IDF 

log(总文档数N/包含词汇w的文档数Nw)

3、TF-IDF

TF*IDF,作为该词汇在该语料(文档集)中对于该文章的权重

4、作用

某个文档的某一个词的权重 = tf*IDF
将词在第几个文档的第几个,(i,j)作为索引 ,权重作为这个索引的值,完成文本到特征向量的转换,即是生成了一个词袋

5、具体实现

In [1]: from sklearn.feature_extraction.text import TfidfVectorizer
In [2]: vec = TfidfVectorizer()
In [3]: corpus = ['This is sample document.', 'another random document.', 'third sample document text']
In [4]: X = vec.fit_transform(corpus)
In [5]: print X   #(#doc, #wordFeature)   weight
  (0, 7)    0.58448290102
  (0, 2)    0.58448290102
  (0, 4)    0.444514311537
  (0, 1)    0.345205016865
  (1, 1)    0.385371627466
  (1, 0)    0.652490884513
  (1, 3)    0.652490884513
  (2, 4)    0.444514311537
  (2, 1)    0.345205016865
  (2, 6)    0.58448290102
  (2, 5)    0.58448290102
In [6]: vec.get_feature_names()  #wordFeature Order
Out[6]:
[u'another',
 u'document',
 u'is',
 u'random',
 u'sample',
 u'text',
 u'third',
 u'this']

三、n-gram模型

1、基本思想:将文本里面的内容按照字节进行大小为n的滑动窗口操作,形成了长度为N的字节片段子集;(既是N元素子集的集合,每一个N元素子集称为一个gram)

2、基于假设:第N个词的出现只和前面的N-1个词相关,与其他任何词都不相关;

3、N-gram总结
-- 是语义模型的特殊情况
-- 基于马尔可夫假设:一个词将来的状态,只和现在有关,跟过去无关
-- 比如3-gram模型w1w2w3
    -- p(w3|w1w2)
    -- 这个条件概率的计算,有点像贝叶斯的推导过程:
    -- p(w3|w1w2) = p(w1w2w3)/p(w1w2)
    -- 既是出现w1w2再出现w3的概率,等于同时出现w1w2w3的概率除以同时出现w1w2的概率

4、N-gram模型推导:

NLP的语言模型是:
P(W1W2...WT) = (1到n的累乘)P(W1)P(W2|W1)P(WT|W1W2...WT-1)

利用马尔科夫链的假设,即当前这个词仅仅跟前面几个有限的词相关,从而得到常用的1-gram ,2-gram ,3-gram模型:

P(W1W2...WT) = P(Wi|W1W2...Wi-1)

i=1是就是 p(w1) ,表示预料库中出现w1的概率  -- 此即为1-gram模型
i = 2 时就是 p(w2|w1) , 表示预料库中,出现w1后紧跟着w2的概率 -- 此即为2-gram模型
i = 3 时就是 p(w3|w2) , 表示预料库中, 出现w2后,紧跟着出现w3的概率 -- 此即为2-gram模型
p(wi|wi-1wi-2) -- 此既是3-gram模型

利用贝叶斯定理,计算出条件概率:
比如p(wi|wi-1wi-2) = p(wi,wi-1,wi-2) / p(wi-1,wi-2) ,既是wi,wi-1.wi-2同时出现的概率 除以 wi-1,wi-2出现的概率

5、N的大小

n越大,矩阵越稀疏,但约束信息越多辨别力更高;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值