Spaces:
Running
Running
Update app.py
Browse filesimport の整理をしました。
より出力が承認と否決に固まるような入力への変更(これは経験則的で疑問文の単語数を減らした方がいい結果になりやすいです。)
"否定"と"肯定"はかなり分散表現が近く、"肯定"と承認もかなり分散表現が近いので、表現が全く異なる"否決"や"拒否"を入出力にした方がよさそうです。
app.py
CHANGED
@@ -3,11 +3,11 @@ import torch
|
|
3 |
BERTTokenizer = AutoTokenizer.from_pretrained("cl-tohoku/bert-base-japanese")
|
4 |
BERTModel = AutoModelForMaskedLM.from_pretrained("cl-tohoku/bert-base-japanese")
|
5 |
|
6 |
-
from transformers import
|
7 |
mT5Tokenizer = AutoTokenizer.from_pretrained("google/mt5-base")
|
8 |
mT5Model = AutoModelForSeq2SeqLM.from_pretrained("google/mt5-base")
|
9 |
|
10 |
-
from transformers import
|
11 |
GPT2Tokenizer = AutoTokenizer.from_pretrained("rinna/japanese-gpt2-medium")
|
12 |
GPT2Model = AutoModelForCausalLM.from_pretrained("rinna/japanese-gpt2-medium")
|
13 |
|
@@ -20,8 +20,8 @@ GPT2=None
|
|
20 |
def MELCHIOR(sue):
|
21 |
#BERT
|
22 |
allow=BERTTokenizer("承認").input_ids[1]
|
23 |
-
deny=BERTTokenizer("
|
24 |
-
output=BERTModel(**BERTTokenizer('MELCHIORは科学者としての人格を持っています。人間とMELCHIORの対話です。人間「'+sue+'。承認 か
|
25 |
BERTTokenizer.batch_decode(torch.argmax(output,-1))
|
26 |
mask=output[0,-3,:]
|
27 |
votes.append(1 if mask[allow]>mask[deny] else -1)
|
@@ -30,8 +30,8 @@ def MELCHIOR(sue):
|
|
30 |
def BALTHASAR(sue):
|
31 |
#mT5
|
32 |
allow=mT5Tokenizer("承認").input_ids[1]
|
33 |
-
deny=mT5Tokenizer("
|
34 |
-
encoder_output=mT5Model.encoder(**mT5Tokenizer('BALTHASARは母としての人格としての人格を持っています。人間とBALTHASARの対話です。人間「'+sue+'。承認 か
|
35 |
id=None
|
36 |
p_answer=None
|
37 |
probs=None
|
@@ -50,13 +50,13 @@ def BALTHASAR(sue):
|
|
50 |
def CASPER(sue):
|
51 |
#GPT2
|
52 |
allow=GPT2Tokenizer("承認").input_ids[1]
|
53 |
-
deny=GPT2Tokenizer("
|
54 |
-
probs=GPT2Model(**GPT2Tokenizer('CASPERは女としての人格を持っています。人間とCASPERの対話です。人間「'+sue+'。承認 か
|
55 |
i=-1
|
56 |
p_answer=probs
|
57 |
id=torch.argmax(probs[i])
|
58 |
votes.append(1 if probs[i][allow]>probs[i][deny] else -1)
|
59 |
-
return "承認" if probs[i][allow]>probs[i][deny] else "
|
60 |
|
61 |
def greet(sue):
|
62 |
text1="BERT-1"+MELCHIOR(sue)
|
|
|
3 |
BERTTokenizer = AutoTokenizer.from_pretrained("cl-tohoku/bert-base-japanese")
|
4 |
BERTModel = AutoModelForMaskedLM.from_pretrained("cl-tohoku/bert-base-japanese")
|
5 |
|
6 |
+
from transformers import AutoModelForSeq2SeqLM
|
7 |
mT5Tokenizer = AutoTokenizer.from_pretrained("google/mt5-base")
|
8 |
mT5Model = AutoModelForSeq2SeqLM.from_pretrained("google/mt5-base")
|
9 |
|
10 |
+
from transformers import AutoModelForCausalLM
|
11 |
GPT2Tokenizer = AutoTokenizer.from_pretrained("rinna/japanese-gpt2-medium")
|
12 |
GPT2Model = AutoModelForCausalLM.from_pretrained("rinna/japanese-gpt2-medium")
|
13 |
|
|
|
20 |
def MELCHIOR(sue):
|
21 |
#BERT
|
22 |
allow=BERTTokenizer("承認").input_ids[1]
|
23 |
+
deny=BERTTokenizer("否決").input_ids[1]
|
24 |
+
output=BERTModel(**BERTTokenizer('MELCHIORは科学者としての人格を持っています。人間とMELCHIORの対話です。人間「'+sue+'。承認 か 否決 か?」'+"MELCHIOR 「[MASK]」",return_tensors="pt")).logits
|
25 |
BERTTokenizer.batch_decode(torch.argmax(output,-1))
|
26 |
mask=output[0,-3,:]
|
27 |
votes.append(1 if mask[allow]>mask[deny] else -1)
|
|
|
30 |
def BALTHASAR(sue):
|
31 |
#mT5
|
32 |
allow=mT5Tokenizer("承認").input_ids[1]
|
33 |
+
deny=mT5Tokenizer("否決").input_ids[1]
|
34 |
+
encoder_output=mT5Model.encoder(**mT5Tokenizer('BALTHASARは母としての人格としての人格を持っています。人間とBALTHASARの対話です。人間「'+sue+'。承認 か 否決 か?」'+"BALTHASAR 「<X>」",return_tensors="pt"))
|
35 |
id=None
|
36 |
p_answer=None
|
37 |
probs=None
|
|
|
50 |
def CASPER(sue):
|
51 |
#GPT2
|
52 |
allow=GPT2Tokenizer("承認").input_ids[1]
|
53 |
+
deny=GPT2Tokenizer("否決").input_ids[1]
|
54 |
+
probs=GPT2Model(**GPT2Tokenizer('CASPERは女としての人格を持っています。人間とCASPERの対話です。人間「'+sue+'。承認 か 否決 か?」'+"CASPER 「",return_tensors="pt")).logits[0]
|
55 |
i=-1
|
56 |
p_answer=probs
|
57 |
id=torch.argmax(probs[i])
|
58 |
votes.append(1 if probs[i][allow]>probs[i][deny] else -1)
|
59 |
+
return "承認" if probs[i][allow]>probs[i][deny] else "否決"
|
60 |
|
61 |
def greet(sue):
|
62 |
text1="BERT-1"+MELCHIOR(sue)
|