fastnlp / fastNLP

fastNLP: A Modularized and Extensible NLP Framework. Currently still in incubation.
https://gitee.com/fastnlp/fastNLP
Apache License 2.0
3.07k stars 448 forks source link

关于NER序列标注任务的求助 #354

Open cdzhjk001 opened 3 years ago

cdzhjk001 commented 3 years ago

尊敬的各位大佬: 我刚开始学习使用FastNLP,在按照贵方提供的“快速入门-序列标注”任务完成了数据载入、模型训练、测试等实验后,在具体模型的使用方面存在困难,特来向各位请教,我具体的求助事项有以下两点: 1、如果我需要增加我自己的命名实体标注样本,应该进行哪些操作?是否有示例代码供参考?(追加说明:我将教程中由WeiboNERPipe获取的数据保存后发现,其中Target列中的数据,其标注的方式为非命名实体标注为0,命名实体为其他数值,但数值之间存在着明显的差异,仅能猜测实际是为了区分不同的实体类型,关于训练集标注的标准或方法能否有对应的说明,或者给我个参考材料也行) 2、教程中训练完成的模型我应当如何使用?例如,我想对如“电力系统主要由发电厂、电力网以及用户三个部分组成。”这个字符串执行NER标注任务,应当如何操作或使用何种函数?方法?对象?(追加说明:我尝试使用FastNLP提供的Predictor对象执行任务,但一直提示“Tensors must have same number of dimensions: got 2 and 3”错误) 还烦请各位大佬拨冗解答,如上述问题不属于贵方解答的范围,还烦请指点相关参考材料的所在位置。 NLP小白跪求解答

LeeSureman commented 3 years ago

1.是的,数据集的格式一般采用conll格式,可以参考 https://github.com/jiesutd/LatticeLSTM 里的input format. 2.可以先用当前模型的对应的Vocabulary将这个句子转为ID,然后输入给模型,模型接收的参数一般为tensor,因此需要将ID list转为对应tensor。你遇到的这个问题可能是由于predict的时候没有加batch的那一维,在深度学习场景下,一般接收的输入是成batch的,对于句子的id序列来说,对应的tensor形状通常为[batch,seq_len]

LeeSureman commented 3 years ago

模型执行的可能只是序列标注过程,因此模型给出的输出应该是对应着[batch,seq_len,label_type_num]这么一个tensor,如果要获得最终的实体信息,可能需要先将这个label id tensor转为字符串形式的label list,然后利用fastNLP.core.metrics中的将label序列转为span信息的方法来将它转换成实体信息,如_bioes_tag_to_spans(对应的标签编码需要一致)

cdzhjk001 commented 3 years ago

好的非常感谢,容我试试看。

yc096 commented 3 years ago

@LeeSureman 您是否有代码样例呢?

LeeSureman commented 3 years ago

@LeeSureman 您是否有代码样例呢?

http://www.fastnlp.top/docs/fastNLP/tutorials/%E5%BA%8F%E5%88%97%E6%A0%87%E6%B3%A8.html 可以参照这个页面

N1ckyyy commented 2 years ago

尊敬的各位大佬: 我刚开始学习使用FastNLP,在按照贵方提供的“快速入门-序列标注”任务完成了数据载入、模型训练、测试等实验后,在具体模型的使用方面存在困难,特来向各位请教,我具体的求助事项有以下两点: 1、如果我需要增加我自己的命名实体标注样本,应该进行哪些操作? 是否有示例代码供参考? (追加说明:我将教程中由WeiboNERPipe获取的数据保存后发现,其中Target列中的数据,其标注的方式为非命名实体标注为0,命名实体为其他数值,但数值之间存在着明显的差异,仅能猜测实际是为了区分不同的实体类型,关于训练集标注的标准或方法能否有对应的说明,或者给我个参考材料也行) 2、教程中训练完成的模型我应当如何使用? 例如,我想对如“电力系统主要由发电厂、电力网以及用户三个部分组成。 ”这个字符串执行NER标注任务,应当如何操作或使用何种函数? 方法? 对象? (追加说明:我尝试使用FastNLP提供的Predictor对象执行任务,但一直提示“Tensors must have same number of dimensions: got 2 and 3”错误) 还烦请各位大佬拨冗解答,如上述问题不属于贵方解答的范围,还烦请指点相关参考材料的所在位置。 NLP小白跪求解答

您好 请问下你实现了用自己的数据集了么?