1. 程式人生 > >jieba分詞中用到的TF-IDF演算法的介紹

jieba分詞中用到的TF-IDF演算法的介紹

注:利用jieba分詞進行關鍵詞抽取(選擇TF-IDF演算法)

這裡介紹基於TF-IDF演算法的關鍵詞抽取(乾貨|詳解自然語言處理之TF-IDF模型和python實現), 只有關鍵詞抽取並且進行詞向量化之後,才好進行下一步的文字分析,可以說這一步是自然語言處理技術中文字處理最基礎的一步。

jieba分詞中含有analyse模組,在進行關鍵詞提取時可以使用下列程式碼

 

#練習使用scikit-learn包計算TF-IDF,可以見(乾貨|詳解自然語言處理之TF-IDF模型和python實現)

from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer

def tfidf_keywords():
 # 00、讀取檔案,一行就是一個文件,將所有文件輸出到一個list中
    corpus = []
    for line in open('data/fenci_predict.txt', 'r').readlines():
        corpus.append(line)

  #方法一
    #TfidfVectorizer
    vector=TfidfVectorizer( )#將停詞引入模型,tfidf=TfidfVectorizer(token_pattern=r"(?u)\b\w\w+\b",stop_words=stopword)
    tfidf=vector.fit_transform(corpus)#模型向量化
    ###每次詞和TF-IDF的對應關係
    word=vector.get_feature_names()#獲取詞帶模型中的所有詞
    weightlist=tfidf.toarray()#將tf-idf矩陣抽取出來,元素a[i][j]表示j詞在i類文字中的tf-idf權重  
     # 儲存特徵文字
    print('len(word)',len(word)) 
    with open("data/fenci_predict_feature.txt",'w') as f:
       for j in range(len(word)):
          f.write((word[j]).encode('utf-8')+' ')
#方法二
    # 01、構建詞頻矩陣,將文字中的詞語轉換成詞頻矩陣
    vectorizer = CountVectorizer()
    # a[i][j]:表示j詞在第i個文字中的詞頻
    X = vectorizer.fit_transform(corpus)
    print X.shape  # 詞頻矩陣
 
    # 02、構建TFIDF權值
    transformer = TfidfTransformer()
    # 計算tfidf值
    tfidf = transformer.fit_transform(X)
 
    # 03、獲取詞袋模型中的關鍵詞
    word = vectorizer.get_feature_names()
 
tfidf_keywords()

 

補充上一篇:

jieba分詞並行分詞

jieba分詞器如果是對於大的文字進行分詞會比較慢,因此可以使用jieba自帶的並行分詞功能進行分詞,其採用的原理是將目標文字按照行分割後,把各行文字分配到多個Python程序並行分詞,然後歸併結果,從而獲得分詞速度可觀的提升。

該過程需要基於python自帶的multiprocessing模組,而且目前暫時不支援windows. 在使用的時候,只需要在使用jieba分詞匯入包的時候同時加上下面任意一個命令:

結巴中文分詞文件介紹:https://github.com/fxsjy/jieba