1. 程式人生 > >文字分析--關鍵詞獲取(jieba分詞器,TF-IDF模型)

文字分析--關鍵詞獲取(jieba分詞器,TF-IDF模型)

關鍵詞獲取可以通過兩種方式來獲取:
      1、在使用jieba分詞對文字進行處理之後,可以通過統計詞頻來獲取關鍵詞:jieba.analyse.extract_tags(news, topK=10),獲取詞頻在前10的作為關鍵詞。
      2、使用TF-IDF權重來進行關鍵詞獲取,首先需要對文字構建詞頻矩陣,其次才能使用向量求TF-IDF值。

# -*-coding:utf-8-*-

import uniout  # 編碼格式,解決中文輸出亂碼問題
import jieba.analyse
from sklearn import feature_extraction
from
sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import CountVectorizer """ TF-IDF權重: 1、CountVectorizer 構建詞頻矩陣 2、TfidfTransformer 構建tfidf權值計算 3、文字的關鍵字 4、對應的tfidf矩陣 """ # 讀取檔案 def read_news(): news = open('news.txt'
).read() return news # jieba分詞器通過詞頻獲取關鍵詞 def jieba_keywords(news): keywords = jieba.analyse.extract_tags(news, topK=10) print keywords def tfidf_keywords(): # 00、讀取檔案,一行就是一個文件,將所有文件輸出到一個list中 corpus = [] for line in open('news.txt', 'r').readlines(): corpus.append(line) # 01、構建詞頻矩陣,將文字中的詞語轉換成詞頻矩陣
vectorizer = CountVectorizer() # a[i][j]:表示j詞在第i個文字中的詞頻 X = vectorizer.fit_transform(corpus) print X # 詞頻矩陣 # 02、構建TFIDF權值 transformer = TfidfTransformer() # 計算tfidf值 tfidf = transformer.fit_transform(X) # 03、獲取詞袋模型中的關鍵詞 word = vectorizer.get_feature_names() # tfidf矩陣 weight = tfidf.toarray() # 列印特徵文字 print len(word) for j in range(len(word)): print word[j] # 列印權重 for i in range(len(weight)): for j in range(len(word)): print weight[i][j] # print '\n' if __name__ == '__main__': news = read_news() jieba_keywords(news) tfidf_keywords()