Python sklearn對文本數(shù)據(jù)進(jìn)行特征化提取
文本特征提取
作用:對文本數(shù)據(jù)進(jìn)行特征化
(句子、短語、單詞、字母)一般選用單詞作為特征值
方法一:CountVectorizer
sklearn.feature_extraction.text.CountVectorizer(stop_words=[])
返回詞頻矩陣(統(tǒng)計(jì)每個樣本特征詞出現(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、實(shí)例化一個轉(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),則認(rè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強(qiáng)轉(zhuǎn)成列表
word=list(jieba.cut(text))
#轉(zhuǎn)成字符串
words=" ".join(word)
return words
def tfidf_demo():
data = ["今天很殘酷,明天更殘酷,后天會很美好,但絕大多數(shù)人都死在明天晚上,卻見不到后天的太陽,所以我們干什么都要堅(jiān)持",
"注重自己的名聲,努力工作、與人為善、遵守諾言,這樣對你們的事業(yè)非常有幫助",
"服務(wù)是全世界最貴的產(chǎn)品,所以最佳的服務(wù)就是不要服務(wù),最好的服務(wù)就是不需要服務(wù)"]
data_new = []
# 將中文文本進(jìn)行分詞
for sentence in data:
data_new.append(cut_word(sentence))
# 1、實(shí)例化一個轉(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ù)進(jìn)行特征化提取的文章就介紹到這了,更多相關(guān)Python sklearn文本特征提取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python輸入正負(fù)10進(jìn)制,轉(zhuǎn)4位16進(jìn)制問題
這篇文章主要介紹了Python輸入正負(fù)10進(jìn)制,轉(zhuǎn)4位16進(jìn)制問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
spark: RDD與DataFrame之間的相互轉(zhuǎn)換方法
今天小編就為大家分享一篇spark: RDD與DataFrame之間的相互轉(zhuǎn)換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
一篇文章快速理解python中的yield關(guān)鍵字
Python中的yield關(guān)鍵字可以讓函數(shù)變成生成器,產(chǎn)生一個值后暫停,下次調(diào)用時從上次停下的地方繼續(xù)執(zhí)行,從而節(jié)省內(nèi)存并提高效率,這篇文章主要介紹了python中yield關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下2024-11-11
Pycharm 如何設(shè)置HTML文件自動補(bǔ)全代碼或標(biāo)簽
這篇文章主要介紹了Pycharm 如何設(shè)置HTML文件自動補(bǔ)全代碼或標(biāo)簽,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
詳解Python 模擬實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模式的實(shí)例
這篇文章主要介紹了詳解Python 模擬實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模式的實(shí)例的相關(guān)資料,這里使用了線程知識,隊(duì)列知識及循環(huán)的知識,需要的朋友可以參考下2017-08-08

