复现Zoom Out and Observe: News Environment Perception for Fake News Detection代码踩坑记录

作者在复现ZoomOutandObserve方法检测假新闻的代码过程中遇到了数据获取、模型准备和运行时的多个问题,包括torch版本不兼容、预训练模型下载失败、环境配置错误等。通过调整代码和环境设置,如修改torch版本、处理HTTPError、解决服务器联网问题、调整transformers的使用方式,以及适应不同语言数据集的差异,作者逐步解决了这些问题并成功运行了模型训练。
摘要由CSDN通过智能技术生成

注意事项

本文作者的环境配置的主要是运行中文数据集的配置,所以英文数据集作者可能疏忽了,很多地方都需要改,中文部分应该不需要改这么多,但有问题应该也差不多就是了…

数据获取

首先从github上下载代码,地址是https://github.com/ICTMCG/News-Environment-Perception/
这篇论文的数据是作者新整理的,使用需要提交表单获得作者授权,完事后作者会将数据发送到你填写的邮箱,地址是Application to Use the Datasets for News Environment Perceived Fake News Detection"这些都是readme中有的就不废话了。

处理数据

因为服务器装的是cuda11.1,支持不了1.6.0,重装cuda太慢了,所以我直接用的1.8,其他的和作者给的一样。

python==3.6.10
torch==1.8.0
transformers==4.0.0

运行Step1.1: Prepare the SimCSE model的时候,我遇到的问题

  1. 首先是系统可能会报错cannot import name ‘SAVE_STATE_WARNING’,这种情况是因为torch版本的问题,直接根据报错的文件找到报错行,将from *** import SAVE_STATE_WARNING注释掉,换成SAVE_STATE_WARNING=“”即可。
  2. 其次就是在获取预训练模型的时候会出问题,会报错如下:
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://huggingface.co/PretrainedLM/bert-base-uncased/resolve/main/vocab.txt

或者:

Unauthorized for url: https://huggingface.co/PretrainedLM/bert-base-uncased/

经过查看BERT官方API文档,发现是因为调用参数和地址变了,官方如下所示:
BERT
将作者的代码部分改成这样就行,修改成如下所示:
代码修改部分1

  1. 你还可能在服务器上运行脚本的时候,它报参数不能识别,具体原因我也不清楚,既然如此,让他成为一行就行了,如下所示:
    代码修改部分2

运行Step1.2: Obtain the texts’ representations时,我遇到的问题

  1. 遇到的第一个问题是MAX_LEN未定义不能识别,代码中是在判断中创建的局部变量,在前面加一个定义就好:
    代码修改部分3

  2. 遇到的第二个问题如下:

Traceback (most recent call last):
  File "get_repr.py", line 177, in <module>
    device=device)
  File "get_repr.py", line 46, in __init__
    self.tokenizer = BertTokenizer.from_pretrained(PTM_path)
  File "/home/common/anaconda3/envs/chenyuchao-torch18/lib/python3.6/site-packages/transformers/tokenization_utils_base.py", line 1747, in from_pretrained
    local_files_only=local_files_only,
  File "/home/common/anaconda3/envs/chenyuchao-torch18/lib/python3.6/site-packages/transformers/file_utils.py", line 1007, in cached_path
    local_files_only=local_files_only,
  File "/home/common/anaconda3/envs/chenyuchao-torch18/lib/python3.6/site-packages/transformers/file_utils.py", line 1177, in get_from_cache
    "Connection error, and we cannot find the requested files in the cached path."
ValueError: Connection error, and we cannot find the requested files in the cached path. Please try again or make sure your Internet connection is on.

我们的服务器有点特殊,需要手动登录校园网账号联网…
然后又报错如下:

Traceback (most recent call last):
  File "get_repr.py", line 177, in <module>
    device=device)
  File "get_repr.py", line 46, in __init__
    self.tokenizer = BertTokenizer.from_pretrained(PTM_path)
  File "/home/common/anaconda3/envs/chenyuchao-torch18/lib/python3.6/site-packages/transformers/tokenization_utils_base.py", line 1762, in from_pretrained
    raise EnvironmentError(msg)
'. Make sure that:d tokenizer for './train_SimCSE/ckpts/English

' is a correct model identifier listed on 'https://huggingface.co/models'

' is the correct path to a directory containing relevant tokenizer files

参考答案在:https://deathymz.blog.csdn.net/article/details/118943896?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-118943896-blog-124115501.pc_relevant_recovery_v2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-118943896-blog-124115501.pc_relevant_recovery_v2&utm_relevant_index=1
我将run.sh改成如下内容,直接放到命令行运行可以,调用sh run.sh不行,不理解…
代码修改4
ddd
然鹅又出现了这个错误(别太荒谬)…这算半天到100%的文件没存?
在这里插入图片描述
完事发现with open文件不存在时,只能创建文件,但是不能创建文件夹,这里把dataset里面的数据复制一份,在SimCSE新建data文件夹,将dataset里面的文件搁里面就行。
复制过后结构如下:
在这里插入图片描述
然后就可以了,如下图所示。
在这里插入图片描述

运行step2: Construct the macro & micro environment

我打算先跑的是英文数据集,但是报如下错误,检查后发现中英文某些json字段不一样,中文是有time,英文是date,代码直接是取得time字段的值,因此报错。
修改代码如下:
在这里插入图片描述
然后就还要在当前文件夹下新建以下文件夹:
在这里插入图片描述
然后就可以了。
在这里插入图片描述

运行step3: Prepare for the specific detectors

Tokenization by Word Embeddings

运行这部分遇到的问题是下载nltk的时候卡死了,解决办法是:https://blog.csdn.net/Friedrichor/article/details/122445086
加载完数据是这样:
在这里插入图片描述

Tokenization by BERT

这一步很顺利,没遇到问题
在这里插入图片描述

Event Adversarial Training

这一步也没问题
在这里插入图片描述

Emotion Features

报错如下:
在这里插入图片描述
运行下图的preprocess.ipynb文件(我是在centos服务器上运行的,懒得配置notebook了),或者新建一个preprocess.py文件,把ipynb文件内容复制到其中,运行之后,再运行之前那个命令,结果如下:
在这里插入图片描述

Fact-checking Articles

第一步,Retrieve the most relevant articles for every post.
将以下文件夹的ipynb文件复制到py文件,运行。
运行的时候可能会报错bm25找不到,安装bm25后又报错gensim找不到,这时候需要安装gensim==3.8.3,命令如下:

pip install bm25
pip install gensim==3.8.3

然后运行的时候报错如下:
在这里插入图片描述
查看中文处理的代码段发现和英文不一样,应该是本篇论文作者主要使用中文数据集的缘故,我是跑的英文数据集…
修改代码如下图,其中English.py中的内容和English.ipynb一样…
在这里插入图片描述
再次运行就可以了…
在这里插入图片描述
第二步,Tokenize the fact-checking articles by word embeddings:
在加载article的时候出现这个问题:
在这里插入图片描述
检查数据后发现是数据里面没有“content_all”字段,(作者能不能长点心,这篇论文的代码bug也太多了),修改代码如下:
在这里插入图片描述
加载完如下:
在这里插入图片描述

训练模型

首先在model下新建文件夹如下:
在这里插入图片描述

运行脚本,如果报参数不能识别就给他弄到一行,如果报以下错误,解决办法:https://blog.csdn.net/imqyt/article/details/123067857

ModuleNotFoundError: No module named ‘torch_geometric‘

终于开始训练了,泪目》| __|《
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值