重要更新 (2024年6月29日)
原始代码在评估中存在一个无意的bug,导致对模型真实能力的评估不准确。我们感谢杨一倩和赵惠贞等人发现并调查了这个问题!请阅读 https://arxiv.org/pdf/2405.06459 了解更多详情。
请参考 https://github.com/NeuSpeech/EEG-To-Text 获取修正后的代码和详细实验。 为避免进一步混淆,我们已将此仓库存档。
在继续之前,请阅读 https://arxiv.org/pdf/2405.06459!
(AAAI 2022) 开放词汇表脑电图转文本解码和零样本情感分类
创建环境
运行 conda env create -f environment.yml
创建我们实验中使用的conda环境(名为"EEGToText")。
下载ZuCo数据集
- 从 https://osf.io/q3zws/files/ 的"OSF Storage"根目录下载ZuCo v1.0的'task1-SR'、'task2-NR'、'task3-TSR'的'Matlab文件',
解压并将所有.mat
文件分别移动到~/datasets/ZuCo/task1-SR/Matlab_files
、~/datasets/ZuCo/task2-NR/Matlab_files
、~/datasets/ZuCo/task3-TSR/Matlab_files
。 - 从 https://osf.io/2urht/files/ 的"OSF Storage"根目录下载ZuCo v2.0的'task1-NR'的'Matlab文件',解压并将所有
.mat
文件移动到~/datasets/ZuCo/task2-NR-2.0/Matlab_files
。
预处理数据集
运行 bash ./scripts/prepare_dataset.sh
预处理.mat
文件并准备情感标签。
对于每个任务,所有.mat
文件将被转换为一个.pickle
文件,存储在~/datasets/ZuCo/<task_name>/<task_name>-dataset.pickle
。
ZuCo的情感数据集(sentiment_labels.json
)将存储在~/datasets/ZuCo/task1-SR/sentiment_labels/sentiment_labels.json
。
经过筛选的斯坦福情感树库的情感数据集将存储在~/datasets/stanfordsentiment/ternary_dataset.json
。
使用示例
开放词汇表脑电图转文本解码
要训练脑电图转文本解码模型,运行 bash ./scripts/train_decoding.sh
。
要评估上述训练的脑电图转文本解码模型,运行 bash ./scripts/eval_decoding.sh
。
有关可用参数的详细配置,请参考/config.py
中的get_config(case = 'train_decoding')
函数。
零样本情感分类流程
我们首先分别训练解码器和分类器,然后在ZuCo task1-SR数据上评估整个流程。
要运行整个训练和评估过程,运行 bash ./scripts/train_eval_zeroshot_pipeline.sh
。
有关可用参数的详细配置,请参考/config.py
中的get_config(case = 'eval_sentiment')
函数。
引用
@inproceedings{wang2022open,
title={Open vocabulary electroencephalography-to-text decoding and zero-shot sentiment classification},
author={Wang, Zhenhailong and Ji, Heng},
booktitle={Proceedings of the AAAI Conference on Artificial Intelligence},
volume={36},
number={5},
pages={5350--5358},
year={2022}
}