1. 程式人生 > >數據挖掘——關鍵字提取—sklearn的實際應用

數據挖掘——關鍵字提取—sklearn的實際應用

輸出 xtra dft 關鍵字 nump numpy .data join span

前面的步驟都相似

#構建語料庫

#使用jieba包進行分詞,並將分詞結果用空格分隔後再傳回分詞列表

zh = re.compile(u[\u4e00-\u9fa5]+)    #中文的正則表達式
for seg in segs:
        if zh.search(seg):  #只匹配中文分詞
            segments.append(seg)
    filepath.append(filePath)
 #使用空格將符合要求的分詞隔開,然後放回語料庫中,而不是得到分詞和路徑的矩陣
    row[fileContent] =  .join(segments) 

#導入sklearn包中計算TF-IDF的模塊,可以將停用詞以參數的形式傳入CountVectorizer模塊

得到numpy類的數據結構,需要進行轉換

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
skcount = CountVectorizer(
        stop_words=list(stopwords[stopword].values),
        min_df=0,
        token_pattern
=r\b\w+\b) #分詞的正則表達式 text = skcount.fit_transform(corpos[fileContent]) trans = TfidfTransformer() tfidf = trans.fit_transform(text)

#將得到的TF-IDF結構轉換成數組的形式,並得到關鍵字numpy類的數據結構

#按行轉換成數組,並排序,取tfidf值前5的元素的位置
sort = np.argsort(tfidf.toarray(),axis=1)[:,-5:] 
#獲取該位置所對應的列名,即分詞關鍵字
names = skcount.get_feature_names() 
keywords 
= pd.Index(names)[sort].values #非數組

#將關鍵字按數據框的格式進行輸出,得到最終結果

tagDF = pd.DataFrame({
        文件路徑:corpos.filePath,
        文本內容:corpos.fileContent,
        關鍵字1:keywords[:,0], 
        關鍵字2:keywords[:,1],
        關鍵字3:keywords[:,2],
        關鍵字4:keywords[:,3],
        關鍵字5:keywords[:,4]})

數據挖掘——關鍵字提取—sklearn的實際應用