如何用bert做微信公众号自动问答问题

bert不说了,用它主要是公司客户先把客户拉进公众号,然后写好了问答卷子给我,让公众号自己先回答问题。具体思路就是直接用bert的transformer做特征提取,也不fine tune,直接把他的输出接着往下面贯,具体如下:
1 用哈工大训练好的bert,这样程序自动拉pretrained

    from transformers import BertTokenizer, BertModel, BertForMaskedLM
    mod_name="hfl/chinese-roberta-wwm-ext-large"
    tokenizer=BertTokenizer.from_pretrained(mod_name)
    model=BertModel.from_pretrained(mod_name)
    

2 因为一个回答对应的问题表述有很多种,把问题分类别,相同答案的是一类,那么nlp就成分类问题。把bert的cls输出直接套分类(比如直连接)模型。此外加个什么都不是类别。这个类别样本那多了去。

3 接着来了个问题,发现模型给了两个输出,last hidden 和pooler_output。 last的第一个向量是cls我是知道的,那么这个pooler_output是啥?

    encoded_input = tokenizer(s4, return_tensors='pt')
    output = model(**encoded_input)
    print (output["last_hidden_state"][0])
    print (output["pooler_output"])

4 找梯子谷歌了,这个pooler是cls做线性变化接着再tan来的。那么到底用哪个?其实两个都可以,但是看了几个回答,说hidden的第一个效果可能更好。

特此记录。

你可能感兴趣的:(bert,自然语言处理)