數據挖掘——關鍵字提取—sklearn的實際應用
阿新 • • 發佈:2018-09-26
輸出 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的實際應用