news 2026/4/3 16:14:09

从零开始用Python进行微信公众号数据采集的5大实战方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零开始用Python进行微信公众号数据采集的5大实战方法

从零开始用Python进行微信公众号数据采集的5大实战方法

【免费下载链接】xhs基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/项目地址: https://gitcode.com/gh_mirrors/xh/xhs

在数字化营销时代,微信公众号作为企业品牌传播和用户互动的核心阵地,其数据价值日益凸显。运营者常常面临"如何精准获取竞品公众号的推文数据?""怎样突破历史文章爬取限制?""如何从海量评论中挖掘用户真实需求?"等实际业务问题。本文将通过5大实战方法,带您从零开始掌握Python微信公众号数据采集技术,构建完整的数据驱动运营体系。

一、构建公众号数据采集基础框架

当您需要监控行业动态或分析竞品运营策略时,首先要解决的是如何建立稳定的公众号数据采集通道。目前主流的技术方案分为两类:基于微信公众平台API的官方渠道和基于网页爬虫的非官方渠道,两者各有优劣。

技术选型决策树

需求场景推荐方案优势限制
合规性要求高官方API数据权威、稳定性强接口权限严格、数据范围有限
需完整历史数据网页爬虫数据全面、无时间限制反爬风险高、维护成本大
多账号集中管理第三方平台接口开发效率高存在数据泄露风险

基础实现:基于wechatpy的官方API对接

# 安装依赖库 # pip install wechatpy requests from wechatpy import WeChatClient from wechatpy.client.api import WeChatMaterial, WeChatUser # 初始化客户端 client = WeChatClient( appid="your_appid", secret="your_appsecret" ) # 获取公众号文章列表 def get_official_articles(offset=0, count=20): """ 通过官方API获取已授权公众号的文章列表 :param offset: 偏移量,用于分页 :param count: 每次获取数量,最大20 :return: 文章列表数据 """ try: response = client.material.batchget_material( type="news", offset=offset, count=count ) return response.get("item", []) except Exception as e: print(f"API请求失败: {str(e)}") return [] # 使用示例 articles = get_official_articles(count=10) print(f"获取到{len(articles)}篇公众号文章") for article in articles: print(f"标题: {article['content']['news_item'][0]['title']}, 发布时间: {article['update_time']}")

进阶优化:构建请求重试与错误处理机制

import time from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry def create_retry_session(total=3, backoff_factor=1, status_forcelist=(500, 502, 503, 504)): """创建带重试机制的请求会话""" session = requests.Session() retry = Retry( total=total, read=total, connect=total, backoff_factor=backoff_factor, status_forcelist=status_forcelist, ) adapter = HTTPAdapter(max_retries=retry) session.mount("http://", adapter) session.mount("https://", adapter) return session # 带限流的API调用装饰器 def rate_limited(max_calls=10, period=60): def decorator(func): calls = [] def wrapper(*args, **kwargs): now = time.time() # 清除时间窗口外的调用记录 calls[:] = [t for t in calls if t > now - period] if len(calls) >= max_calls: sleep_time = period - (now - calls[0]) time.sleep(sleep_time + 1) # 额外等待1秒确保安全 calls.append(time.time()) return func(*args, **kwargs) return wrapper return decorator @rate_limited(max_calls=10, period=60) # 限制每分钟最多10次调用 def safe_get_articles(offset=0, count=20): """带限流和重试机制的安全文章获取函数""" session = create_retry_session() # 实现具体请求逻辑... return []

数据采集合规提示

使用官方API时,需遵守《微信公众平台服务协议》,仅可采集已授权公众号的数据。个人开发者可通过"微信公众平台-开发-基本配置"申请接口权限,企业开发者需完成微信认证并申请相应接口权限。所有数据采集行为不得侵犯用户隐私,不得用于商业竞争或其他非法用途。

二、突破公众号历史数据采集限制

许多运营者面临这样的困境:想要分析某个公众号的历史推文数据,却发现官方API只能获取最近5条,而第三方平台又收费高昂。如何突破这一限制,获取完整的历史文章数据呢?

反爬策略对比表

反爬策略实现难度效果风险适用场景
User-Agent轮换基础反爬绕过
IP代理池高频次采集
模拟登录 + Cookie池需要登录的场景
分布式采集大规模数据采集
接口参数加密破解极高极高深度反爬场景

基础实现:基于Selenium的动态页面爬取

# 安装依赖 # pip install selenium webdriver-manager beautifulsoup4 from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from bs4 import BeautifulSoup import time def crawl_public_account_history(name, pages=5): """ 爬取公众号历史文章列表 :param name: 公众号名称 :param pages: 要爬取的页数 :return: 文章列表 """ # 初始化浏览器 driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) articles = [] try: # 打开微信公众号文章搜索页面 driver.get(f"https://weixin.sogou.com/weixin?type=1&query={name}&ie=utf8") time.sleep(3) # 等待页面加载 for page in range(pages): # 解析页面内容 soup = BeautifulSoup(driver.page_source, "html.parser") items = soup.select(".news-box .news-list li") for item in items: title = item.select_one(".txt-box h3 a").text.strip() date = item.select_one(".s2").text url = item.select_one(".txt-box h3 a")["href"] articles.append({ "title": title, "date": date, "url": url }) # 点击下一页 next_btn = driver.find_element("css selector", "#sogou_next") if "disabled" in next_btn.get_attribute("class"): break next_btn.click() time.sleep(2) # 等待页面加载 finally: driver.quit() return articles # 使用示例 articles = crawl_public_account_history("Python编程", pages=3) print(f"成功爬取{len(articles)}篇历史文章")

进阶优化:构建抗封锁的采集请求池

import random from fake_useragent import UserAgent import requests class WechatCrawler: def __init__(self, proxy_file=None): self.ua = UserAgent() self.proxies = self.load_proxies(proxy_file) if proxy_file else [] self.session = self.create_session() def load_proxies(self, file_path): """从文件加载代理IP列表""" with open(file_path, "r") as f: return [line.strip() for line in f if line.strip()] def create_session(self): """创建请求会话""" session = requests.Session() session.headers = {"User-Agent": self.ua.random} return session def get_random_proxy(self): """随机获取一个代理""" if not self.proxies: return None return {"http": random.choice(self.proxies), "https": random.choice(self.proxies)} def smart_request(self, url, max_retries=3): """智能请求方法,自动处理代理和UA轮换""" for _ in range(max_retries): try: proxy = self.get_random_proxy() self.session.headers["User-Agent"] = self.ua.random response = self.session.get(url, proxies=proxy, timeout=10) if response.status_code == 200: return response time.sleep(random.uniform(1, 3)) except Exception as e: print(f"请求失败: {str(e)}") if self.proxies: # 移除失效代理 if proxy and proxy["http"] in self.proxies: self.proxies.remove(proxy["http"]) time.sleep(random.uniform(2, 5)) return None

数据采集合规提示

根据《网络安全法》和《电子商务法》,未经允许爬取非公开数据可能涉嫌违法。微信公众号的历史文章虽然公开可访问,但大规模采集可能违反平台服务协议。建议设置合理的请求间隔(至少3秒/次),避免对服务器造成负担。商业用途的数据采集需获得公众号运营者的书面授权。

三、公众号文章内容与评论采集

获取文章列表后,如何深入提取文章全文内容、阅读量、在看数、点赞数及评论数据?这些细节数据对于内容质量分析和用户反馈研究至关重要。

基础实现:文章详情与评论采集

import re import json from bs4 import BeautifulSoup import requests def get_article_details(url): """获取公众号文章详细信息""" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") # 提取基本信息 title = soup.select_one("#activity-name").text.strip() author = soup.select_one("#js_author_name").text.strip() publish_time = soup.select_one("#publish_time").text # 提取文章内容 content = soup.select_one("#js_content") content_html = str(content) if content else "" content_text = content.get_text() if content else "" # 提取阅读量、在看数等数据(通过页面内嵌JS获取) script_content = soup.find("script", text=re.compile(r"var msg_cdn_url")) if script_content: read_count = re.search(r"read_num\s*=\s*'?(\d+)'?", script_content.text).group(1) like_count = re.search(r"like_num\s*=\s*'?(\d+)'?", script_content.text).group(1) comment_count = re.search(r"comment_num\s*=\s*'?(\d+)'?", script_content.text).group(1) else: read_count, like_count, comment_count = 0, 0, 0 return { "title": title, "author": author, "publish_time": publish_time, "read_count": int(read_count), "like_count": int(like_count), "comment_count": int(comment_count), "content_text": content_text, "content_html": content_html, "url": url } def get_article_comments(article_url): """获取文章评论(需要特定接口权限)""" # 实际场景中需要通过特定API或复杂的参数破解获取评论 # 这里仅做示例框架 comments = [] # 评论采集实现逻辑... return comments

进阶优化:基于NLP的情感分析与关键词提取

# 安装依赖 # pip install snownlp jieba wordcloud from snownlp import SnowNLP import jieba import jieba.analyse from collections import Counter def analyze_article_sentiment(content): """分析文章情感倾向""" s = SnowNLP(content) return { "sentiment": s.sentiments, # 情感得分,0-1之间,越接近1越积极 "keywords": jieba.analyse.extract_tags(content, topK=10, withWeight=True), "summary": s.summary(3) # 提取3句摘要 } def analyze_comments_sentiment(comments): """分析评论情感分布""" sentiment_result = { "positive": 0, "negative": 0, "neutral": 0, "sentiment_scores": [] } for comment in comments: s = SnowNLP(comment["content"]) score = s.sentiments sentiment_result["sentiment_scores"].append(score) if score > 0.6: sentiment_result["positive"] += 1 elif score < 0.4: sentiment_result["negative"] += 1 else: sentiment_result["neutral"] += 1 # 计算平均情感得分 if comments: sentiment_result["average_score"] = sum(sentiment_result["sentiment_scores"]) / len(comments) else: sentiment_result["average_score"] = 0 return sentiment_result # 使用示例 article = get_article_details("https://mp.weixin.qq.com/s/example_article_url") sentiment = analyze_article_sentiment(article["content_text"]) print(f"文章情感得分: {sentiment['sentiment']:.2f}") print("关键词:") for keyword, weight in sentiment["keywords"]: print(f"{keyword}: {weight:.4f}")

数据采集合规提示

根据《个人信息保护法》,公众号评论中可能包含用户个人信息,采集和使用时需进行匿名化处理,不得泄露用户隐私。文章内容受著作权法保护,未经授权不得用于商业用途或二次分发。建议在分析报告中注明数据来源,并遵守"合理使用"原则。

四、用户画像与行为数据采集

了解公众号的粉丝画像和阅读行为,是优化内容策略的关键。如何通过公开数据构建用户画像,分析用户兴趣偏好和阅读习惯?

基础实现:基于阅读数据的用户行为分析

import pandas as pd from datetime import datetime def analyze_reading_behavior(articles): """分析文章阅读行为数据""" # 转换为DataFrame df = pd.DataFrame(articles) # 数据预处理 df["publish_time"] = pd.to_datetime(df["publish_time"]) df["publish_hour"] = df["publish_time"].dt.hour df["publish_weekday"] = df["publish_time"].dt.weekday df["word_count"] = df["content_text"].apply(lambda x: len(x)) # 分析最佳发布时间 hourly_stats = df.groupby("publish_hour")["read_count"].agg(["mean", "count"]).sort_values("mean", ascending=False) weekday_stats = df.groupby("publish_weekday")["read_count"].mean().sort_values(ascending=False) # 分析文章长度与阅读量关系 length_correlation = df[["word_count", "read_count"]].corr().iloc[0, 1] return { "best_publish_hours": hourly_stats.head(3).index.tolist(), "best_publish_weekdays": weekday_stats.head(2).index.tolist(), "length_read_correlation": length_correlation, "avg_read_count": df["read_count"].mean(), "top_articles": df.sort_values("read_count", ascending=False).head(5)["title"].tolist() }

进阶优化:构建用户兴趣画像

from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.cluster import KMeans import numpy as np def build_user_profile(articles, n_clusters=5): """基于文章内容构建用户兴趣画像""" # 提取文章关键词 all_keywords = [] for article in articles: # 使用之前定义的关键词提取函数 keywords = [kw[0] for kw in analyze_article_sentiment(article["content_text"])["keywords"]] all_keywords.append(" ".join(keywords)) # TF-IDF向量化 vectorizer = TfidfVectorizer() X = vectorizer.fit_transform(all_keywords) # K-means聚类 kmeans = KMeans(n_clusters=n_clusters, random_state=42) clusters = kmeans.fit_predict(X) # 分析每个聚类的主题 terms = vectorizer.get_feature_names_out() order_centroids = kmeans.cluster_centers_.argsort()[:, ::-1] user_profile = {} for i in range(n_clusters): cluster_terms = [terms[ind] for ind in order_centroids[i, :10]] user_profile[f"interest_{i+1}"] = { "keywords": cluster_terms, "article_count": np.sum(clusters == i) } return user_profile # 使用示例 # 假设已经采集了一系列文章数据 # articles = [...] # 包含多篇文章的列表 # profile = build_user_profile(articles) # print("用户兴趣画像:") # for interest, data in profile.items(): # print(f"{interest}: {', '.join(data['keywords'])} ({data['article_count']}篇文章)")

数据采集合规提示

用户画像分析应基于匿名化数据,不得包含可识别个人身份的信息。根据《个人信息保护法》,收集个人信息需获得用户同意,且仅能用于明确告知的用途。建议在公众号中设置隐私政策,明确告知用户数据收集和使用方式。

五、数据存储与价值挖掘体系构建

采集到海量公众号数据后,如何高效存储、管理并从中挖掘商业价值?构建完整的数据处理流水线是实现数据驱动决策的基础。

基础实现:数据存储与管理

import sqlite3 import pandas as pd from datetime import datetime import os class WechatDataManager: def __init__(self, db_path="wechat_data.db"): """初始化数据管理器""" self.db_path = db_path self.conn = sqlite3.connect(db_path) self._create_tables() def _create_tables(self): """创建数据库表结构""" cursor = self.conn.cursor() # 文章表 cursor.execute(""" CREATE TABLE IF NOT EXISTS articles ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, author TEXT, publish_time DATETIME, read_count INTEGER, like_count INTEGER, comment_count INTEGER, url TEXT UNIQUE, content_text TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) """) # 评论表 cursor.execute(""" CREATE TABLE IF NOT EXISTS comments ( id INTEGER PRIMARY KEY AUTOINCREMENT, article_id INTEGER, content TEXT, publish_time DATETIME, like_count INTEGER, FOREIGN KEY (article_id) REFERENCES articles(id) ) """) # 分析结果表 cursor.execute(""" CREATE TABLE IF NOT EXISTS analysis_results ( id INTEGER PRIMARY KEY AUTOINCREMENT, article_id INTEGER, sentiment_score REAL, keywords TEXT, summary TEXT, FOREIGN KEY (article_id) REFERENCES articles(id) ) """) self.conn.commit() def save_article(self, article_data): """保存文章数据""" cursor = self.conn.cursor() try: cursor.execute(""" INSERT OR IGNORE INTO articles (title, author, publish_time, read_count, like_count, comment_count, url, content_text) VALUES (?, ?, ?, ?, ?, ?, ?, ?) """, ( article_data["title"], article_data["author"], article_data["publish_time"], article_data["read_count"], article_data["like_count"], article_data["comment_count"], article_data["url"], article_data["content_text"] )) self.conn.commit() return cursor.lastrowid except Exception as e: print(f"保存文章失败: {str(e)}") return None def export_to_excel(self, output_file="wechat_analysis.xlsx"): """导出数据到Excel""" with pd.ExcelWriter(output_file) as writer: # 文章数据 articles_df = pd.read_sql("SELECT * FROM articles", self.conn) articles_df.to_excel(writer, sheet_name="文章数据", index=False) # 评论数据 comments_df = pd.read_sql("SELECT * FROM comments", self.conn) comments_df.to_excel(writer, sheet_name="评论数据", index=False) # 分析结果 analysis_df = pd.read_sql("SELECT * FROM analysis_results", self.conn) analysis_df.to_excel(writer, sheet_name="分析结果", index=False) print(f"数据已导出到 {output_file}")

进阶优化:自动化数据采集与分析流程

import schedule import time from datetime import datetime class AutoCrawler: def __init__(self, public_accounts, db_manager, crawl_interval=24): """ 自动化爬虫 :param public_accounts: 要监控的公众号列表 :param db_manager: 数据管理器实例 :param crawl_interval: 爬取间隔(小时) """ self.public_accounts = public_accounts self.db_manager = db_manager self.crawl_interval = crawl_interval self.crawler = WechatCrawler() # 使用之前定义的爬虫类 def crawl_and_analyze(self, account_name): """爬取并分析一个公众号""" print(f"开始爬取公众号: {account_name} - {datetime.now()}") # 1. 爬取文章列表 articles = self.crawler.crawl_public_account_history(account_name, pages=2) # 2. 爬取文章详情并保存 for article in articles: # 检查是否已存在 existing = pd.read_sql( f"SELECT id FROM articles WHERE url = '{article['url']}'", self.db_manager.conn ) if not existing.empty: continue # 获取文章详情 details = get_article_details(article["url"]) # 保存文章 article_id = self.db_manager.save_article(details) # 3. 分析文章 if article_id: sentiment = analyze_article_sentiment(details["content_text"]) # 保存分析结果 cursor = self.db_manager.conn.cursor() cursor.execute(""" INSERT INTO analysis_results (article_id, sentiment_score, keywords, summary) VALUES (?, ?, ?, ?) """, ( article_id, sentiment["sentiment"], ",".join([kw[0] for kw in sentiment["keywords"]]), "\n".join(sentiment["summary"]) )) self.db_manager.conn.commit() print(f"公众号 {account_name} 爬取完成 - {datetime.now()}") def run_scheduled(self): """启动定时任务""" # 为每个公众号创建定时任务 for account in self.public_accounts: schedule.every(self.crawl_interval).hours.do( self.crawl_and_analyze, account_name=account ) # 立即执行一次 for account in self.public_accounts: self.crawl_and_analyze(account) # 循环执行任务 while True: schedule.run_pending() time.sleep(60) # 使用示例 # db_manager = WechatDataManager() # crawler = AutoCrawler(["Python编程", "数据分析与挖掘"], db_manager) # crawler.run_scheduled()

数据采集合规提示

数据存储应符合《数据安全法》要求,采取必要的安全措施防止数据泄露、丢失或被篡改。对于敏感数据,应进行加密存储。数据保留期限应遵循"最小必要"原则,定期清理不再需要的数据。涉及个人信息的数据处理活动,需遵守个人信息保护相关法律法规。

数据采集合规操作指引

合法采集边界

  1. 数据来源限制:仅可采集公开可访问的公众号数据,不得突破访问限制或绕过权限控制
  2. 采集行为限制:不得对服务器造成不合理负担,建议请求间隔≥3秒,日采集量≤1000篇
  3. 数据使用限制:采集数据仅可用于内部分析,不得用于商业竞争、诋毁他人或其他非法目的
  4. 版权尊重:公众号文章内容受著作权法保护,引用时需注明来源,不得篡改或歪曲原文

风险防范措施

  1. 技术层面:实现请求限流、代理池轮换、异常检测等机制
  2. 法律层面:咨询法律顾问,确保数据采集和使用符合相关法律法规
  3. 伦理层面:尊重用户隐私,对采集数据进行匿名化处理,不泄露个人信息
  4. 平台规则:遵守微信公众平台相关规定,避免账号被限制或封禁

常见错误排查指南

接口调用失败

错误类型可能原因解决方案
401 Unauthorized认证失败检查appid和secret是否正确,重新获取access_token
403 Forbidden权限不足检查接口权限是否已申请,是否完成微信认证
429 Too Many Requests请求频率超限降低请求频率,实现限流机制
500 Server Error服务器错误稍后重试,实现自动重试机制

爬虫采集问题

问题现象可能原因解决方案
页面返回验证码IP被识别为爬虫切换代理IP,增加请求间隔
内容为空或不完整页面动态加载使用Selenium或分析AJAX请求
账号被限制频繁操作触发风控减少操作频率,使用多个账号轮换
数据格式变化目标网站改版定期检查并更新解析规则

接口调用频率计算器

根据微信公众平台接口限制,不同类型接口有不同的调用频率限制:

  • 基础支持接口:200次/天
  • 用户管理接口:500次/天
  • 素材管理接口:1000次/天
  • 图文消息接口:10000次/天

使用以下公式计算安全调用频率:

安全调用频率 = 接口日限制次数 / (24 * 60) # 转换为分钟频率

例如,对于日限制1000次的接口: 安全调用频率 = 1000 / (24 * 60) ≈ 0.69次/分钟,建议设置为每2分钟调用1次

通过本文介绍的5大实战方法,您已掌握微信公众号数据采集的核心技术。记住,技术是工具,合规是前提,价值挖掘是目标。合理运用这些方法,将为公众号运营决策提供数据支持,帮助您在激烈的市场竞争中占据优势。

数据采集模板代码库可通过以下方式获取:

git clone https://gitcode.com/gh_mirrors/xh/xhs cd xhs/example

该代码库包含本文所有示例代码及扩展功能实现,可根据实际需求进行二次开发。

【免费下载链接】xhs基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/项目地址: https://gitcode.com/gh_mirrors/xh/xhs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 11:37:13

小白必看!GLM-4v-9b多模态模型入门到应用全攻略

小白必看&#xff01;GLM-4v-9b多模态模型入门到应用全攻略 你是否遇到过这些场景&#xff1a; 拿到一张密密麻麻的财务报表截图&#xff0c;想快速提取关键数据却要手动抄写&#xff1f;电商运营需要为上百张商品图配文案&#xff0c;一张张写累到手腕酸痛&#xff1f;学生收…

作者头像 李华
网站建设 2026/4/2 14:39:18

Langchain-Chatchat企业级部署安全指南:模型加密与访问控制实战

Langchain-Chatchat企业级安全部署实战&#xff1a;从加密存储到访问控制的完整方案 1. 企业级部署的安全挑战与应对策略 在金融、医疗等对数据安全要求极高的行业&#xff0c;Langchain-Chatchat的私有化部署面临着独特的安全挑战。不同于个人开发者的小规模测试环境&#xff…

作者头像 李华
网站建设 2026/3/24 20:15:40

REX-UniNLU法律文本处理:合同关键条款自动提取

REX-UniNLU法律文本处理&#xff1a;合同关键条款自动提取 1. 这不是又一个需要调参的模型&#xff0c;而是法律人的智能助手 你有没有遇到过这样的场景&#xff1a;手头堆着二十份商业合同&#xff0c;每份七八十页&#xff0c;密密麻麻全是法律术语。法务同事要花一整天时间…

作者头像 李华
网站建设 2026/4/1 16:40:16

Qwen3-ForcedAligner-0.6B实战:一键生成词级时间戳

Qwen3-ForcedAligner-0.6B实战&#xff1a;一键生成词级时间戳 你是否还在为视频字幕手动打轴耗掉一整个下午而头疼&#xff1f; 是否在剪辑时反复拖动时间线&#xff0c;只为精准删掉一句“呃”“啊”的语气词&#xff1f; 是否想验证自己训练的TTS语音合成效果&#xff0c;却…

作者头像 李华
网站建设 2026/3/31 8:04:02

STM32H7 DAC采样保持模式揭秘:低功耗音频应用的HAL库实现

STM32H7 DAC采样保持模式在低功耗音频应用中的实战解析 1. 采样保持模式的技术本质与功耗优势 在物联网边缘设备的音频应用中&#xff0c;功耗优化始终是开发者面临的核心挑战。STM32H7系列内置的DAC采样保持模式&#xff08;Sample-and-Hold Mode&#xff09;为解决这一难题提…

作者头像 李华
网站建设 2026/4/1 23:06:52

Lychee-Rerank-MM实战指南:微调LoRA适配特定行业图文语义空间

Lychee-Rerank-MM实战指南&#xff1a;微调LoRA适配特定行业图文语义空间 1. 什么是Lychee多模态重排序模型 你有没有遇到过这样的问题&#xff1a;在电商平台上搜“复古风连衣裙”&#xff0c;返回的图片里却混着一堆现代剪裁的款式&#xff1b;或者在知识库中输入“糖尿病饮…

作者头像 李华