Jaseci调用ent_ext.train报错string indices must be integers,请求修复train_params
修复方案
问题根源
错误string indices must be integers出现在ent_ext.py的create_train_data函数中,说明代码尝试对字符串执行字典索引操作(访问["entities"]),本质是train_data未被正确传递给函数,或是train_params的格式不符合函数预期,导致函数内部错误地将字符串类型数据当作train_data的元素处理。
具体修复步骤
方案1:修正函数调用的参数名
Jaseci的ent_ext.train函数通常使用data和params作为参数名,而非train_data和train_params。修改调用语句的参数名:
can ent_ext.train; train_data=[ { "context": "EU rejects German call to boycott British lamb", "entities": [ { "entity_value": "EU", "entity_type": "ORG", "start_index": 0, "end_index": 2 }, { "entity_value": "German", "entity_type": "MISC", "start_index": 11, "end_index": 17 }, { "entity_value": "British", "entity_type": "MISC", "start_index": 34, "end_index": 41 } ] } ]; train_params={"num_epoch": 2, "batch_size": 1, "LR": 0.02}; // 修改参数名为data和params report ent_ext.train(data=train_data, params=train_params); }
方案2:修正train_params的键名
如果函数要求特定的参数键名(比如复数形式的num_epochs、小写的lr),调整train_params的键:
train_params={"num_epochs": 2, "batch_size": 1, "lr": 0.02};
方案3:验证train_params的结构
部分NER训练函数要求train_params是嵌套结构,将参数包裹在特定键下:
train_params={ "training": { "num_epoch": 2, "batch_size": 1, "LR": 0.02 } };
验证方法
依次尝试上述方案,执行walker run test_train_ner命令,若错误消失则说明修复成功。
内容的提问来源于stack exchange,提问作者Ashish Mahendra
相关产品推荐
相关产品推荐

