文字聚類 用k means對文字進行聚類

2021-08-10 23:20:03 字數 1351 閱讀 7066

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

"""created on thu nov 16 10:08:52 2017

@author: li-pc

"""import jieba

from sklearn.feature_extraction.text import tfidfvectorizer

from sklearn.cluster import kmeans

defjieba_tokenize

(text):

return jieba.lcut(text)

tfidf_vectorizer = tfidfvectorizer(tokenizer=jieba_tokenize, lowercase=false)

'''tokenizer: 指定分詞函式

lowercase: 在分詞之前將所有的文字轉換成小寫,因為涉及到中文文字處理,

所以最好是false

'''print

"ok3"

text_list = ["今天天氣真好啊啊啊啊", "小明上了清華大學", \

"我今天拿到了google的offer", "清華大學在自然語言處理方面真厲害"]

#需要進行聚類的文字集

print

"ok1"

tfidf_matrix = tfidf_vectorizer.fit_transform(text_list)

num_clusters = 2

km_cluster = kmeans(n_clusters=num_clusters, max_iter=300, n_init=1, \

init='k-means++',n_jobs=1)

print

"ok2"

'''n_clusters: 指定k的值

max_iter: 對於單次初始值計算的最大迭代次數

n_init: 重新選擇初始值的次數

init: 制定初始值選擇的演算法

n_jobs: 程序個數,為-1的時候是指預設跑滿cpu

注意,這個對於單個初始值的計算始終只會使用單程序計算,

平行計算只是針對與不同初始值的計算。比如n_init=10,n_jobs=40,

伺服器上面有20個cpu可以開40個程序,最終只會開10個程序

'''#返回各自文字的所被分配到的類索引

result = km_cluster.fit_predict(tfidf_matrix)

print

"predicting result: ", result

其中,text_list是需要進行聚類的文字,本文中是中文文字,啦啦,貌似還很厲害的樣子。

K means 無監督NLP文字聚類

用kmeans對有標註少量文字做了個無監督分類,效果一般般。原因可能是 1.停用詞不全面 2.kmeans等分類器對於 高緯度向量 分類能力交叉,可以考慮降維再分類 3.部分詞頻在多個型別的文字中重複高頻出現 coding utf 8 created on wed sep 5 13 23 31 20...

K means文字聚類系列(已經完成)

1。如何建立詞袋子模型 2 3。vsm模型 4。從weka獲取聚類中心,完成文字聚類 6。如何使用此開源框架即如何使用preprocess類 前言 園子裡有很多人對聚類演算法感興趣,在google檢索裡比較靠前的有 蛙蛙推薦 蛙蛙教你文字聚類 此版本 用c 語言編寫 以及洞庭散人根據上面這篇蛙蛙博文...

使用sklearn進行K Means文字聚類

k means演算法 中文名字叫做k 均值演算法,演算法的目的是將n個向量分別歸屬到k個中心點裡面去。演算法首先會隨機選擇k個中心向量,然後通過迭代計算以及重新選擇k個中心向量,使得n個向量各自被分配到距離最近的k中心點,並且所有向量距離各自中心點的和最小。步驟一 在輸入資料集裡面隨機選擇k個向量作...