koziev ilya
commited on
Commit
•
3126589
1
Parent(s):
68864bd
more samples of model performance are given in readme
Browse files
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 |
+
|