K-BERT icon indicating copy to clipboard operation
K-BERT copied to clipboard

把model文件夹中模型换成英文bert可行吗?

Open Jiaxin-Liu-96 opened this issue 3 years ago • 6 comments

你好,觉得K-Bert的代码写的非常优美,请问我vm=None(即不用知识图谱),然后将model文件夹中的model.bin 、json文件、和vocab.txt文件换成英文bert对应的文件,再finetune时会有影响吗?

Jiaxin-Liu-96 avatar Dec 25 '20 05:12 Jiaxin-Liu-96

你好,觉得K-Bert的代码写的非常优美,请问我vm=None(即不用知识图谱),然后将model文件夹中的model.bin 、json文件、和vocab.txt文件换成英文bert对应的文件,再finetune时会有影响吗?

可以的,这就相当于普通的英文BERT。

autoliuweijie avatar Dec 25 '20 14:12 autoliuweijie

(不好意思我真的非常新手) 1.请问除了修改model中的文件,相应的utils文件夹中tokenizer.py和vocab.py文件,或者是其他地方需要做调整吗? 2.之所以提出问题1是因为我喂我自己的数据集进去做文本的二分类问题时,出现了分类标签一边倒的情况(即全部分到0类去了),但我却不知道该如何找原因去做调整。请问对于这种情况,您有什么调整方向上的建议吗? 【关于2点的详细阐述:我喂进去的文本长度比较长,英文数据集,text_a和text_b拼接后平均词数为318左右】 我的具体参数设置如下: python3 -u run_kbert_cls3.py --pretrained_model_path ./models/model.bin --config_path ./models/config.json --vocab_path ./models/vocab.txt --train_path ./datasets/mydataset/final_corpus_split/final_train_ti_ab.tsv --dev_path ./datasets/mydataset/final_corpus_split/final_dev_ti_ab.tsv --test_path ./datasets/mydataset/final_corpus_split/final_test_ti_ab.tsv --encoder bert --epochs_num 5 --batch_size 16 --seq_length 512 --kg_name none --no_vm --output_model_path ./outputs/test.bin --learning_rate 2e-5

Jiaxin-Liu-96 avatar Dec 26 '20 01:12 Jiaxin-Liu-96

(不好意思我真的非常新手) 1.请问除了修改model中的文件,相应的utils文件夹中tokenizer.py和vocab.py文件,或者是其他地方需要做调整吗? 2.之所以提出问题1是因为我喂我自己的数据集进去做文本的二分类问题时,出现了分类标签一边倒的情况(即全部分到0类去了),但我却不知道该如何找原因去做调整。请问对于这种情况,您有什么调整方向上的建议吗? 【关于2点的详细阐述:我喂进去的文本长度比较长,英文数据集,text_a和text_b拼接后平均词数为318左右】 我的具体参数设置如下: python3 -u run_kbert_cls3.py --pretrained_model_path ./models/model.bin --config_path ./models/config.json --vocab_path ./models/vocab.txt --train_path ./datasets/mydataset/final_corpus_split/final_train_ti_ab.tsv --dev_path ./datasets/mydataset/final_corpus_split/final_dev_ti_ab.tsv --test_path ./datasets/mydataset/final_corpus_split/final_test_ti_ab.tsv --encoder bert --epochs_num 5 --batch_size 16 --seq_length 512 --kg_name none --no_vm --output_model_path ./outputs/test.bin --learning_rate 2e-5

  1. 这样是可以的,就相当于普通的英文BERT,如果你希望使用普通英文BERT,更推荐用我们的另一个项目:https://github.com/dbiir/UER-py/tree/master/uer

  2. tokenizer选用berttokenizer就可以,vocab需要使用英文的。

  3. 这个问题不好说,需要逐步调试进行分析,同时也看看训练过程中loss是如何变化的?

autoliuweijie avatar Dec 28 '20 01:12 autoliuweijie

你好!将model文件夹中的model.bin 、json文件、和vocab.txt文件换成英文bert对应的文件,项目也跑不起来,请问可以告知一下其他处理细节吗?

guozhenwen avatar Apr 04 '21 08:04 guozhenwen

你好!将model文件夹中的model.bin 、json文件、和vocab.txt文件换成英文bert对应的文件,项目也跑不起来,请问可以告知一下其他处理细节吗?

我后来查了一下代码,发现最难改的地方就是在知识图谱注入的处理时,作者采用的是一个一个中文字符读入,然后再给其找相应的知识补充,在使用英文的时候例如thank就会被拆成T-H-A-N-K,然后由字符去知识图谱里找词汇,所以跑不动。后来我直接换了别的模型了

Jiaxin-Liu-96 avatar Jun 06 '21 23:06 Jiaxin-Liu-96

(不好意思我真的非常新手) 1.请问除了修改model中的文件,相应的utils文件夹中tokenizer.py和vocab.py文件,或者是其他地方需要做调整吗? 2.之所以提出问题1是因为我喂我自己的数据集进去做文本的二分类问题时,出现了分类标签一边倒的情况(即全部分到0类去了),但我却不知道该如何找原因去做调整。请问对于这种情况,您有什么调整方向上的建议吗? 【关于2点的详细阐述:我喂进去的文本长度比较长,英文数据集,text_a和text_b拼接后平均词数为318左右】 我的具体参数设置如下: python3 -u run_kbert_cls3.py --pretrained_model_path ./models/model.bin --config_path ./models/config.json --vocab_path ./models/vocab.txt --train_path ./datasets/mydataset/final_corpus_split/final_train_ti_ab.tsv --dev_path ./datasets/mydataset/final_corpus_split/final_dev_ti_ab.tsv --test_path ./datasets/mydataset/final_corpus_split/final_test_ti_ab.tsv --encoder bert --epochs_num 5 --batch_size 16 --seq_length 512 --kg_name none --no_vm --output_model_path ./outputs/test.bin --learning_rate 2e-5

您好,请问您的问题解决了么?可以加个qq交流一下不(我的q:1023227683)?我把huggingface模型用作者代码转换成uer可用的格式之后,分类一边倒的问题解决了,但是二分类的准确率还是非常低,想和您探讨一下当初您如何处理这个问题的

我后来查了一下代码,发现最难改的地方就是在知识图谱注入的处理时,作者采用的是一个一个中文字符读入,然后再给其找相应的知识补充,在使用英文的时候例如thank就会被拆成T-H-A-N-K,然后由字符去知识图谱里找词汇,所以准确率会比较低。你可以尝试拿一两条英文数据debug一下add_knowledge_worker这个函数,就大概能清楚了。

Jiaxin-Liu-96 avatar Jun 06 '21 23:06 Jiaxin-Liu-96