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

Streamlit文本标注界面优化:实现逐次显示文本而非一次性展示

实现单条文本逐步标注的Streamlit界面

修改后的完整代码

import streamlit as st
import pandas as pd

st.title('Text Annotation')

# 初始化会话状态,持久化标注进度与结果
if 'current_idx' not in st.session_state:
    st.session_state.current_idx = 0
    st.session_state.annotated_texts = []
    st.session_state.annotated_labels = []

# 读取数据(可直接替换为文本列表,如texts = ["文本1", "文本2"...])
df = pd.read_excel('mini_annotation.xlsx')
total_texts = len(df)

# 标注未完成时显示当前文本
if st.session_state.current_idx < total_texts:
    current_text = df.iloc[st.session_state.current_idx]['Text']
    
    st.write(f"Text {st.session_state.current_idx + 1} out of {total_texts}")
    st.write("请对以下文本分类:")
    st.write(current_text)
    
    # 为下拉框添加唯一key,避免重复组件报错
    label = st.selectbox(
        "分类选项:", 
        ["HOF", "NOT", "Not Sure"],
        key=f"label_select_{st.session_state.current_idx}"
    )
    
    if st.button("提交标注"):
        # 保存当前标注结果
        st.session_state.annotated_texts.append(current_text)
        st.session_state.annotated_labels.append(label)
        # 切换到下一条文本并刷新页面
        st.session_state.current_idx += 1
        st.rerun()
else:
    st.write("所有文本标注已完成!")
    # 生成并提供标注结果下载
    if st.session_state.annotated_texts:
        df_annotated = pd.DataFrame({
            'Text': st.session_state.annotated_texts,
            'Label': st.session_state.annotated_labels
        })
        st.download_button(
            label="下载标注文件",
            data=df_annotated.to_csv(sep=";", index=False),
            file_name="annotated_file.csv",
            mime="text/csv"
        )

核心修改说明

  • 会话状态(session_state):用来保存当前标注的索引、已标注文本和标签,解决Streamlit页面刷新后状态丢失的问题,确保每次只显示当前待标注文本。
  • 单条渲染逻辑:仅在当前索引小于总文本数时渲染对应内容,标注完成后切换到完成提示与下载功能。
  • 唯一组件Key:给下拉框添加带当前索引的key,避免页面刷新时出现重复组件的报错。
  • 提交后即时切换:点击提交按钮后,立即保存标注结果、更新索引并刷新页面,直接显示下一条文本。
  • 结果下载优化:用st.download_button替代本地直接保存,符合Streamlit的Web交互逻辑,让用户可以自行下载标注文件。

内容的提问来源于stack exchange,提问作者Maxl Gemeinderat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:20:40