1. 程式人生 > >用 TF-IDF 和詞袋錶示文件特徵

用 TF-IDF 和詞袋錶示文件特徵

使用 CounterVectorizer 和 TfidfTransformer 計算 TF-IDF

import jieba
from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer, TfidfVectorizer
import pandas as pd

contents = [
    u'小明喜歡看電影,小紅也喜歡看電影。',
    u'小明還喜歡看足球比賽。'
]
# 定義停用詞
stopwords = {',', '。'}
# 計算TF(每個詞的出現次數,未歸一)
# tokenizer: 定義一個函式,接受文字,返回分詞的list
# stop_words: 定義停用詞詞典,會在結果中刪除詞典中包含的詞 tf = CountVectorizer(tokenizer=jieba.lcut, stop_words=stopwords) res1 = tf.fit_transform(contents) # use_idf: 表示在TF矩陣的基礎上計算IDF,並相乘得到TF-IDF # smooth_idf: 表示計算IDF時,分子上的總文件數+1 # sublinear_tf: 表示使用 1+log(tf)替換原來的tf # norm: 表示對TF-IDF矩陣的每一行使用l2範數歸一化 tfidf = TfidfTransformer(
norm='l2', use_idf=True, smooth_idf=True, sublinear_tf=False) res2 = tfidf.fit_transform(res1)

直接使用 TfidfVectorizer

# 引數為 CounterVectorizer 和 TfidfTransformer 的所有引數
tfidf = TfidfVectorizer(tokenizer=jieba.lcut, stop_words=stopwords, norm='l2', use_idf=True, smooth_idf=True, sublinear_tf=False)
res =
tfidf.fit_transform(contents)