国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

tf-idf原理 & TfidfVectorizer參數(shù)詳解及實戰(zhàn)

這篇具有很好參考價值的文章主要介紹了tf-idf原理 & TfidfVectorizer參數(shù)詳解及實戰(zhàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????????

目錄

一、原理

二、實戰(zhàn)

sklearn中提供的文本處理方法

1、導(dǎo)包

?2、初始化詞頻向量/tf_idf的訓(xùn)練參數(shù)

3、CountVectorizer訓(xùn)練及應(yīng)用函數(shù)

4、CountVectorizer使用

5、TfidfTransformer訓(xùn)練及應(yīng)用函數(shù)

6、TfidfTransformer訓(xùn)練及應(yīng)用函數(shù)

三、劃重點

少走10年彎路


????????tf-idf作為文體特征提取的常用統(tǒng)計方法之一,適合用于文本分類任務(wù),本文從原理、參數(shù)詳解及實戰(zhàn)全方位詳解tf-idf,掌握本篇即可輕松上手并用于文本數(shù)據(jù)分類。

一、原理

????????tf 表示詞頻(某單詞在某文本中的出現(xiàn)次數(shù)/該文本中所有詞的詞數(shù)),idf表示逆文本頻率(語料庫中包含某單詞的文本數(shù)、的倒數(shù)、取log),tf-idf則表示詞頻?*?逆文檔頻率,tf-idf認為詞的重要性隨著它在文本中出現(xiàn)的次數(shù)成正比增加,但同時會隨著它在整個語料庫中出現(xiàn)的頻率成反比下降。

????????idf表達式如下,其中k為包含某詞的文本數(shù),n為整個語料庫的文本數(shù)

?tfidfvectorizer,自然語言處理,機器學(xué)習(xí),python,人工智能

????????對idf進行平滑、避免出現(xiàn)極大/極小值(smooth_idf=True)

tfidfvectorizer,自然語言處理,機器學(xué)習(xí),python,人工智能

二、實戰(zhàn)

sklearn中提供的文本處理方法

(1)CountVectorizer:?將文本文檔集合轉(zhuǎn)換為詞頻/字符頻數(shù)矩陣,在單個類中實現(xiàn)了 tokenization (字符級+詞級分詞)、n-grams、剔除停用詞、篩選高頻詞和 occurrence counting (頻數(shù)統(tǒng)計)

(2)TfidfTransformer:將詞頻/字符頻數(shù)矩陣轉(zhuǎn)換為標準化的 tf 或 tf-idf 矩陣,Tf 表示詞頻、而 tf-idf 表示詞頻乘以逆文檔頻率,常用于文本分類。

(3)TfidfVectorizer:直接將原始文檔集合轉(zhuǎn)換為tf-idf 特征矩陣,將?CountVectorizer?和TfidfTransformer的所有功能組合在一個模型中。

實際應(yīng)用結(jié)果如下圖(1-grams + 2-grams):

本文通過使用例子實戰(zhàn),展示這幾類的使用方法及功能,以及詳細的參數(shù)解釋、方便不同需求下自行使用。

tfidfvectorizer,自然語言處理,機器學(xué)習(xí),python,人工智能

1、導(dǎo)包

import warnings 
warnings.filterwarnings('ignore')
import numpy as np
import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer,TfidfTransformer,TfidfVectorizer

?2、初始化詞頻向量/tf_idf的訓(xùn)練參數(shù)

????????由于存在功能組合的問題,TfidfVectorizer參數(shù)=CountVectorizer參數(shù)+TfidfTransformer參數(shù),因此初始化參數(shù)函數(shù)將三部分參數(shù)匯總,通過設(shè)置傳參label、用于確定所需要返回的參數(shù)字典。

def init_params(label='TfidfVectorizer'):
    params_count={
        'analyzer': 'word',  # 取值'word'-分詞結(jié)果為詞級、'char'-字符級(結(jié)果會出現(xiàn)he is,空格在中間的情況)、'char_wb'-字符級(以單詞為邊界),默認值為'word'
        'binary': False,  # boolean類型,設(shè)置為True,則所有非零計數(shù)都設(shè)置為1.(即,tf的值只有0和1,表示出現(xiàn)和不出現(xiàn))
        'decode_error': 'strict',
        'dtype': np.float64, # 輸出矩陣的數(shù)值類型
        'encoding': 'utf-8',
        'input': 'content', # 取值filename,文本內(nèi)容所在的文件名;file,序列項必須有一個'read'方法,被調(diào)用來獲取內(nèi)存中的字節(jié);content,直接輸入文本字符串
        'lowercase': True, # boolean類型,計算之前是否將所有字符轉(zhuǎn)換為小寫。
        'max_df': 1.0, # 詞匯表中忽略文檔頻率高于該值的詞;取值在[0,1]之間的小數(shù)時表示文檔頻率的閾值,取值為整數(shù)時(>1)表示文檔頻數(shù)的閾值;如果設(shè)置了vocabulary,則忽略此參數(shù)。
        'min_df': 1, # 詞匯表中忽略文檔頻率低于該值的詞;取值在[0,1]之間的小數(shù)時表示文檔頻率的閾值,取值為整數(shù)時(>1)表示文檔頻數(shù)的閾值;如果設(shè)置了vocabulary,則忽略此參數(shù)。
        'max_features': None, # int或 None(默認值).設(shè)置int值時建立一個詞匯表,僅用詞頻排序的前max_features個詞創(chuàng)建語料庫;如果設(shè)置了vocabulary,則忽略此參數(shù)。
        'ngram_range': (1, 2),  # 要提取的n-grams中n值范圍的下限和上限,min_n <= n <= max_n。
        'preprocessor': None, # 覆蓋預(yù)處理(字符串轉(zhuǎn)換)階段,同時保留標記化和 n-gram 生成步驟。僅適用于analyzer不可調(diào)用的情況。
        'stop_words': 'english', # 僅適用于analyzer='word'。取值english,使用內(nèi)置的英語停用詞表;list,自行設(shè)置停停用詞列表;默認值None,不會處理停用詞
        'strip_accents': None,
        'token_pattern': '(?u)\\b\\w\\w+\\b', # 分詞方式、正則表達式,默認篩選長度>=2的字母和數(shù)字混合字符(標點符號被當(dāng)作分隔符)。僅在analyzer='word'時使用。
        'tokenizer': None, # 覆蓋字符串標記化步驟,同時保留預(yù)處理和 n-gram 生成步驟。僅適用于analyzer='word'
        'vocabulary': None, # 自行設(shè)置詞匯表(可設(shè)置字典),如果沒有給出,則從輸入文件/文本中確定詞匯表
    }
    params_tfidf={
        'norm': None, # 輸出結(jié)果是否標準化/歸一化。l2:向量元素的平方和為1,當(dāng)應(yīng)用l2范數(shù)時,兩個向量之間的余弦相似度是它們的點積;l1:向量元素的絕對值之和為1
        'smooth_idf': True, # 在文檔頻率上加1來平滑 idf ,避免分母為0
        'sublinear_tf': False, # 應(yīng)用次線性 tf 縮放,即將 tf 替換為 1 + log(tf)
        'use_idf': True, # 是否計算idf,布爾值,F(xiàn)alse時idf=1。
    }
    if label=='CountVectorizer':
        return params_count
    elif label=='TfidfTransformer':
        return params_tfidf
    elif label=='TfidfVectorizer':
        params_count.update(params_tfidf)
        return params_count

3、CountVectorizer訓(xùn)練及應(yīng)用函數(shù)

def CountVectorizer_train(train_data,params):
    cv = CountVectorizer(**params)
    # 輸入訓(xùn)練集矩陣,每行表示一個文本

    # 訓(xùn)練,構(gòu)建詞匯表以及詞項idf值,并將輸入文本列表轉(zhuǎn)成VSM矩陣形式
    cv_fit = cv.fit_transform(train_data)
    return cv
def CountVectorizer_apply(model):
    print('詞匯表')
    print(model.vocabulary_)
    print('------------------------------')
    
    print('特證名/詞匯列表')
    print(model.get_feature_names())
    print('------------------------------')
    
    print('idf_列表')
    print(model.idf_)
    print('------------------------------')
    
    data=['Tokyo Japan Chinese']
    print('{} 文本轉(zhuǎn)化VSM矩陣'.format(data))
    print(model.transform(data).toarray())
    print('------------------------------')
    
    print('轉(zhuǎn)化結(jié)果輸出為dataframe')
    print(pd.DataFrame(model.transform(data).toarray(),columns=model.get_feature_names()))
    print('------------------------------')
    
    print('model參數(shù)查看')
    print(model.get_params())
    print('------------------------------')

4、CountVectorizer使用

train_data = ["Chinese Beijing Chinese",
              "Chinese Chinese Shanghai",
              "Chinese Macao",
              "Tokyo Japan Chinese"]

params=init_params('CountVectorizer')
cv_model=CountVectorizer_train(train_data,params)
CountVectorizer_apply(cv_model)

查看結(jié)果可以發(fā)現(xiàn),VSM矩陣并不是詞頻統(tǒng)計,其實是tf-idf的結(jié)果

tfidfvectorizer,自然語言處理,機器學(xué)習(xí),python,人工智能

5、TfidfTransformer訓(xùn)練及應(yīng)用函數(shù)

def TfidfTransformer_train(train_data,params):
    tt = TfidfTransformer(**params)
    tt_fit = tt.fit_transform(train_data)
    return tt
def TfidfTransformer_apply(model):
    print('idf_列表')
    print(model.idf_)
    print('------------------------------')
    
    data=[[1, 1, 0, 2, 1, 1, 0, 1]]
    print('詞頻列表{} 轉(zhuǎn)化VSM矩陣'.format(data))
    print(model.transform(data).toarray())
    print('------------------------------')
    
    print('model參數(shù)查看')
    print(model.get_params())
    print('------------------------------')

train_data=[[1, 1, 1, 0, 1, 1, 1, 0],
       [1, 1, 0, 1, 1, 1, 0, 1]]

params=init_params('TfidfTransformer')
tt_model=TfidfTransformer_train(train_data,params)
TfidfTransformer_apply(tt_model)

6、TfidfTransformer訓(xùn)練及應(yīng)用函數(shù)

def TfidfVectorizer_train(train_data,params):
    tv = TfidfVectorizer(**params)
    # 輸入訓(xùn)練集矩陣,每行表示一個文本

    # 訓(xùn)練,構(gòu)建詞匯表以及詞項idf值,并將輸入文本列表轉(zhuǎn)成VSM矩陣形式
    tv_fit = tv.fit_transform(train_data)
    return tv
def TfidfVectorizer_apply(tv_model):
    print('tv_model詞匯表')
    print(tv_model.vocabulary_)
    print('------------------------------')
    
    print('tv_model特證名/詞匯列表')
    print(tv_model.get_feature_names())
    print('------------------------------')
    
    print('idf_列表')
    print(tv_model.idf_)
    print('------------------------------')
    
    data=['Tokyo Japan Chinese']
    print('{} 文本轉(zhuǎn)化VSM矩陣'.format(data))
    print(tv_model.transform(data).toarray())
    print('------------------------------')
    
    print('轉(zhuǎn)化結(jié)果輸出為dataframe')
    print(pd.DataFrame(tv_model.transform(data).toarray(),columns=tv_model.get_feature_names()))
    print('------------------------------')
    
    print('tv_model參數(shù)查看')
    print(tv_model.get_params())
    print('------------------------------')


train_data = ["Chinese Beijing Chinese",
              "Chinese Chinese Shanghai",
              "Chinese Macao",
              "Tokyo Japan Chinese"]

params=init_params('TfidfVectorizer')
tv_model=TfidfVectorizer_train(train_data,params)
TfidfVectorizer_apply(tv_model)

tfidfvectorizer,自然語言處理,機器學(xué)習(xí),python,人工智能

將train_data的tf-idf矩陣轉(zhuǎn)化為dataframe結(jié)果

pd.DataFrame(tv_model.transform(train_data).toarray(),
                columns=tv_model.get_feature_names())

tfidfvectorizer,自然語言處理,機器學(xué)習(xí),python,人工智能

三、劃重點

少走10年彎路

????????關(guān)注公眾號Python風(fēng)控模型與數(shù)據(jù)分析,回復(fù) tfidf實戰(zhàn) 獲取本篇的.py代碼,不用動手直接調(diào)用、它不香嗎?

? ? ? ? 還有更多理論、代碼分享,沒有任何保留的輸出、不值得一個關(guān)注嗎?

tfidfvectorizer,自然語言處理,機器學(xué)習(xí),python,人工智能文章來源地址http://www.zghlxwxcb.cn/news/detail-788350.html

到了這里,關(guān)于tf-idf原理 & TfidfVectorizer參數(shù)詳解及實戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 什么是 TF-IDF 算法?

    什么是 TF-IDF 算法?

    簡單來說, 向量空間模型就是希望把查詢和文檔都表達成向量,然后利用向量之間的運算來進一步表達向量間的關(guān)系 。比如,一個比較常用的運算就是計算查詢所對應(yīng)的向量和文檔所對應(yīng)的向量之間的 “ 相關(guān)度 ”。 簡單解釋TF-IDF TF (Term Frequency)—— “單詞

    2024年02月10日
    瀏覽(26)
  • [nlp] TF-IDF算法介紹

    [nlp] TF-IDF算法介紹

    (1)TF是詞頻(Term Frequency) 詞頻是文檔中詞出現(xiàn)的概率。 (2) IDF是逆向文件頻率(Inverse Document Frequency) 包含詞條的文檔越少,IDF越大。

    2024年02月15日
    瀏覽(20)
  • NLP自然語言處理——關(guān)鍵詞提取之 TF-IDF 算法(五分鐘帶你深刻領(lǐng)悟TF-IDF算法的精髓)

    NLP自然語言處理——關(guān)鍵詞提取之 TF-IDF 算法(五分鐘帶你深刻領(lǐng)悟TF-IDF算法的精髓)

    ??博客主頁: 是dream ?? 系列專欄: 深度學(xué)習(xí)環(huán)境搭建、環(huán)境配置問題解決、自然語言處理、語音信號處理、項目開發(fā) ?? 每日語錄:要有最樸素的生活和最遙遠??的夢想,即使明天天寒地凍,山高水遠,路遠馬亡。 ?? 感謝大家點贊??收藏?指證?? ????????

    2024年02月04日
    瀏覽(26)
  • TF-IDF (BigData, Data Mining)

    TF-IDF (BigData, Data Mining)

    TF-IDF (term frequency–inverse document frequency)是一種用于信息檢索與數(shù)據(jù)挖掘的常用加權(quán)技術(shù)。 TF 是詞頻(Term Frequency), IDF 是逆文本頻率指數(shù)(Inverse Document Frequency)。 TF-IDF是一種統(tǒng)計方法,用以評估一字詞對于一個文件集或一個語料庫中的其中一份文件的重要程度。 字詞的重要

    2024年02月06日
    瀏覽(24)
  • 文本分析-使用jieba庫實現(xiàn)TF-IDF算法提取關(guān)鍵詞

    文本分析-使用jieba庫實現(xiàn)TF-IDF算法提取關(guān)鍵詞

    ???♂? 個人主頁:@艾派森的個人主頁 ???作者簡介:Python學(xué)習(xí)者 ?? 希望大家多多支持,我們一起進步!?? 如果文章對你有幫助的話, 歡迎評論 ??點贊???? 收藏 ??加關(guān)注+ ????????TF-IDF(Term Frequency-Inverse Document Frequency, 詞頻-逆文件頻率)是一種用于資訊檢索與資

    2024年02月11日
    瀏覽(19)
  • 大數(shù)據(jù)課程K15——Spark的TF-IDF計算Term權(quán)重

    文章作者郵箱:yugongshiye@sina.cn? ? ? ? ? ? ? 地址:廣東惠州 ? 了解Spark的TF-IDF算法概念; ??了解Spark的TF-IDF算法定義; ??了解Spark的TF-IDF算法案例; TF-IDF(term frequency–inverse document frequency)是一種用于信息檢索與數(shù)據(jù)挖掘的常用加權(quán)技術(shù)。TF意思是詞頻(Term Frequency),

    2024年02月10日
    瀏覽(22)
  • 【小沐學(xué)NLP】Python實現(xiàn)TF-IDF算法(nltk、sklearn、jieba)

    【小沐學(xué)NLP】Python實現(xiàn)TF-IDF算法(nltk、sklearn、jieba)

    TF-IDF(term frequency–inverse document frequency)是一種用于信息檢索與數(shù)據(jù)挖掘的常用加權(quán)技術(shù)。TF是詞頻(Term Frequency),IDF是逆文本頻率指數(shù)(Inverse Document Frequency)。 TF-IDF是一種統(tǒng)計方法,用以評估一字詞對于一個文件集或一個語料庫中的其中一份文件的重要程度。字詞的重要性隨

    2024年02月03日
    瀏覽(92)
  • 【論文閱讀】BERTopic:采用一個基于類的TF-IDF流程進行神經(jīng)網(wǎng)絡(luò)的主題建模

    【論文閱讀】BERTopic:采用一個基于類的TF-IDF流程進行神經(jīng)網(wǎng)絡(luò)的主題建模

    主題模型對于在文檔的集合中發(fā)現(xiàn)潛在的主題非常有用。近期的研究已經(jīng)展示了主題建模方法作為一個聚類任務(wù)的可行性。 本文展示了BERTopic,它是一個話題模型,它通過對一個基于類的TF-IDF的變體的開發(fā),抽取一致的話題表示。 具體來說,BERTopic采用預(yù)訓(xùn)練的基于transform

    2023年04月08日
    瀏覽(98)
  • 基于TF-IDF+TensorFlow+詞云+LDA 新聞自動文摘推薦系統(tǒng)—深度學(xué)習(xí)算法應(yīng)用(含ipynb源碼)+訓(xùn)練數(shù)據(jù)集

    基于TF-IDF+TensorFlow+詞云+LDA 新聞自動文摘推薦系統(tǒng)—深度學(xué)習(xí)算法應(yīng)用(含ipynb源碼)+訓(xùn)練數(shù)據(jù)集

    本項目運用了TF-IDF提取技術(shù),結(jié)合詞云數(shù)據(jù)可視化、LDA (Latent Dirichlet Allocation)模型訓(xùn)練以及語音轉(zhuǎn)換系統(tǒng),來實現(xiàn)一個基于TensorFlow的文本摘要程序。 首先,我們利用TF-IDF(Term Frequency-Inverse Document Frequency)技術(shù)來提取文本中的。這有助于找出文本中最具代表性的

    2024年02月13日
    瀏覽(20)
  • 【機器學(xué)習(xí)】特征工程 - 文本特征提取TfidfVectorizer

    「作者主頁」: 士別三日wyx 「作者簡介」: CSDN top100、阿里云博客專家、華為云享專家、網(wǎng)絡(luò)安全領(lǐng)域優(yōu)質(zhì)創(chuàng)作者 「推薦專欄」: 對網(wǎng)絡(luò)安全感興趣的小伙伴可以關(guān)注專欄《網(wǎng)絡(luò)安全入門到精通》 對 「文本」 進行特征提取時,一般會用 「單詞」 作為特征,即特征詞。

    2024年02月12日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包