mittu commited on
Commit
4cd93b4
1 Parent(s): 247c2f7

Update app.py

Browse files

import の整理をしました。
より出力が承認と否決に固まるような入力への変更(これは経験則的で疑問文の単語数を減らした方がいい結果になりやすいです。)
"否定"と"肯定"はかなり分散表現が近く、"肯定"と承認もかなり分散表現が近いので、表現が全く異なる"否決"や"拒否"を入出力にした方がよさそうです。

Files changed (1) hide show
  1. app.py +9 -9
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 AutoTokenizer, AutoModelForSeq2SeqLM
7
  mT5Tokenizer = AutoTokenizer.from_pretrained("google/mt5-base")
8
  mT5Model = AutoModelForSeq2SeqLM.from_pretrained("google/mt5-base")
9
 
10
- from transformers import AutoTokenizer, AutoModelForCausalLM
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("否定").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,8 +30,8 @@ def MELCHIOR(sue):
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,13 +50,13 @@ def BALTHASAR(sue):
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)
 
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)