cheniison / e2e-coref-pytorch

Bert for End-to-end Neural Coreference Resolution in Pytorch
24 stars 8 forks source link

数据预处理 #5

Closed BugMaker-99 closed 3 years ago

BugMaker-99 commented 3 years ago

哥,按照你的readme进行数据预处理之前,需要将_skel转换成 _conll 文件吗

cheniison commented 3 years ago

项目使用的是ontonotes5.0数据集,而非conll2012数据集。项目中的数据预处理文件可以直接处理ontonotes5.0的原始文件。

BugMaker-99 commented 3 years ago

TypeError: only integer tensors of a single element can be converted to an index

model.py

得到所有候选spans

sentencesembed, = transformer_model(sentences_ids.to(device=torch.device(self.config["device"])), sentences_masks.to(device=torch.device(self.config["device"])))

tokens_embed = sentences_embed[sentences_valid_masks.bool()]

transformer_model返回了两个字符串,多维tensor作为字符串索引会报错呀。(不好意思,我的问题可能有点多-.-) 我看变量名tokens_embed 以为返回的是嵌入表示,打印出来是str。555~

cheniison commented 3 years ago

目前给的错误信息较少,大概率是输入数据格式不符。请检查各个变量,确定他们的意义是否是正确的。以下是部分变量的意义及其大小。

tokens_embed 是所有有效token的嵌入表示,是文本输入transformer后的输出并去掉了[SEP]、[CLS]、[PAD],其大小是(有效token数 嵌入的维度大小)。 sentences_embed 是 sentences_ids 输入 transformer 后得到的表示,其大小是 (句子数 (最长句子中token数 + 2) 嵌入的维度大小)。 sentence_ids 是 将文本中的token对应到 id 后的张量,大小是(句子数 (最长句子中token数 + 2)) sentences_valid_maskes 是 有效token 的 mask,大小同sentence_ids

例子: 文本(包含两个句子): [["你", "好"], ["世", "界", "!"]] 假设token与id的映射如下:[CLS]->0,[SEP]->1,[PAD]->2,你好世界!->3、4、5、6、7 则: sentence_ids :[[0, 3, 4, 1, 2], [0, 5, 6, 7, 1]] sentences_valid_masks: [[0, 1, 1, 0, 0], [0, 1, 1, 1, 0]]

BugMaker-99 commented 3 years ago

非常感谢您!我好好研究一下!