jieba分詞中用到的TF-IDF演算法的介紹
阿新 • • 發佈:2018-12-14
注:利用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