溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python?sklearn怎么對文本數(shù)據(jù)進行特征化提取

發(fā)布時間:2023-04-25 10:08:09 來源:億速云 閱讀:112 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了Python sklearn怎么對文本數(shù)據(jù)進行特征化提取的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Python sklearn怎么對文本數(shù)據(jù)進行特征化提取文章都會有所收獲,下面我們一起來看看吧。

文本特征提取

作用:對文本數(shù)據(jù)進行特征化

(句子、短語、單詞、字母)一般選用單詞作為特征值

方法一:CountVectorizer

sklearn.feature_extraction.text.CountVectorizer(stop_words=[])

返回詞頻矩陣(統(tǒng)計每個樣本特征詞出現(xiàn)的個數(shù))

CountVectorizer.fit_transform(X)

X:文本或者包含文本字符串的可迭代對象

返回值:返回sparse矩陣

CountVectorizer.inverse_transform(X)

X:array數(shù)組或者sparse矩陣

返回值:轉(zhuǎn)換之前的數(shù)據(jù)格式

CountVectorizer.get_feature_names()

返回值:單詞列表

代碼展示:

from sklearn.feature_extraction.text import CountVectorizer
def count_demo():
    #文本特征抽取
    data=["life is short, i like like python","life is too long,i dislike python"]
    #1、實例化一個轉(zhuǎn)換器類
    transfer=CountVectorizer()
    #2、調(diào)用fit_transform()
    result=transfer.fit_transform(data)
    print("result:\n",result.toarray())
    print("特征名字:\n", transfer.get_feature_names())
    return None

方法二:TfidfVectorizer

關(guān)鍵詞:在某一個類別的文章中,出現(xiàn)的次數(shù)很多,但是在其他類別的文章中出現(xiàn)的次數(shù)很少稱為關(guān)鍵詞

Tf-idf文本特征提取

①TF-IDF的主要思想是:如果某個詞或短語在一篇文章中出現(xiàn)的概率高,并且在其他文章中很少出現(xiàn),則認為此詞或者短語具有很好的類別區(qū)分能力,適合用來分類。

②TF-IDF作用:用以評估一字詞對于一個文件集或一個語料庫中的其中一份文件的重要程度。

公式

①詞頻(term frequency,tf)指的是某一個給定的詞語在該文件中出現(xiàn)的頻率

②逆向文檔頻率(inverse document frequency,idf)是一個詞語普遍重要性的度量。某一特定詞語的idf,可以由總文件數(shù)目除以包含該詞語之文件數(shù)目,再將得到的商取以10為底的對數(shù)得到

tfidf = tf * idf

輸出的結(jié)果可以理解為重要程度

API

sklearn.feature_extraction.text.TfidfVectorizer(stop_words=None,...)

返回詞的權(quán)重矩陣

TfidfVectorizer.fit_transform(X)

X:文本或者包含文本字符串的可迭代對象

返回值:返回sparse矩陣

TfidfVectorizer.inverse_transform(X)

X:array數(shù)組或者sparse矩陣

返回值:轉(zhuǎn)換之前數(shù)據(jù)格式

TfidfVectorizer.get_feature_names()

返回值:單詞列表

中文分詞+特征提取

from sklearn.feature_extraction.text import TfidfVectorizer
import jieba
def cut_word(text):
    #中文分詞
    #jieba.cut(text)返回的是生成器對象,用list強轉(zhuǎn)成列表
    word=list(jieba.cut(text))
    #轉(zhuǎn)成字符串
    words=" ".join(word)
    return words
def tfidf_demo():
    data = ["今天很殘酷,明天更殘酷,后天會很美好,但絕大多數(shù)人都死在明天晚上,卻見不到后天的太陽,所以我們干什么都要堅持",
            "注重自己的名聲,努力工作、與人為善、遵守諾言,這樣對你們的事業(yè)非常有幫助",
            "服務(wù)是全世界最貴的產(chǎn)品,所以最佳的服務(wù)就是不要服務(wù),最好的服務(wù)就是不需要服務(wù)"]
    data_new = []
    # 將中文文本進行分詞
    for sentence in data:
        data_new.append(cut_word(sentence))
    # 1、實例化一個轉(zhuǎn)換器類
    transfer = TfidfVectorizer()
    # 2、調(diào)用fit_transform()
    result = transfer.fit_transform(data_new)  # 得到詞頻矩陣 是一個sparse矩陣
    print("result:\n", result.toarray())  # 將sparse矩陣轉(zhuǎn)化為二維數(shù)組
    print("特征名字:\n", transfer.get_feature_names())
    return None

關(guān)于“Python sklearn怎么對文本數(shù)據(jù)進行特征化提取”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Python sklearn怎么對文本數(shù)據(jù)進行特征化提取”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI