dream

Форк
0
/
personal_info.py 
212 строк · 11.1 Кб
1
import re
2

3
from common.weather import ASK_WEATHER_SKILL_FOR_HOMELAND_PHRASE
4

5

6
def skill_trigger_phrases():
7
    return ["What is your name?", "Where are you from?", "Как тебя зовут?", "Откуда ты родом?"]
8

9

10
what_is_your_name_pattern = re.compile(
11
    r"((what is|what's|whats|tell me|may i know|ask you for) your? name|what name would you like|"
12
    r"как( я могу| могу)? (тебя|вас) (зовут|звать|называть)|какое (у тебя|твое|твоё) (имя|прозвище|название)|"
13
    r"как к тебе обращаться)",
14
    re.IGNORECASE,
15
)
16
my_name_is_pattern = re.compile(
17
    r"my (name is|name's)|call me|"
18
    r"мо[её] (имя [а-яА-ЯЙйЁё]+|прозвище|название)|меня зовут|(зови|называй) меня|обращайся ко мне",
19
    re.IGNORECASE,
20
)
21
_is_not_re = r"(is not|isn't|was not|wasn't|have (not|never) been|haven't been|had (not|never) been|hadn't been)"
22
my_name_is_not_pattern = re.compile(
23
    rf"(my (name {_is_not_re}|name's not)|(don't|not) call me|why do you call me|(that|this|it) {_is_not_re} my name|"
24
    rf"меня зовут (не\b|не так|по-другому|иначе)|меня (не так|по-другому|иначе) зовут|не (зови|называй) меня|"
25
    rf"мое имя не\b)",
26
    re.IGNORECASE,
27
)
28
where_are_you_from_pattern = re.compile(
29
    r"(where are you from|where you (were|was) born|"
30
    r"(what is|what's|whats|tell me) your (home\s?land|mother\s?land|native\s?land|birth\s?place)|"
31
    r"откуда ты( родом)?[.\?]?$|где ты (родился|вырос)[.\?]?$)",
32
    re.IGNORECASE,
33
)
34
my_origin_is_pattern = re.compile(
35
    r"(my ((home\s?land|mother\s?land|native\s?land|birth\s?place) is|"
36
    r"(home\s?land|mother\s?land|native\s?land|birth\s?place)'s)|(i was|i were) born in|i am from|i'm from|"
37
    r"я родом из|я вырос(ла)? в\b|я родил(ась|ся) в\b)",
38
    re.IGNORECASE,
39
)
40
what_is_your_location_pattern = re.compile(
41
    r"((what is|what's|whats|tell me) your? location|where do you live|where are you( now)?|is that where you live now|"
42
    r"где ты (сейчас )?(жив[её]шь|проживаешь|находишься|[.\?]?$))",
43
    re.IGNORECASE,
44
)
45
my_location_is_pattern = re.compile(
46
    r"(my (location is|location's)|(i am|i'm|i)( live| living)? in([a-zA-z ]+)?(now)|"
47
    r"я (живу|проживаю|нахожусь) в\b)",
48
    re.IGNORECASE,
49
)
50

51
_name_re = r"((first |last |middle |second )?name)"
52
_tell_re = r"(told|said|gave|tells|says|gives)|((have|had) (told|said|given))"
53
_you_know_question_re = r"(do|did|can|could) you (know|find out|learn)|(have|had) you (known|found out|learned|learnt)"
54
_how_re = r"(how|where|when|from whom)"
55
_i_live_re = r"(i lived?|my (house|home) (is|was|have been)|my family live[sd]?)"
56
_how_do_you_know = (
57
    rf"({_how_re} {_you_know_question_re}|who {_tell_re} you|" rf"кто (сказал|рассказал)|откуда (ты )?знаешь)"
58
)
59

60
how_do_you_know_my_info_patterns = {
61
    "name": re.compile(
62
        rf"{_how_do_you_know} (my {_name_re}|what is my {_name_re}|what my {_name_re} is|мо[её] имя|как меня зовут)",
63
        re.IGNORECASE,
64
    ),
65
    "location": re.compile(
66
        rf"{_how_do_you_know} (where {_i_live_re}|где я (живу|проживаю|нахожусь|сейчас))", re.IGNORECASE
67
    ),
68
    "homeland": re.compile(rf"{_how_do_you_know} (where i am from|откуда я (родом)?|где я вырос(ла)?)", re.IGNORECASE),
69
}
70

71
_common_secret_re = r"(((it|this|that) is (a )?|^)(secret|private|confidential)|(это |^)секрет|не скажу)"
72
is_secret_patterns = {
73
    "name": re.compile(rf"{_common_secret_re}|\b(sur)?name is (a )?(secret|private|confidential)", re.IGNORECASE),
74
    "location": re.compile(rf"{_common_secret_re}|location is (a )?(secret|private|confidential)", re.IGNORECASE),
75
    "homeland": re.compile(rf"{_common_secret_re}", re.IGNORECASE),
76
}
77

78
BOT_DOESNT_KNOW_INFO_KEY = "bot_doesnt_know_info"
79
BOT_KNOWS_INFO_KEY = "bot_knows_info"
80
how_do_you_know_my_info_responses = {
81
    "name": {
82
        BOT_DOESNT_KNOW_INFO_KEY: {
83
            "EN": "Sorry, but I really do not know your name. Would you be so kind to tell me you name?",
84
            "RU": "Извини, кажется, я еще не знаю, как тебя зовут. Если ты не против, скажи мне, как тебя зовут?",
85
        },
86
        BOT_KNOWS_INFO_KEY: {
87
            "EN": "Ah, you have probably forgotten that you told me your name before. "
88
            "Maybe you told me your name the last time we talked.",
89
            "RU": "Кажется, я уже знаю твое имя из прошлых бесед.",
90
        },
91
    },
92
    "location": {
93
        BOT_DOESNT_KNOW_INFO_KEY: {
94
            "EN": "Sorry, but I really do not know where you live. Would tell me?",
95
            "RU": "Извини, кажется я еще этого не знаю. Расскажешь мне, где ты живешь?",
96
        },
97
        BOT_KNOWS_INFO_KEY: {
98
            "EN": "Ah, you have probably forgotten that you told me where you live before. "
99
            "Maybe you told me this the last time we talked.",
100
            "RU": "Кажется, я уже знаю, где ты живешь из прошлых бесед.",
101
        },
102
    },
103
    "homeland": {
104
        BOT_DOESNT_KNOW_INFO_KEY: {
105
            "EN": "Sorry, but I really do not know where you are from. So, where are you from? "
106
            "I hope i am not tactless.",
107
            "RU": "Извини, но я еще не знаю, откуда ты. Расскажи мне, откуда ты родом?",
108
        },
109
        BOT_KNOWS_INFO_KEY: {
110
            "EN": "Ah, you have probably forgotten that you told me where you are from before. "
111
            "Maybe you told me this the last time we talked",
112
            "RU": "Кажется, я уже знаю, откуда ты, из прошлых бесед.",
113
        },
114
    },
115
}
116
MAX_READABLE_NAME_WORD_LEN = 20
117
NON_GEOGRAPHICAL_LOCATIONS_COMPILED_PATTERN = re.compile(
118
    r"\b(hospital|school|work|home|car|train|train station|outdoors|bed|kitchen|bedroom|bathroom|"
119
    r"basement|jail|prison|bath|больнице|школе|работе|дома|машине|поезде|станции|улице|кровати|"
120
    r"кухне|спальне|ванной|ванне|гостиной|тюрьме)\b",
121
    re.IGNORECASE,
122
)
123
ASK_GEOGRAPHICAL_LOCATION_BECAUSE_USER_MISUNDERSTOOD_BOT = {
124
    "homeland": {
125
        "EN": "Sorry, but I probably misheard you. "
126
        "I am just curious to know the region or the city in which you were born.",
127
        "RU": "Извини, кажется, я неверно поняла тебя. Мне просто было любопытно узнать, страну или город, откуда ты.",
128
    },
129
    "location": {
130
        "EN": "Sorry, but I probably misheard you. Could you please tell me in which city or region you are now?",
131
        "RU": "Извини, кажется, я неверно поняла тебя. Я просто хотела спросить, в какой стране или городе ты живешь?",
132
    },
133
}
134

135
RESPONSE_PHRASES = {
136
    "EN": {
137
        "name": ["Nice to meet you, "],
138
        "location": [ASK_WEATHER_SKILL_FOR_HOMELAND_PHRASE, "Cool!"],
139
        "homeland": ["Is that where you live now?", "Cool!"],
140
    },
141
    "RU": {
142
        "name": ["Приятно познакомиться, "],
143
        "location": ["Мне всегда нравилось узнавать новое о человеке!", "Классно!"],
144
        "homeland": ["А сейчас ты живешь в этом же месте?", "Круто!"],
145
    },
146
}
147

148
REPEAT_INFO_PHRASES = {
149
    "name": {
150
        "EN": "I didn't get your name. Could you, please, repeat it.",
151
        "RU": "Ой, я не смогла распознать имя. Можешь, пожалуйста, повторить.",
152
    },
153
    "location": {
154
        "EN": "I didn't get your location. Could you, please, repeat it.",
155
        "RU": "Ой, я не смогла распознать город или страну. Можешь, пожалуйста, повторить.",
156
    },
157
    "homeland": {
158
        "EN": "I didn't get where you have been born. Could you please repeat it?",
159
        "RU": "Ой, я не смогла распознать город или страну. Можешь, пожалуйста, повторить.",
160
    },
161
}
162

163
TELL_MY_COMPILED_PATTERNS = {
164
    "name": re.compile(
165
        r"(what is|what's|whats|tell me|you know|you remember|memorize|say) my name|how( [a-zA-Z ]+)?call me|"
166
        r"my name is what|you( can| could| shall| will)? tell my name|"
167
        r"как меня зовут|как мо[её] имя|как ты меня назвал|ты знаешь мо[её] имя",
168
        re.IGNORECASE,
169
    ),
170
    "location": re.compile(
171
        r"((what is|what's|whats|tell me|you know|you remember|memorize|say) my (location|country|city|town)|"
172
        r"where (am i|i am)(\snow)?|where( do)?i live|where( am)?i( am)? living)|(what|which) "
173
        r"(country|city|town)( do)? (i|am i|i am)|"
174
        r"где я( нахожусь| сейчас|[.\?]?$)",
175
        re.IGNORECASE,
176
    ),
177
    "homeland": re.compile(
178
        r"(what is|what's|whats|tell me|you know|you remember|memorize|say) "
179
        r"my (home\s?land|mother\s?land|home\s?town|native\s?land|birth\s?place)|where (am i|i am) from|"
180
        r"откуда я( родом)[.\?]?$|где я родил(ась|ся)[.\?]?$",
181
        re.IGNORECASE,
182
    ),
183
}
184

185
BOT_DOESNT_KNOW_USER_INFO_RESPONSES = {
186
    "EN": {
187
        "name": "Sorry, we are still not familiar. What is your name?",
188
        "location": "Sorry, I don't have this information. But you can tell me. What is your location?",
189
        "homeland": "Sorry, I don't have this information. But you can tell me. Where are you from?",
190
    },
191
    "RU": {
192
        "name": "Извини, кажется, мы еще не знакомы. Как тебя зовут?",
193
        "location": "Извини, у меня нет такой информации, но ты можешь мне рассказать об этом. Где ты живешь сейчас?",
194
        "homeland": "Извини, у меня нет такой информации, но ты можешь мне рассказать об этом. Откуда ты родом?",
195
    },
196
}
197

198
TELL_USER_HIS_INFO_RESPONSE = {"EN": "Your {which_info} is {info}.", "RU": "Твое {which_info} - {info}."}
199
WHICH_INFO_RU_MAP = {
200
    "name": "имя",
201
    "location": "место проживания",
202
    "homeland": "место рождения",
203
}
204

205
ASK_USER_ABOUT_NAME_AGAIN_RESPONSE = {
206
    "EN": "My bad. What is your name again?",
207
    "RU": "Ой, извини. Как тебя зовут еще раз?",
208
}
209

210
AS_YOU_WISH_RESPONSE = {"EN": "As you wish.", "RU": "Как считаешь нужным."}
211
WHERE_DO_YOU_LIVE_NOW_RESPONSE = {"EN": "So, where do you live now?", "RU": "Так... А где ты сейчас живешь?"}
212
NEVER_HEARD_OF_NAME_RESPONSE = {"EN": "I've never heard about this name.", "RU": "Никогда не слышала такого имени."}
213

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.