从文本抽取特征

从文本抽取特征

Extracting features from text

最近在做SIGHAN的task 2情感分类任务,在这样的二分类/三分类问题中,最重要的就是文本特征的提取和选择,也就是:

特征工程决定了最终的算法上限,而模型的选择和调参决定了分类和预测和该上限的距离

简单介绍一下利用sklearn抽取文本特征的过程


词带模型

* The Bag-of-words representation*
Bag-of-words可以看成是one-hot encoding的扩展,为文本每一个(所关注的)词构建一个特征,因而一个文本对应了一个特征向量。该模型基于:

包含了较多类似的(similar)词的文档,表达的内容也往往相似

  • corpus 语料库,是文档的集合
  • vocabulary 在corpus中的unique的词的集合
  • dimension doc对应的特征向量的维度,一个语料库在处理过程中dimension是一致的,因为是由vocabulary的维度确定的
  • dictionary 特征向量每个元素对应的词需要一个dictionary来map

例如我们这里的迷你corpus:

corpus = {
    'UNC played Duke in basketball',
    'Duke lost the basketball game'
}

由8个不同的词组成了vocabulary:

['UNC','played','Duke','in','baskball','lost','the','game']

在这个例子中dimension因此就是8. 上面这个list也就代表了dictionary,第一个词UNC映射到了向量的第一个元素。
词袋模型一般选择binary value来表示每个词,1表示该次在文本中出现,0则反之。例如上个例子的corpus中的两个文档对应的向量为:

[1, 1, 1, 1, 1, 0, 0, 0]
[0, 0, 1, 0, 1, 1, 1, 1]

sklearn中的CountVectorizer 类可以将一个string或是file处理成bag-of-words representation。需要说明的是CountVectorizer 类默认会做两件事:

  • lowercase
  • tokenize

Tokenization是将字符串分割为一个个独立的token或是有意义的词串(邮箱)的过程。Tokens通常是一个个词,也可能是短语,可能会带有标点或是前缀。CountVectorizer 类使用正则表达式利用空格来分割字符串。
代码0
上述代码结果:
结果0
CountVectorizer().

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值