david-ar commited on
Commit
00cfc63
·
verified ·
1 Parent(s): 0077ecb

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. modeling_twentyq.py +22 -14
modeling_twentyq.py CHANGED
@@ -70,9 +70,11 @@ class TwentyQForCausalLM(PreTrainedModel, GenerationMixin):
70
  text = raw_bytes.decode("utf-8", errors="replace")
71
 
72
  # Parse conversation and get next response
73
- answers, qnum, last_was_guess, game_over_msg = self._parse_conversation(text)
74
 
75
- if game_over_msg:
 
 
76
  response = game_over_msg
77
  else:
78
  # Seed RNG from conversation for deterministic play
@@ -90,6 +92,7 @@ class TwentyQForCausalLM(PreTrainedModel, GenerationMixin):
90
  qnum = 0
91
  last_was_guess = False
92
  game_over_msg = None
 
93
 
94
  # Split into turns by [A] and [U] markers
95
  parts = text.replace("\r", "").split("\n")
@@ -120,6 +123,9 @@ class TwentyQForCausalLM(PreTrainedModel, GenerationMixin):
120
  if avm_code:
121
  answers.append((0, avm_code, False))
122
  qnum += 1
 
 
 
123
  i += 2
124
 
125
  elif a_msg.lower().startswith("i'm guessing"):
@@ -130,14 +136,14 @@ class TwentyQForCausalLM(PreTrainedModel, GenerationMixin):
130
  ans_code = ANSWER_WORDS.get(u_lower, 0)
131
  if ans_code == 2: # Yes — correct guess
132
  game_over_msg = f"I win! Got it in {qnum + 1} questions."
133
- elif ans_code == -1: # Close
134
- if t_idx >= 0:
135
- answers.append((t_idx, 0, True))
136
- qnum += 1
137
- else: # No — wrong
138
  if t_idx >= 0:
139
  answers.append((t_idx, 0, True))
140
  qnum += 1
 
 
 
141
  i += 2
142
 
143
  elif a_msg.lower().startswith("i win") or a_msg.lower().startswith("i'm stumped"):
@@ -149,17 +155,19 @@ class TwentyQForCausalLM(PreTrainedModel, GenerationMixin):
149
  # Regular question
150
  q_text = a_msg.rstrip("?").strip()
151
  q_idx = self._q_lookup.get(q_text.lower(), -1)
152
- ans_code = ANSWER_WORDS.get(u_lower, 6)
153
- if ans_code == -1:
154
- ans_code = 6 # treat "close" as unknown for regular q
155
- if q_idx >= 0:
156
- answers.append((q_idx, ans_code, False))
157
- qnum += 1
 
 
158
  i += 2
159
  else:
160
  i += 1
161
 
162
- return answers, qnum, last_was_guess, game_over_msg
163
 
164
  def _next_move(self, answers, qnum, last_was_guess):
165
  if qnum == 0:
 
70
  text = raw_bytes.decode("utf-8", errors="replace")
71
 
72
  # Parse conversation and get next response
73
+ answers, qnum, last_was_guess, game_over_msg, unrecognized = self._parse_conversation(text)
74
 
75
+ if unrecognized:
76
+ response = f"I didn't understand that. Please answer: {unrecognized}"
77
+ elif game_over_msg:
78
  response = game_over_msg
79
  else:
80
  # Seed RNG from conversation for deterministic play
 
92
  qnum = 0
93
  last_was_guess = False
94
  game_over_msg = None
95
+ unrecognized = None # set to hint string if last answer wasn't understood
96
 
97
  # Split into turns by [A] and [U] markers
98
  parts = text.replace("\r", "").split("\n")
 
123
  if avm_code:
124
  answers.append((0, avm_code, False))
125
  qnum += 1
126
+ unrecognized = None
127
+ else:
128
+ unrecognized = "Animal, Vegetable, Mineral, or Other"
129
  i += 2
130
 
131
  elif a_msg.lower().startswith("i'm guessing"):
 
136
  ans_code = ANSWER_WORDS.get(u_lower, 0)
137
  if ans_code == 2: # Yes — correct guess
138
  game_over_msg = f"I win! Got it in {qnum + 1} questions."
139
+ unrecognized = None
140
+ elif ans_code == 1 or ans_code == -1: # No or Close
 
 
 
141
  if t_idx >= 0:
142
  answers.append((t_idx, 0, True))
143
  qnum += 1
144
+ unrecognized = None
145
+ else:
146
+ unrecognized = "Yes, No, or Close"
147
  i += 2
148
 
149
  elif a_msg.lower().startswith("i win") or a_msg.lower().startswith("i'm stumped"):
 
155
  # Regular question
156
  q_text = a_msg.rstrip("?").strip()
157
  q_idx = self._q_lookup.get(q_text.lower(), -1)
158
+ ans_code = ANSWER_WORDS.get(u_lower, 0)
159
+ if ans_code == -1 or ans_code == 0:
160
+ unrecognized = "Yes, No, Probably, Doubtful, Maybe, or Unknown"
161
+ else:
162
+ unrecognized = None
163
+ if q_idx >= 0:
164
+ answers.append((q_idx, ans_code, False))
165
+ qnum += 1
166
  i += 2
167
  else:
168
  i += 1
169
 
170
+ return answers, qnum, last_was_guess, game_over_msg, unrecognized
171
 
172
  def _next_move(self, answers, qnum, last_was_guess):
173
  if qnum == 0: