首頁 >後端開發 >Python教學 >Python sklearn怎麼對文字資料進行特徵化擷取

Python sklearn怎麼對文字資料進行特徵化擷取

WBOY
WBOY轉載
2023-05-17 10:55:411456瀏覽

文字特徵提取

作用:將文字資料進行特徵化

(句子、片語、單字、字母)一般選用單字作為特徵值

方法一: CountVectorizer

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

傳回詞頻矩陣(統計每個樣本特徵字出現的數量)

CountVectorizer.fit_transform(X)

X:文字或包含文字字串的可迭代物件

傳回值:傳回sparse矩陣

#CountVectorizer.inverse_transform(X)

X:array陣列或sparse矩陣

傳回值:轉換之前的資料格式

#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、实例化一个转换器类
    transfer=CountVectorizer()
    #2、调用fit_transform()
    result=transfer.fit_transform(data)
    print("result:\n",result.toarray())
    print("特征名字:\n", transfer.get_feature_names())
    return None

方法二:TfidfVectorizer

#關鍵字:在某一個類別的文章中,出現的次數很多,但是在其他類別的文章中出現的次數很少稱為關鍵字

Tf-idf文本特徵提取

①TF-IDF的主要思想是:如果某個字或片語在一篇文章中出現的機率高,並且在其他文章中很少出現,則認為此字或片語具有很好的類別區分能力,適合用來分類。

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

公式

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

②逆向文件頻率(inverse document frequency,idf)是一個字詞普遍重要性的測量。要計算某個字詞的idf,需要將包含該字詞的檔案數目除以總檔案數目,並使用以10為底的對數

tfidf = tf * idf

#輸出的結果可以理解為重要程度

API

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

傳回字的權重矩陣

TfidfVectorizer.fit_transform(X)

X:文字或包含文字字串的可迭代物件

#傳回值:傳回sparse矩陣

TfidfVectorizer.inverse_transform(X)

X:array陣列或sparse矩陣

#回傳值:轉換前資料格式

TfidfVectorizer.get_feature_names()

#傳回值:單字清單

中文分詞特徵擷取

from sklearn.feature_extraction.text import TfidfVectorizer
import jieba
def cut_word(text):
    #中文分词
    #jieba.cut(text)返回的是生成器对象,用list强转成列表
    word=list(jieba.cut(text))
    #转成字符串
    words=" ".join(word)
    return words
def tfidf_demo():
    data = ["今天很残酷,明天更残酷,后天会很美好,但绝大多数人都死在明天晚上,却见不到后天的太阳,所以我们干什么都要坚持",
            "注重自己的名声,努力工作、与人为善、遵守诺言,这样对你们的事业非常有帮助",
            "服务是全世界最贵的产品,所以最佳的服务就是不要服务,最好的服务就是不需要服务"]
    data_new = []
    # 将中文文本进行分词
    for sentence in data:
        data_new.append(cut_word(sentence))
    # 1、实例化一个转换器类
    transfer = TfidfVectorizer()
    # 2、调用fit_transform()
    result = transfer.fit_transform(data_new)  # 得到词频矩阵 是一个sparse矩阵
    print("result:\n", result.toarray())  # 将sparse矩阵转化为二维数组
    print("特征名字:\n", transfer.get_feature_names())
    return None

以上是Python sklearn怎麼對文字資料進行特徵化擷取的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除