koziev ilya commited on
Commit
3126589
1 Parent(s): 68864bd

more samples of model performance are given in readme

Browse files
Files changed (1) hide show
  1. README.md +170 -0
README.md CHANGED
@@ -32,6 +32,8 @@ widget:
32
  Раскрытая реплика позволяет использовать многие классические инструменты NLP для обработки, включая регулярные выражения, классификаторы
33
  интентов и т.д.
34
 
 
 
35
 
36
  ## Пример использования
37
 
@@ -63,3 +65,171 @@ text = tokenizer.decode(output_sequences[0].tolist(), clean_up_tokenization_spac
63
  text = text[: text.find('</s>')]
64
  print(text)
65
  ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  Раскрытая реплика позволяет использовать многие классические инструменты NLP для обработки, включая регулярные выражения, классификаторы
33
  интентов и т.д.
34
 
35
+ Подробнее о том, какие ситуации обрабатываются моделью, см. в конце страницы.
36
+
37
 
38
  ## Пример использования
39
 
 
65
  text = text[: text.find('</s>')]
66
  print(text)
67
  ```
68
+
69
+ ## Обрабатываемые ситуации
70
+
71
+ Модель разрабатывается с прицелом на использование в [чатботе](https://github.com/Koziev/chatbot). Она поддерживает некоторые
72
+ типичные ситуации в читчате, которые перечислены далее.
73
+
74
+ В примерах после символа ⇒ идет эталонная раскрытая реплика.
75
+
76
+ Эллипсисы:
77
+
78
+ ```
79
+ - Как же тебя зовут, а?
80
+ - Меня – Стас, а тебя? ⇒ Меня зовут Стас. Как тебя зовут?
81
+ ```
82
+
83
+ В редких случаях и главное слово в словосочетании может опускаться:
84
+
85
+ ```
86
+ - Мама, купи мне собаку.
87
+ - А ты будешь за ней ухаживать?
88
+ - А ты мне здоровую купи. ⇒ купи мне здоровую собаку
89
+ ```
90
+
91
+ Анафора:
92
+
93
+ ```
94
+ - Ты собак любишь?
95
+ - Не люблю я их ⇒ я не люблю собак
96
+ ```
97
+
98
+ Иногда требуется привлечение здравого смысла:
99
+
100
+ ```
101
+ - Мне на голову упала коробка.
102
+ - А что в ней было? ⇒ что было в коробке|голове?
103
+ ```
104
+
105
+ Гэппинг:
106
+
107
+ ```
108
+ - Ты кошек любишь?
109
+ - Их – нет ⇒ я не люблю кошек
110
+ ```
111
+
112
+ Сложный гэппинг:
113
+
114
+ ```
115
+ - В 25 лет вы получаете пенсию?
116
+ - Не я - отец. ⇒ Я не получаю пенсию. Отец получает пенсию
117
+ ```
118
+
119
+ Типичные паттерны: например, восстановление подлежащего (см. pro drop)
120
+
121
+ ```
122
+ - Согласна?
123
+ - Да ⇒ я согласна
124
+ ```
125
+
126
+ Между строк:
127
+
128
+ ```
129
+ - Ты разве ещё не ел?
130
+ - Тебя ждал ⇒ я еще не ел. я ждал тебя.
131
+ ```
132
+
133
+ Отрицания в диалоге:
134
+
135
+ ```
136
+ - Я не прав?
137
+ - Нет. (Да.) ⇒ ты не прав
138
+ ```
139
+
140
+ Интерпретация не сводится к копированию слов из контекста:
141
+
142
+ ```
143
+ - Как прошли выходные?
144
+ - В Простоквашино ездила... ⇒ я на выходных ездила в Простоквашино
145
+ ```
146
+
147
+ Все вышесказанное может быть в разных сочетаниях одновременно:
148
+
149
+ ```
150
+ - Где твой кот?
151
+ - Жена к ветеринару повезла. ⇒ жена повезла моего кота к ветеринару
152
+ - Заболел? ⇒ твой кот заболел?
153
+ ```
154
+
155
+ Сложные предложения:
156
+
157
+ ```
158
+ - Я сварила суп, иди ешь.
159
+ - Из чего? ⇒ из чего ты сварила суп?
160
+ ```
161
+
162
+ Замена подлежащего:
163
+
164
+ ```
165
+ - Как себя чувствует твой попугай?
166
+ - Бедняга умер... ⇒ мой попугай умер
167
+ ```
168
+
169
+ Иногда от реплики остается только наречие:
170
+
171
+ ```
172
+ - Девушка, а Вы животных любите?
173
+ - Очень! ⇒ я очень люблю животных
174
+ ```
175
+
176
+ Форма сказуемого иногда может меняться из соображений согласованности:
177
+
178
+ ```
179
+ - Рабинович, как думаете, что будет делать правительство, если завтра население разом бросит курить?
180
+ - Таки, поднимут акцизы на алкоголь... ⇒ правительно поднимет акцизы на алкоголь, если завтра население разом бросит курить
181
+ ```
182
+
183
+ Во всех случаях модель не выдает никакой информации, откуда она взяла подстановку
184
+ для замены или заполнения в выходном тексте. На выходе получается просто текст реплики
185
+ в том виде, как ее мог бы сказать человек, безо всяких дополнительных отсылок и маркеров:
186
+
187
+ ```
188
+ - У тебя брат есть?
189
+ - Да, есть
190
+ - Где он работает? ⇒ Где работает твой брат?
191
+ ```
192
+
193
+ В данном примере модель никак не сообщит нам, откуда она взяла подстановку “твой брат” для местоимения “он”.
194
+ Это сильно упрощает ручную разметку обучающего корпуса и не особо мешает диалоговой системе.
195
+
196
+ Во многих случаях модель приводит порядок слов к более-менее каноническому. Точнее говоря, она старается
197
+ выдать текст с таким порядком слов, который обычно используют носители языка в данном контексте диалога.
198
+ Если русскоговорящие предпочитают OVS вместо формального SVO, то модель будет выдавать именно OVS:
199
+
200
+ ```
201
+ У тебя штрафы были?
202
+ Нет, их никогда не было ⇒ у меня никогда не было штрафов
203
+ ```
204
+
205
+ Модель обычно вставляет личные местоимения, даже если форма глагола позволяет обойтись без них:
206
+
207
+ ```
208
+ Жару любишь?
209
+ Ненавижу ее ⇒ я ненавижу жару
210
+ ```
211
+
212
+ Сложносочиненные ответы разбиваются на отдельные клаузы, чтобы downstream pipeline мог обработать их последовательно:
213
+
214
+ ```
215
+ Тебя как зовут?
216
+ Кортана, а тебя как? ⇒ Меня зовут Кортана. Как тебя зовут?
217
+ ```
218
+
219
+ В качестве контекста можно подавать последние 2 или 3 реплики. Более длинные отношения весьма редки, чтобы ради них усложнять датасет. Кроме того, во многих случаях достаточно применить модель рекурсивно - подать вместо исходных реплик диалога результат их раскрытия моделью:
220
+
221
+ ```
222
+ Где живешь?
223
+ В Шанхае ⇒ я живу в Шанхае
224
+ Давно? ⇒ ты давно живешь в Шанхае?
225
+ Два года уже ⇒ я уже два года живу в Шанхае
226
+ Как там погода? ⇒ как там погода в Шанхае?
227
+ ```
228
+
229
+ Последнее, что хочется отметить: модель обучена только на диалоговых данных, с короткими репликами.
230
+ Она практически не способна раскрывать анафоры в художественных текстах, хотя это скорее не ограничение модели,
231
+ а особенность обучающего датасета.
232
+
233
+
234
+
235
+