from sklearn.feature_extraction.text import CountVectorizer from sklearn.metrics.pairwise import euclidean_distances from sklearn.feature_extraction.text import TfidfVectorizer import jieba def seg_word(sentence): """对句子分词""" seg_list = jieba.cut(sentence) seg_result = [] for w in seg_list: seg_result.append(w) return seg_result doc1='空气质量良轻度污染空气质量指数125首要污染物为细颗粒物' doc2='美国环境保护署估计空气在室内污染的严重程度可能比室外污染高8倍' doc3='天然矿泉水是指从地下深处自然涌出的或钻井采集的含有一定量的矿物质微量元素或其他成分' # 分词 seg1=seg_word(doc1) seg2=seg_word(doc2) seg3=seg_word(doc3) corpus=[] #将分词结果加入语料库 corpus.append(' '.join(seg1)) corpus.append(' '.join(seg2)) corpus.append(' '.join(seg3)) tfidf_vectorizer = TfidfVectorizer() tfidf_count = tfidf_vectorizer.fit_transform(corpus).todense() # 打印所有的词汇,会为每个词进行编号 print(tfidf_vectorizer.vocabulary_) # 打印每个文档的向量表示形式,索引对应单词的编号,值为单词的tfidf值 print(tfidf_vectorizer.fit_transform(corpus).todense()) for x, y in [[0, 1],[0,2]]: # 计算两个向量之间的距离(欧氏距离) dist = euclidean_distances(tfidf_count[x], tfidf_count[y]) print('文档{}与文档{}的距离{}'.format(x, y, dist))
参考:http://blog.csdn.net/xw_classmate/article/details/51178923