zjunlp / OpenUE

[EMNLP 2020] OpenUE: An Open Toolkit of Universal Extraction from Text
http://openue.zjukg.org
MIT License
321 stars 61 forks source link

怎么用这个将已经训练好的模型进行知识抽取呢 #22

Closed jjjjjjjjj58 closed 2 years ago

jjjjjjjjj58 commented 2 years ago

这个代码是否包含将数据知识抽取的代码啊,我只找到了训练的

CheaSim commented 2 years ago

https://github.com/zjunlp/OpenUE/blob/main/scripts/interactive.sh 这个脚本是使用已经训练好的ner_modelseq_model进行知识抽取。 如果想对无标注的纯文本进行抽取,可以在初始化模型Inference之后使用以下代码进行抽取。

inputs = data.tokenizer("姚明出生在中国。", return_tensors='pt')
print(lit_model.inference(inputs))
jjjjjjjjj58 commented 2 years ago

学长我刚刚把interactive.sh跑了一边,最后的结果是会保存在./dataset/ske/cached_train_BertTokenizerFast_interactive中吗?如果是的话能否请教下如何打开这个CACHED文件0.0

jjjjjjjjj58 commented 2 years ago

就是知识抽取出来的结果。。。

CheaSim commented 2 years ago

./dataset/ske/cached_train_BertTokenizerFast_interactive是缓存训练样本用的,不会保存得到的三元组。 interactive.sh脚本是用来合并ner_modelseq_model并得到具体的比如F1的指标并不会保存抽取的三元组(计算F1后就扔了)。 如果想得到单一句子中抽取出来的三元组,可以使用lit_model.inference(inputs)单独使用模型去抽取句子的实体或者你可以在lit_model.test_steplit_model.test_epoch_end中修改代码来保存得到的三元组。

jjjjjjjjj58 commented 2 years ago

谢谢学长

jjjjjjjjj58 commented 2 years ago

作者你好,config在哪里设置啊,然后训练的epoch设置多少比较合适呢

CheaSim commented 2 years ago

config 是根据yaml文件设置的。 如果是使用脚本运行,那么直接在运行的脚本中加入命令 --key value即可。

jjjjjjjjj58 commented 2 years ago

请问是否所有的脚本都需 max_steps limit_train_batches max_epochs,改为 0,0(也就是不限制),和5呢,我ner.sh与seq.sh更改后都出现了的BUG,很奇怪。。。(更改前没有问题) 图片

jjjjjjjjj58 commented 2 years ago

图片 这是SEQ.SH的结果

CheaSim commented 2 years ago

针对不同的数据集需要不同的超参,有的时候需要更多的epochs,出现的那个bug检查一下test_only是否启用的,那个是用来推理的。