# -*- 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個向量作...