You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用BioGPT生成词嵌入并存储到Pandas DataFrame列中?

生成BioGPT词嵌入并存储到Pandas DataFrame列中

首先要明确:BioGPT的Tokenizer仅负责文本预处理,生成词嵌入需要配合对应的预训练模型使用。以下是完整的实现步骤及apply中的lambda写法:

1. 补充模型加载(假设未完成此步骤)

from transformers import BioGptTokenizer, BioGptModel
import torch
import pandas as pd

# 你已完成的基础步骤
df = pd.read_json("data.json")
tokenizer = BioGptTokenizer.from_pretrained("microsoft/biogpt")

# 加载BioGPT模型并切换到评估模式
model = BioGptModel.from_pretrained("microsoft/biogpt")
model.eval()

2. 定义词嵌入生成函数

单独定义函数再在lambda中调用,比直接写复杂逻辑在lambda里更易维护:

def generate_biogpt_embedding(text):
    # 对文本进行分词、填充/截断,转换为模型需要的张量格式
    inputs = tokenizer(
        text,
        return_tensors="pt",
        padding=True,
        truncation=True,
        max_length=512  # 根据你的文本长度调整
    )
    
    # 关闭梯度计算,提升速度并节省显存
    with torch.no_grad():
        outputs = model(**inputs)
    
    # 两种常见的嵌入提取方式选其一:
    # 方式1:取<[BOS_never_used_51bce0c785ca2f68081bfa7d91973934]>token的最后一层隐藏状态作为句子级嵌入
    embedding = outputs.last_hidden_state[:, 0, :].squeeze().numpy()
    
    # 方式2:对有效token的隐藏状态做平均池化(避免padding影响)
    # mask = inputs["attention_mask"].unsqueeze(-1).expand(outputs.last_hidden_state.shape)
    # masked_embeds = outputs.last_hidden_state * mask
    # embedding = torch.sum(masked_embeds, dim=1) / torch.clamp(mask.sum(dim=1), min=1e-9)
    # embedding = embedding.squeeze().numpy()
    
    return embedding

3. 应用到DataFrame列

直接用apply结合lambda调用上述函数即可:

df["embeddings"] = df["content"].apply(lambda x: generate_biogpt_embedding(x))

注意事项

  • 若数据集较大,逐行apply效率较低,建议改用批量处理(如Hugging Face的Dataset+DataLoader)
  • 需确保已安装torch、transformers、pandas依赖库
  • 可根据文本实际长度调整max_length参数,避免过度截断关键内容

内容的提问来源于stack exchange,提问作者D. Seah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:52:41