(自己觉得以前写的不够好,20160721重新做了修改)
写在最前面的话,最好的学习材料是官方文档及API:
http://radimrehurek.com/gensim/tutorial.html
http://radimrehurek.com/gensim/apiref.html
以下内空有部分是出自官方文档。
使用TFIDF/LDA来对中文文档做主题分类,TFIDF scikit-learn也有实现,中文的先做分词处理,然后生成向量,根据向量去做主题聚类。
scikit-learn官方文档为:
http://scikit-learn.org/stable/modules/feature_extraction.html#text-feature-extraction
tfidf是这样一个意思,一个词的重要性和他在当前文档中出现的次数成正比,和所有文档中出现的次数成反比。
scikit-learn提供了tfidf的实现,我在这里分两种情况来说明,
1.根据原始语料生成生tfidf的vocabulary和权重
tfidf_vectorizer = TfidfVectorizer()
real_test_raw = ['丈夫他抢劫杀人罪了跑路的话要判多少年','丈夫借名买车离婚时能否要求分割','妻子离婚时丈夫欠的赌债是否要偿还?','夫妻一方下落不明 离婚请求获支持']
real_documents = []
for item_text in real_test_raw:
item_str = word_process.word_cut(item_text)
real_documents.append(item_str)
real_vec = tfidf_vectorizer.fit_transform(real_documents)
logging.info(tfidf_vectorizer.idf_) #特征对应的权重
logging.info(tfidf_vectorizer.get_feature_names())#特征词
logging.info(real_vec.toarray()) #上面四句话对应的向量表示
代码解释:
把对应的中文语料先分词,然后转换成向量表示的形式,logging对应的信息如下:
[ 1.22314355 1.91629073 1.91629073 1.91629073 1.91629073 1.91629073 1.91629073 1.91629073 1.91629073 1.91629073 1.22314355 1.91629073
1.91629073 1.91629073 1.91629073 1.91629073]
['丈夫', '买车', '借名', '偿还', '分割', '夫妻', '妻子', '抢劫', '支持', '是否', '离婚', '能否', '要判', '要求', '请求', '赌债']
[[ 0.41137791 0. 0. 0. 0. 0. 0. 0.64450299 0. 0. 0. 0. 0.64450299 0. 0. 0. ]
[ 0.2646963 0.4146979 0.4146979 0. 0.4146979 0. 0. 0. 0. 0. 0.2646963 0.4146979 0. 0.4146979 0. 0. ]
[ 0.29088811 0. 0. 0.45573244 0. 0. 0.45573244 0. 0. 0.45573