文本分析--關鍵詞獲取(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()
發佈了233 篇原創文章 · 獲贊 800 · 訪問量 97萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章