【问题标题】:Could not use `streamlit` to annotate a dataset of multiple labels无法使用“streamlit”来注释多个标签的数据集
【发布时间】:2023-02-17 00:21:47
【问题描述】:

我正在尝试使用 streamlit 构建注释界面。

在我的数据集中,每个数据点可能有多个标签(即下面代码中的labels)。但是,我只能使用st.multiselect() 选择一个标签,而不是预期的“多选”。具体来说,每次我单击其中一个选项时,页面都会更新并弹出下一个数据点。

陷入其中数小时后,我不确定出了什么问题。谁能为我提供任何指示?

import pandas as pd
import streamlit as st

df = pd.read_pickle("unlabeled.pkl")
records = df.to_dict("records")

if "annotations" not in st.session_state:
    st.session_state.records = records
    st.session_state.current_record = records[0]

annotated_data = list()

if st.session_state.records:
    labels = st.session_state.current_record["labels"]
    example = st.session_state.current_record["example"]
    text = st.session_state.current_record["text"]

    demo = "\n".join(["- {}".format(ee) for ee in example])
    text = "- {}".format(text)

    st.write(f"# Example\n{demo}\n# Output\n{text}")

    labels = st.multiselect(
        label="Select Labels",
        options=labels
    )

    st.write('You Selected:', labels)

    if st.button("Save"):
        st.session_state.records.remove(st.session_state.current_record)
        st.session_state.current_record = st.session_state.records[0]

    annotated_data.append(
        {
            **st.session_state.current_record,
            "label": labels
        }
    )

    if len(annotated_data) % 50 == 0:
        save_data(annotated_data)

save_data(annotated_data)

【问题讨论】:

    标签: python frontend streamlit


    【解决方案1】:

    您可以使用 a form 来防止应用程序在与多选小部件交互后重新运行(相反,在您点击“提交”之前,应用程序不会重新运行)。

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 2015-08-08
      • 1970-01-01
      • 2011-12-23
      • 2013-04-11
      • 1970-01-01
      • 2017-11-21
      • 2011-06-21
      • 2014-12-31
      相关资源
      最近更新 更多