利用大模型和聚类算法找出 Excel 文件中重复或相似度高的数据,并使用 FastAPI 进行封装的详细方案
以下是一个利用大模型和聚类算法找出 Excel 文件中重复或相似度高的数据,并使用 FastAPI 进行封装的详细方案:
方案流程
- 数据读取:从 Excel 文件中读取数据。
- 文本向量化:使用大模型将文本数据转换为向量表示。
- 聚类分析:运用聚类算法对向量进行分组,将相似度高的数据归为一组。
- 结果返回:将聚类结果返回,供人工筛选。
- API 封装:使用 FastAPI 封装上述功能,方便调用。
开发平台
- 编程语言:Python
- 主要库:
pandas
用于数据处理,transformers
用于大模型调用,scikit-learn
用于聚类分析,fastapi
用于构建 API,uvicorn
用于运行服务器。
具体开发情况
下面是实现该功能的代码:
import pandas as pd
from transformers import AutoTokenizer, AutoModel
import torch
from sklearn.cluster import DBSCAN
from fastapi import FastAPI, File, UploadFile
import uvicorn
# 初始化 FastAPI 应用
app = FastAPI()
# 加载预训练的模型和分词器
tokenizer = AutoTokenizer.from_pretrained('bert-base-chinese')
model = AutoModel.from_pretrained('bert-base-chinese')
def get_embeddings(texts):
"""
将文本转换为向量表示
"""
inputs = tokenizer(texts, return_tensors='pt', padding=True, truncation=True)
with torch.no_grad():
outputs = model(**inputs)
embeddings = outputs.last_hidden_state.mean(dim=1).numpy()
return embeddings
def cluster_data(embeddings):
"""
使用 DBSCAN 进行聚类分析
"""
clustering = DBSCAN(eps=0.5, min_samples=2).fit