數據挖掘——關鍵字提取—基於sklearn包實現

 

 

什麼是sklearn?git

  sklearn全名是Scikit-Learn,是基於Python的機器學習模塊,基於BSD開源許可證,官方網址是:http://scikit-learn.org/stable正則表達式

  Scikit-Learn的數據結構基於Numpy和Pandas模塊,數據計算基於Scipy模塊,數據可視化基於Matplotlib模塊。算法

  Scikit-Learn的基本功能:數組

  分類;迴歸;聚類;數據降維;模型選擇;數據預處理。網絡

  Scikit-Learn將具體的機器學習分爲3個步驟:數據結構

  數據準備與預處理;模型選擇與訓練;模型驗證和參數調優。app

  Scikit-Learn自帶一些經典的數據集,好比用於分類的iris和digits數據集,還有用於迴歸分析的boston house prices數據集。該數據集是一種字典結構,數據存儲在.data成員中,輸出標籤存儲在.target成員中。Scikit-Learn創建在Scipy之上,提供了一套經常使用的機器學習算法,經過一個統一的接口來使用,Scikit-Learn有助於在數據集上實現流行的算法。 Scikit-Learn還有一些庫,好比:用於天然語言處理的Nltk、用於網站數據抓取的Scrappy、用於網絡挖掘的Pattern、用於深度學習的Theano等。 機器學習

  sklearn實現分詞與關鍵字提取的原理:sklearn進行TF-IDF分詞的規則是基於空格和標點符號對原文進行分割。函數

  sklearn進行文本處理的步驟:學習

from sklearn.feature_extraction.text import CountVectorizer

#例子
example1 = ['咱們 還 沒有 到 家',
            '大家 什麼 時候 回來',
            '他 想 吃 肉']
gjz_count = CountVectorizer()
textvecot = gjz_count.fit_transform(example1) #獲得文檔向量化的矩陣內容

textvecot.todense() #經過todense方法獲取向量化矩陣,數據結構爲numpy.matrixlib.defmatrix.matrix
gjz_count.vocabulary_ #查看矩陣每一個列對應的分詞,數據結構爲字典
type(gjz_count) #數據結構爲sklearn.feature_extraction.text.CountVectorizer
type(textvecot.todense()) #數據結構爲numpy.matrixlib.defmatrix.matrix
type(gjz_count.vocabulary_) #數據結構爲字典
#原理就是經過ID查詢單詞或經過單詞查詢ID

結果中將長度爲1的分詞全都剔除了,因此在CountVectorizer函數的構造過程當中須要設置初始化參數

gjz_count = CountVectorizer(
        min_df=0, #設置分詞最小長度爲0 
        token_pattern=r'\b\w+\b') #分詞的正則表達式
#進行TF-IDF的運算,導入sklearn包中的TF-IDF的計算方法,直接調用
from sklearn.feature_extraction.text import TfidfTransformer 
transformer = TfidfTransformer()
tfidf = transformer.fit_transform(textvecot) #傳入獲得的字符串數組,獲得tf-idf矩陣
#將tfidf數據結構轉爲數據框矩陣
import pandas as pd 
tfidfDF = pd.DataFrame(tfidf.toarray()) #轉換爲數據框 
tfidfDF.columns
tfidfDF.columns = gjz_count.get_feature_names() #將數據框的列名替換成分詞
##獲得列名爲分詞,行爲tf-idf值的矩陣

  對分詞的tf-idf值排序後,直接輸出關鍵字

import numpy as np
tfidf_sorted = np.argsort(tfidf.toarray(),axis=1)[:,-2:] #對全部行排序,取tf-idf值最大的2個分詞的列名
tfidfDF.columns[tfidf_sorted].values #根據列名獲得對應關鍵字
相關文章
相關標籤/搜索