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矩陣
返回值:轉換之前的數(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、實例化一個轉換器類
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
關鍵詞:在某一個類別的文章中,出現(xiàn)的次數(shù)很多,但是在其他類別的文章中出現(xiàn)的次數(shù)很少稱為關鍵詞
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
輸出的結果可以理解為重要程度
API
sklearn.feature_extraction.text.TfidfVectorizer(stop_words=None,...)
返回詞的權重矩陣
TfidfVectorizer.fit_transform(X)
X:文本或者包含文本字符串的可迭代對象
返回值:返回sparse矩陣
TfidfVectorizer.inverse_transform(X)
X:array數(shù)組或者sparse矩陣
返回值:轉換之前數(shù)據(jù)格式
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 = ["今天很殘酷,明天更殘酷,后天會很美好,但絕大多數(shù)人都死在明天晚上,卻見不到后天的太陽,所以我們干什么都要堅持",
"注重自己的名聲,努力工作、與人為善、遵守諾言,這樣對你們的事業(yè)非常有幫助",
"服務是全世界最貴的產(chǎn)品,所以最佳的服務就是不要服務,最好的服務就是不需要服務"]
data_new = []
# 將中文文本進行分詞
for sentence in data:
data_new.append(cut_word(sentence))
# 1、實例化一個轉換器類
transfer = TfidfVectorizer()
# 2、調(diào)用fit_transform()
result = transfer.fit_transform(data_new) # 得到詞頻矩陣 是一個sparse矩陣
print("result:\n", result.toarray()) # 將sparse矩陣轉化為二維數(shù)組
print("特征名字:\n", transfer.get_feature_names())
return None
到此這篇關于Python sklearn對文本數(shù)據(jù)進行特征化提取的文章就介紹到這了,更多相關Python sklearn文本特征提取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Python 模擬實現(xiàn)生產(chǎn)者消費者模式的實例
這篇文章主要介紹了詳解Python 模擬實現(xiàn)生產(chǎn)者消費者模式的實例的相關資料,這里使用了線程知識,隊列知識及循環(huán)的知識,需要的朋友可以參考下2017-08-08

