python实现文本向量化求相似度

​ 工作中,需要在数据仓库找出相似的表目录,甚至碎片化情况,由于命名方式不规范,利用简单的sql文本切分可能不好获取结果,采用了python脚本实现。

问题分析

首先利用python对目录文本向量化,

然后计算余弦相似度,

最后调参获取相似目录清单。

问题处理

# -*- coding:utf-8 -*-
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import jieba
import numpy as np
import pandas as pd

# 1.读取数据
documents = [
     '上海市经信局2025信创项目',
     '上海市教育局2025信创项目',
     '市人社局2025信创项目',
     '市中小学生教育信息表',
     '市高中学生教育信息表'
]
# 2.数据处理
# jieba进行分词
texts_cut = [list(jieba.cut(text)) for text in documents]
getDocuments = []

for text in texts_cut:
    strOne = ''
    for i in range(len(text)):
        strOne += text[i] + ' '
    getDocuments.append(strOne)
# 生成向量化矩阵
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(getDocuments)

# 计算余弦相似度
resList = []
for i in range(len(getDocuments)):
    similarity_scores = cosine_similarity(tfidf_matrix[i], tfidf_matrix)
    rowList = []
    for j in range(similarity_scores.shape[1]):
        if similarity_scores[0][j] >= 0.4:
            rowList.append(documents[j])
    resList.append(rowList)

# 结果去重
res = list(set(tuple(sorted(sub)) for sub in resList))
print(res)

# 3.保存结果
pd.DataFrame(res).to_excel('./output.xlsx')

结果呈现

在这里插入图片描述

文章借鉴

python实战(三)——文本向量化/文本表示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值