HUSTHY / Myown_sbert

17 stars 2 forks source link

载入模型 #1

Closed L54798516 closed 4 years ago

L54798516 commented 4 years ago

大佬,怎么把别处下载的模型,载入到transformer代码里呢,我看到你的用的不是默认自带的模型。

HUSTHY commented 4 years ago

SBert.py文件中: self.bert = BertModel.from_pretrained('pretrained_models/Chinese-BERT-wwm/') pretrained_models/Chinese-BERT-wwm/这个就是你下载的Bert模型pytorch版本的存放路径,仿照这写就可以了。

L54798516 commented 4 years ago

SBert.py文件中: self.bert = BertModel.from_pretrained('pretrained_models/Chinese-BERT-wwm/') pretrained_models/Chinese-BERT-wwm/这个就是你下载的Bert模型pytorch版本的存放路径,仿照这写就可以了。

E:\anaconda3\envs\tfpy\Lib\site-packages\transformers\chinese_wwm_ext,这是我存放的路径,然后还是不行,OSError: Can't load 'chinese_wwm_ext'. Make sure that:

L54798516 commented 4 years ago

您好,我可以加您的联系方式吗,确实有一些问题不理解,然后网上能搜到的内容很少,希望可以得到您的解答,麻烦您了。

HUSTHY commented 4 years ago

你在代码中是怎么调用你下载的模型呀?下载的模型只是权重和配置文件,使用的时候还是要在代码中初始化。 BertModel.from_pretrained('pretrained_models/Chinese-BERT-wwm/') 你使用模型的时候也要这么来使用或者其他的方式,路径是什么样的都行。。。

L54798516 commented 4 years ago

你在代码中是怎么调用你下载的模型呀?下载的模型只是权重和配置文件,使用的时候还是要在代码中初始化。 BertModel.from_pretrained('pretrained_models/Chinese-BERT-wwm/') 你使用模型的时候也要这么来使用或者其他的方式,路径是什么样的都行。。。

谢谢谢谢,非常感谢,这个我明白了。还有两个疑惑,1、BertTokenizer载入了Chinese-BERT-wwm模型,分词的时候仍然是以字为单位吗,但我看到这个模型的官方github说对组成同一个词的汉字全部进行Mask,这种不应该就以词为单位进行分词吗? 2、我文本数据预处理过程都可以在bert里进行了是吗?它有分词,对于使用这个bert,我还需要手写进行去除停用词操作吗?每句之间有seq分割,那一句是以标点符号为界,还是输入的一段文本就是一句话?我想进行大段文本聚类,那bert输出的向量就可以直接进行聚类了吗? 头回接触,真的很懵,希望大佬帮帮忙解答一下。

HUSTHY commented 4 years ago

bert是基于字符的,你不用管分词,然后停用词也不用管;bert就是用来提取一句话或者一段话的向量的,只不过是一段话的效果可能差点,你要做的大段文本的聚类,可能效果并不好!bert_base最多只能512个字符。这样用来做聚类的效果怎么样你自己取试试就好。

L54798516 commented 4 years ago

bert是基于字符的,你不用管分词,然后停用词也不用管;bert就是用来提取一句话或者一段话的向量的,只不过是一段话的效果可能差点,你要做的大段文本的聚类,可能效果并不好!bert_base最多只能512个字符。这样用来做聚类的效果怎么样你自己取试试就好。

我把文本字符个数控制到500以内就可以了是吗? 经过outputs = bertmodel(input_ids),我要聚类使用的向量应该是outputs的哪部分呢 ? 还有模型的输入一次只能是一段话吗,如果想批量输入就只能for循环输入了吧?

HUSTHY commented 4 years ago

bert模型简介、transformers中bert模型源码阅读、分类任务实战和难点总结 https://blog.csdn.net/HUSTHY/article/details/105882989 看我写的博客吧,应该能找到你需要的答案。 效果不敢保证,要去实验。

HUSTHY commented 4 years ago

还有你那个bert的输入输出具体是什么样的,你自己多花点时间研究下。直接用output的第一部分;没有批量输入,只能for循环。

L54798516 commented 4 years ago

还有你那个bert的输入输出具体是什么样的,你自己多花点时间研究下。直接用output的第一部分;没有批量输入,只能for循环。

谢谢您的耐心解答,非常感谢,解决了我的大问题。