给我下面的代码写上注释,并解释他计算相似的原理import pandas as pd import jieba from gensim import corpora, models, similarities # 读取Excel表格数据 df = pd.read_excel(r'D:\pycharm_project\excel_column_similar\cosmic核减率分析\excel_test_clean.xlsx') # 使用jieba进行分词,并去除停用词 stop_words = {'的', '了', '是', '我', '你', '他', '她', '(', ')'} texts = [] for text in df['子过程描述']: words = [word for word in jieba.cut(text) if word not in stop_words] texts.append(words) print(texts) # 构建词典和文档向量 dictionary = corpora.Dictionary(texts) corpus = [dictionary.doc2bow(text) for text in texts] print(corpus) # 计算TF-IDF特征向量 tfidf = models.TfidfModel(corpus) corpus_tfidf = tfidf[corpus] print(tfidf) print(corpus_tfidf) # 计算相似度 index = similarities.MatrixSimilarity(corpus_tfidf) similarity_matrix = index[corpus_tfidf] print(index) print(similarity_matrix.shape) # 标注相似度大于0.75的单元格 for i in range(similarity_matrix.shape[0]): for j in range(i + 1, similarity_matrix.shape[1]): if similarity_matrix[i, j] > 0.75: df.at[i, '子过程描述'] = str(df.at[i, '子过程描述']) + ' (' + str(round(similarity_matrix[i, j], 2)) + ')' df.at[j, '子过程描述'] = str(df.at[j, '子过程描述']) + ' (' + str(round(similarity_matrix[i, j], 2)) + ')' # 保存结果到Excel表格 df.to_excel(r'example_similarity.xlsx', index=False)
时间: 2024-01-30 16:03:15 浏览: 116
这段代码的作用是计算Excel表格中子过程描述列的相似度,并将相似度大于0.75的单元格标注出来,最终将结果保存到另一个Excel表格中。
具体实现的步骤如下:
1. 导入需要用到的库:pandas用于数据读取和处理,jieba用于中文分词,gensim用于文本相似度计算。
2. 使用pandas读取Excel表格中的数据,保存到dataframe对象df中。
3. 使用jieba对子过程描述列进行分词,并去除停用词。
4. 使用gensim中的Dictionary类构建词典,并将分词后的文本转换为文档向量。
5. 使用TF-IDF模型计算词语的权重,并得到TF-IDF特征向量。
6. 使用MatrixSimilarity计算文本之间的相似度,并保存到相似度矩阵中。
7. 遍历相似度矩阵,将相似度大于0.75的单元格标注出来。
8. 将结果保存到新的Excel表格中。
阅读全文