BOW模;型CountVectorizer模型;tfidf模型;

本文介绍了自然语言处理中的基本概念,包括BOW模型、CountVectorizer模型和tfidf模型的原理及应用。通过具体示例,展示了如何使用sklearn库进行文本特征提取。

自然语言入门

一、BOW模型:使用一组无序的单词来表达一段文字或者一个文档,并且每个单词的出现都是独立的。在表示文档时是二值(出现1,不出现0);

eg:

Doc1:practice makes perfect perfect.

Doc2:nobody is perfect.

Doc1和Doc2作为语料库:词有(practice makes perfect nobody is)

Doc1用BOW模型向量表示为:[1,1,1,0,0]

Doc2用BOW模型向量表示为:[0,0,1,1,1]

 

二、CountVectorizer模型:使用一组无序的单词来表达一段文字或者一个文档,并且每个单词的出现都是独立的。在表示文档时是每个词在相应文档中出现的次数;

eg:

Doc1:practice makes perfect perfect.

Doc2:nobody is perfect.

Doc1和Doc2作为语料库:词有(practice makes perfect nobody is)

Doc1用BOW模型向量表示为:[1,1,2,0,0]

Doc2用BOW模型向量表示为:[0,0,1,1,1]

CountVectorizer调用sklearn实现,sklearn.feature_extraction.text import CountVectorizer

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np
'''停用词表'''
stop_list='is a the of'.split()

'''申明CountVectorizer模型'''
cnt = CountVectorizer(min_df=1,ngram_range=(1,2),stop_words=stop_list)

'''语料库'''
corpus = [
     'This is the first document.',
     'This is the second second document.',
     'And the third one.',
     'Is this the first document?',
 ]

'''将文本转化为特征'''
X =cnt.fit_transform(corpus)
print(type(X)) #输出<class 'scipy.sparse.csr.csr_matrix'> 
print(X)

'''取得特征词列表[]'''
print(cnt.get_feature_names())

'''
输出
['and', 'and third', 'document', 'first', 'first document', 'one', 'second', 
'second document','second second', 'third', 'third one', 'this', 'this first', 'this second']
'''

'''获取得到的词'''
print(cnt.vocabulary_)

'''
输出:
{'this': 11, 'first': 3, 'document': 2, 'this first': 12, 'first document': 4, 'second': 6, 
'this second': 13, 'second second': 8, 'second document': 7, 'and': 0, 'third': 9, 'one': 5, 
'and third': 1, 'third one': 10}
'''

三、tfidf模型(可以调sklearn包实现tfidf的特征提取from sklearn.feature_extraction.text import TfidfVectorizer)

1、计算词频tf  

  词频(TF) = 某个词在文章中的出现次数 / 文章总词数  

2、计算逆文档数idf  

       逆文档频率(IDF) = log(语料库的文档总数/包含该词的文档总数)  

3、计算TF-IDF  

       TF-IDF = 词频(TF) * 逆文档频率(IDF)

       实现代码见git:https://github.com/frostjsy/my_study/blob/master/nlp/feature_extract/tf_idf.py

TfidfVectorizer调用sklearn实现,sklearn.feature_extraction.text import TfidfVectorizer

'''申明TfidfVectorizer模型,用法类似于CountVectorizer'''
tfidf=TfidfVectorizer(ngram_range=(1,2),stop_words=stop_list)
x=tfidf.fit_transform(corpus)
print(tfidf.get_feature_names())
print(tfidf.vocabulary_)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值