利用sklearn计算文本相似性,并将文本之间的相似度矩阵保存到文件当中。这里提取文本TF-IDF特征值进行文本的相似性计算。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #!/usr/bin/python # -*- coding: utf-8 -*- import numpy import os import sys from sklearn import feature_extraction from sklearn.feature_extraction.text import TfidfTransformer from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer reload (sys) #sys.setdefaultencoding('utf8')了 网易 杭研 大厦","小明 硕士 毕业 与 中国 科学院","我 爱 北京 天安门"] trainfile = open ( "C:\\Users\\hd\\Desktop\\docs.txt" , "r" ) #不同的documents用换行符隔开 traincorpus = trainfile.readlines() #corpus=["我 来到 北京 清华大学","我 他 来到 trainfile.close() corpus = traincorpus; vectorizer = CountVectorizer() #该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频 tfidf_vectorizer = TfidfVectorizer(max_df = 0.95 , min_df = 2 , #max_features=n_features, stop_words = 'english' ) transformer = TfidfTransformer() #该类会统计每个词语的tf-idf权值 tfidf = transformer.fit_transform(tfidf_vectorizer.fit_transform(corpus)) #第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵 word = tfidf_vectorizer.get_feature_names() #获取词袋模型中的所有词语 weight = tfidf.toarray() #将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重 f = open ( "C:\\Users\\hd\\Desktop\\tif.txt" , "w+" ) for i in range ( len (weight)): #打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重 # print u"-------这里输出第",i,u"类文本的词语tf-idf权重------" f.write( str (i + 1 ) + "\t" ) for j in range ( len (word)): if (weight[i][j]> 0 ): f.write( str (j + 1 ) + ":" + str (weight[i][j]) + " " ) f.write( "\n" ) print i f.close() f = open ( "C:\\Users\\hd\\Desktop\\dictionary.txt" , "w+" ) for i in range ( len (word)): f.write( str (i) + "\t" + word[i].encode( "utf-8" ) + "\n" ) f.close() SimMatrix = (tfidf * tfidf.T).A print SimMatrix[ 1 , 3 ] #"第一篇与第4篇的相似度" numpy.savetxt( "C:\\Users\\hd\\Desktop\\SimMatrix.csv" , SimMatrix, delimiter = "," ) #保存相似度矩阵 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧