73 lines
3.4 KiB
Python
73 lines
3.4 KiB
Python
import pandas as pd
|
||
|
||
# 你提供的核心逻辑,适配Excel输入输出
|
||
def process_vocabulary_system(file_path):
|
||
# 1. 加载Excel数据
|
||
try:
|
||
df = pd.read_excel(file_path)
|
||
except FileNotFoundError:
|
||
return "Error: File not found."
|
||
|
||
df.columns = [c.strip() for c in df.columns]
|
||
print(f"加载文件成功,共{len(df)}条单词记录")
|
||
|
||
# 2. 你定义的特殊规则
|
||
t2_special_list = {
|
||
'invisible': {'air', 'wind', 'smoke', 'gas'},
|
||
'abstract': {'song', 'friend', 'hobby', 'art', 'pe', 'music', 'fun'},
|
||
'generalized': {'child', 'children', 'father', 'mother', 'food', 'colour', 'animal', 'toy'},
|
||
'identity': {'address', 'age', 'aunt', 'name'}
|
||
}
|
||
|
||
# 预展开T2特殊词集合
|
||
all_t2_special = {item for sublist in t2_special_list.values() for item in sublist}
|
||
|
||
# 3. 核心处理逻辑
|
||
def apply_rules(row):
|
||
# 清洗输入
|
||
word = str(row.get('单词', '')).lower().strip()
|
||
t_score = pd.to_numeric(row.get('实现成本(T)', 1), errors='coerce')
|
||
if pd.isna(t_score):
|
||
t_score = 1
|
||
|
||
# 规则分支
|
||
if t_score >= 3:
|
||
scheme = "逻辑交互 / UI 处理"
|
||
reason = "英语骨架词。涉及空间位置、时序或数量的逻辑判定,需系统重度UI引导。"
|
||
link = "建议设计‘解谜指令’,如:利用 here/there 进行远近空间坐标对比任务。"
|
||
|
||
elif t_score == 2 or word in all_t2_special:
|
||
scheme = "动画 / 特效 / UI处理"
|
||
if word in t2_special_list['invisible']:
|
||
reason = "隐形名词。需环境联动(如风吹树叶)和特效辅助表现。"
|
||
link = "联动关联实物,如:wind 联动 tree/leaf 的动态表现。"
|
||
elif word in t2_special_list['generalized']:
|
||
reason = "泛化概念。无法用单一图片代表,需UI组合展示或多模型联动。"
|
||
link = f"联动具体成员,由 {word} 展示其下属的 T1 级具象单词集合。"
|
||
elif word in t2_special_list['abstract'] or word in t2_special_list['identity']:
|
||
reason = "抽象/身份信息。需通过情节演绎或特定 UI 界面(如家谱)界定。"
|
||
link = "联动相关动作,如:song 联动 sing;age 联动 numbers。"
|
||
else:
|
||
reason = "动作/状态词。需 Animator 动画、粒子特效或角色表情反馈。"
|
||
link = "建议设计状态切换任务,如:open vs closed;dirty vs clean。"
|
||
|
||
else: # T1 情况
|
||
scheme = "静态模型展示"
|
||
reason = "具象实物。在 Unity 中对应单一、静态的物理模型或材质资源。"
|
||
link = "可作为背景或道具。建议联动颜色词或方位词增加任务厚度。"
|
||
|
||
return pd.Series([scheme, reason, link])
|
||
|
||
# 执行规则生成新列
|
||
df[['教学方案展示', '实现理由', '联动建议']] = df.apply(apply_rules, axis=1)
|
||
|
||
# 4. 导出为Excel
|
||
output_file = "/root/.openclaw/workspace-xiaoban/LV1词汇教学方案生成结果.xlsx"
|
||
df.to_excel(output_file, index=False)
|
||
return f"Success: 处理完成,结果已保存到 {output_file}"
|
||
|
||
# 处理刚收到的LV1词汇表
|
||
input_path = "/root/.openclaw/media/inbound/â_¼ï_LV1-å_ç_å_è_åº_-ç¼_å_é_è_ç_è_é---d41d887f-5d65-4eab-928d-a717e5097e8c.xlsx"
|
||
result = process_vocabulary_system(input_path)
|
||
print(result)
|