当前位置:   article > 正文

sklearn 生成中文词向量与tfidf_sklearn 的词向量函数

sklearn 的词向量函数

一、英文的词向量生成想必大家都已经能从官网学到,利用sklean的CoutVectorizer模块即可简单生成,借用官网例子:

from sklearn.feature_extraction.text import CountVectorizer,TfidfTransformer

vecizer =  CountVectorizer()

corpus = [   'This is the first document.',
             'This is the second second document.',

             'And the third one.',

             'Is this the first document?']

X = vectorizer.fit_transform(corpus)

X.toarray()     #输出词向量矩阵         

array([[0, 1, 1, 1, 0, 0, 1, 0, 1],

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

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

       [0, 1, 1, 1, 0, 0, 1, 0, 1]]...)

二、中文生成词向量矩阵和tfidf矩阵

      由以上官网的例子,可以看出英文句子以空格隔开,可以直接使用CountVectorizer()函数进行词向量的生成,但是中文语句是没有这个特点的,需要我们先进行分词,我这里以jieba为例:

(一)jieba分词

In[6]: texts = ['小明,今天中国的天气非常 好啊!','中国芯片技术落后于世界']

In[7]: for text in texts:

  ...:     words = [word for word in jieba.cut(text)]

  ...:     print(words)

out[7]:['小明', ',', '今天', '中国', '的', '天气', '非常', ' ', '好', '啊', '!']

           ['中国', '芯片', '技术落后', '于', '世界']

显然这种形势不符合英文的每句话作为一个字符串,并且以空格分隔的形式,不能使用CountVectorizer()函数,所以需要一些转换:

(二)转换为CountVectorizer()函数支持的格式

In[9]: ll = []

  ...: for text in texts:

  ...:     words = [word for word in jieba.cut(text)]

  ...:     ll.append(' '.join(words))    #['小明 , 今天 的 天气 非常   好 啊 !', '中国 芯片 技术落后 于 世界']分词后并转为该形式

  ...: print(ll)

转换后为:

['小明 , 今天 中国 的 天气 非常   好 啊 !',

 '中国 芯片 技术落后 于 世界']

现在,和官网示例形式一样了,这时候就可以使用CountVectorizer()函数生成词向量,然后再生成tfidf矩阵:

counter = CountVectorizer()
counts = counter.fit_transform(ll)
print('countvectorizer词表:\n',counter.vocabulary_)  #countvectorizer的词汇表,有多少个,词向量就是多少维度
print('词向量矩阵:\n',counts.toarray())  #fit_transform后查看具体向量
tfidfer = TfidfTransformer()
tfidf = tfidfer.fit_transform(counts)
print('tfidf向量矩阵:\n',tfidf.toarray())  #fit_transform后查看具体向量矩阵

countvectorizer词表:

 {'小明': 4, '今天': 2, '中国': 1, '天气': 3, '非常': 7, '芯片': 6, '技术落后': 5, '世界': 0}

词向量矩阵:

 [[0 1 1 1 1 0 0 1]

 [1 1 0 0 0 1 1 0]]

tfidf向量矩阵:

 [[0.         0.33517574 0.47107781 0.47107781 0.47107781 0.

  0.         0.47107781]

 [0.53404633 0.37997836 0.         0.         0.         0.53404633

  0.53404633 0.        ]]





声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/369202
推荐阅读
相关标签
  

闽ICP备14008679号