MotionGPT 动作标注套取例
通过 Prompt 设计,找 OpenAI 帮我靠自然语言洗数据用例
Prompt
现在,你是一名动画数据集标注专家。
我将为你描述一个任务:根据我给出的提示,创建合适的动作描述句子。
提示中会包含以下动作信息:
- 动作类型:描述动作在何种情境中被使用。例如,“武器攻击”表示使用某种武器进行攻击,“法术”表示吟唱法术。还有其他词汇如“静止”、“受击”和“死亡”用于描述当前动作的状态。
- 武器类型:描述当前动作使用的武器或特殊物件类型,通常与动作类型-“武器攻击”同时出现。有时“徒手”表示当前未使用武器,且并非进行战斗。
- 攻击类型:描述攻击动画的方式,如“双持”、“蓄力”、“跑步攻击”和“踢击”,需要适当结合其它词汇润色。
- 方位词:描述动作的方向或特定状态,如“左前”代表动作趋向左前方。
- 力量感描述词:如“轻盈地”、“扎实地”和“具力量感的”,描述动作的整体风格。可作为润色要素加入,但请避免语义冲突。
- 速度感描述词:如“迅捷的”、“较迅捷”和“迟缓的”,描述动作的速度。由于速度感具有量化分级,请谨慎使用词汇。
- 模糊描述词:一些写意的描述词,可以适当在润色中参考,但不一定要直接使用。
- 姿势形容句:直接描述动作的内容。
例如,基于我下面给出的提示,可以这样生成描述:
提示:
动作类型 | 武器类型 | 攻击类型 | 方位词 | 力量感描述词 | 速度感描述词 | 模糊描述词 | 姿势形容句 |
---|---|---|---|---|---|---|---|
武器攻击 | 直剑 | 右手,单持,蓄力重击 | 前 | 扎实的,积蓄力量的 | 匀速的,先慢后快的 | 挥击的,流畅连贯的,大开大合的,积蓄力量的,瞬间爆发的 | 倾身扭腰向左,右手从左后蓄力,向前挥 |
描述:
角色右手使用直剑进行蓄力攻击,扎实地侧身扭腰向左,从左后蓄力,然后爆发式地向前挥砍。
请基于我提供的最新的样例生成描述句:
动作类型 | 武器类型 | 攻击类型 | 方位词 | 力量感描述词 | 速度感描述词 | 模糊描述词 | 姿势形容句 |
---|---|---|---|---|---|---|---|
武器攻击 | 大剑/特大剑 | 右手,单持,蓄力 | 原地 | 轻盈的,直截了当的 | 较迅捷,干净利落的 | 流畅连贯的,大开大合的,积蓄力量的 | 倾身扭腰向左,右手从左后蓄力 |
武器攻击 | 大剑/特大剑 | 双持,蓄力重击 | 前 | 扎实的,积蓄力量的 | 匀速的,先慢后快的 | 挥击的,流畅连贯的,大开大合的,积蓄力量的,瞬间爆发的 | 倾身扭腰向左,双手从左后蓄力,向前挥 |
武器攻击 | 刺剑 | 右手,单持,未蓄力重击 | 前 | 轻盈的,直截了当的 | 迅捷的 | 刺击的,流畅连贯的 | 倾身扭腰向左,右手从左上向前刺 |
回避 | 徒手 | 握持 | 前 | 无力的,沉重的 | 较迟缓,拖泥带水的 | 生硬的,晃悠悠的,虚弱的,痛苦的 | 向前沉重地蹒跚、踉跄 |
Response
效果评估:
GPT-3.5-Turbo:
- 角色右手持大剑,原地蓄力攻击。动作轻盈而直截了当,右手从左后蓄力,然后以较迅捷而干净利落的速度挥砍,展现出流畅连贯的大开大合动作,同时积蓄了力量。
- 角色双手握着特大剑,以扎实的姿态倾身扭腰向左,双手从左后积蓄力量,然后以匀速的速度先慢后快地挥出,形成流畅连贯的大开大合动作,最终瞬间爆发向前挥击。
- 角色右手持刺剑,轻盈地倾身扭腰向左,右手从左上迅捷地向前刺出,完成一次直截了当的刺击动作。
- 角色使用徒手进行回避动作,向前沉重地蹒跄,双手生硬地握持前方,显得无力而痛苦,动作较为拖泥带水,仿佛是在虚弱地躲避攻击。
GPT-4:
- 角色右手握持特大剑,原地倾身扭腰向左,从左后蓄力。然后轻盈且直截了当地进行蓄力攻击,动作流畅且连贯,速度较迅捷且干净利落地完成一次大开大合的挥砍。
- 角色双手持大剑进行蓄力攻击,扎实地侧身扭腰向左,从左后开始积蓄力量,然后在瞬间爆发式地向前挥砍。
- 角色右手握持刺剑,轻盈且直截了当地倾身扭腰向左,从左上迅捷地、流畅连贯地向前刺出。
- 角色在回避时,没有使用任何武器,只是沉重地握持双手。他向前生硬且晃悠悠地蹒跚、踉跄,给人一种痛苦而拖泥带水的感觉。
InternLM-20B:
角色右手使用大剑或特大剑进行单手持剑蓄力攻击,轻盈地直截了当地侧身扭腰向左,从左后蓄力,然后干净利落地进行攻击。
角色双手使用大剑或特大剑进行蓄力攻击,扎实地侧身扭腰向左,从左后蓄力,然后爆发式地向前挥砍。
角色右手使用刺剑进行未蓄力重击,轻盈地侧身扭腰向左,从左上向前刺击。
角色使用徒手进行握持,力量感沉重,速度感迟缓,姿势形容句为“向前沉重地蹒跚、踉跄”。
- 角色使用徒手进行握持攻击,沉重地向前蹒跚、踉跄。
- 角色使用徒手进行攻击,以沉重的力量向前迈出,显得生硬而虚弱,但步伐沉重而踉跄。
Batch
基于样例组批量创建模板 Prompt,单批处理五条样例
注:强烈建议在使用时打散输入 Group,在召回时发现相近动作并排生成容易造成标注质量下降和复读
def generate_prompt_from_group(group):
prompt = """
| 动作ID | 动作类型 | 武器类型 | 攻击类型 | 力量感描述词 | 速度感描述词 | 模糊描述词 | 姿势形容句 |
"""
for _, row in group.iterrows():
prompt += f"\n| {row['动画ID']} | {row['动作类型']} | {row['武器类型']} | {row['攻击类型']} | {row['力量感描述词']} | {row['速度感描述词']} | {row['模糊描述词']} | {row['姿势形容句']} |"
messages = [{
"role": "system",
"content":
"""
现在,你是一名动画数据集标注专家。
你将完成如下任务:根据给出的提示,创建合适的动作描述句子,并以适当的格式返回。
提示中会包含以下动作信息:
- <span style="font-weight: bold;" data-type="strong">动作类型</span>:描述动作在何种情境中被使用。例如,“武器攻击”表示使用某种武器进行攻击,“法术”表示吟唱法术。还有其他词汇如“静止”、“受击”和“死亡”用于描述当前动作的状态。
- <span style="font-weight: bold;" data-type="strong">武器类型</span>:描述当前动作使用的武器或特殊物件类型,通常与动作类型-“武器攻击”同时出现。有时“徒手”表示当前未使用武器,且并非进行战斗。
- <span style="font-weight: bold;" data-type="strong">攻击类型</span>:描述攻击动画的方式,如“双持”、“蓄力”、“跑步攻击”和“踢击”,需要适当结合其它词汇润色。
- <span style="font-weight: bold;" data-type="strong">力量感描述词</span>:如“轻盈地”、“扎实地”和“具力量感的”,描述动作的整体风格。可作为润色要素加入,但请避免语义冲突。
- <span style="font-weight: bold;" data-type="strong">速度感描述词</span>:如“迅捷的”、“较迅捷”和“迟缓的”,描述动作的速度。由于速度感具有量化分级,请谨慎使用词汇。
- <span style="font-weight: bold;" data-type="strong">模糊描述词</span>:一些写意的描述词,可以适当在润色中参考,但不一定要直接使用。
- <span style="font-weight: bold;" data-type="strong">姿势形容句</span>:直接描述动作的内容。
例如,基于下面给出的提示,可以这样生成描述:
输入样例:
| 动作ID | 动作类型 | 武器类型 | 攻击类型 | 力量感描述词 | 速度感描述词 | 模糊描述词 | 姿势形容句 |
| 000001 | 武器攻击 | 直剑 | 右手,单持,蓄力重击 | 扎实的,积蓄力量的 | 匀速的,先慢后快的 | 挥击的,流畅连贯的,大开大合的,积蓄力量的,瞬间爆发的 | 倾身扭腰向左,右手从左后蓄力,向前挥 |
| 000004 | 回避 | 徒手 | 握持 | 无力的,沉重的 | 较迟缓,拖泥带水的 | 生硬的,晃悠悠的,虚弱的,痛苦的 | 向前沉重地蹒跚、踉跄 |
输出样例:
[
{
"ID": "000001",
"Desc_CN": "角色右手使用直剑进行蓄力攻击,扎实地侧身扭腰向左,从左后蓄力,然后爆发式地向前挥砍。",
"Desc_EN": "The character charges an attack with a straight sword in their right hand, firmly twists their waist to the side, turning to the left, and gathers strength from the left rear. Then, they explosively slash forward."
},
{
"ID": "000004",
"Desc_CN": "角色回避并沉重地向前移动,摇摇晃晃、跌跌撞撞。",
"Desc_EN": "The character evades and moves forward heavily, staggering and stumbling. "
}
]
<span style="font-weight: bold;" data-type="strong">特别注意</span>:
- 武器类型为徒手、攻击类型为握持时仅表示角色当前空手,请勿使用 “徒手握持、握持物品、握持空手” 等错误描述
- 武器类型使用 / 分割时,表示或,即对几种武器类型通用。例如对于 小盾/中盾/大盾 ,生成描述句时只需写“持盾”即可
- 值为 nan 表示对应条目空置
- 请主要参考<span style="font-weight: bold;" data-type="strong">姿势形容句</span>,描述词仅被用于润色,避免画蛇添足
- 输出中文语境下通顺的描述句
请基于USER提供的样例生成描述句:
"""
}]
messages.append({"role": "user", "content": prompt})
# 传递给API
# chat_response = chat_completion_request(messages)
# ... (这部分代码与前面相似)
return messages
具体实现见文件,虽说不知道发布发得出去 query_thread.ipynb
Comments NOTHING