Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document ReplyGenerator's code #48

Open
demidovakatya opened this issue Aug 17, 2017 · 2 comments
Open

Document ReplyGenerator's code #48

demidovakatya opened this issue Aug 17, 2017 · 2 comments

Comments

@demidovakatya
Copy link
Collaborator

please, document this class's methods and the logic. I believe ReplyGenerator is the core part of the code

😸

@REDNBLACK
Copy link
Member

REDNBLACK commented Aug 19, 2017

312d6b7
done

@demidovakatya
Copy link
Collaborator Author

в общем, как я себе это представляю, логика должна такая:

— приходит сообщение:Здравствуйте Мартин Алексеевич! Я на вас всю общественность подниму чтобы просветили вас гадов гадских! Вы срал а я тебе говорил мы дом общественность ебал тебя гадов и мы же и будем а не вы чтоб мы пахали. Мы пахали а ты я ебал.

— мы его сплитим на предложения (по endsen):

 'я на вас всю общественность подниму чтобы просветили вас гадов гадских',
 'вы срал а я тебе говорил мы дом общественность ебал тебя гадов и мы же и будем а не вы чтоб мы пахали',
 'мы пахали а ты я ебал']

— предложения сплитим на токены

[['здравствуйте', 'мартин', 'алексеевич'],
 ['я', 'на', 'вас', 'всю', 'общественность', 'подниму', 'чтобы', 'просветили', 'вас', 'гадов', 'гадских'],
 ['вы', 'срал', 'а', 'я', 'тебе', 'говорил', 'мы', 'дом', 'общественность', 'ебал', 'тебя', 'гадов', 'и', 'мы', 'же', 'и', 'будем', 'а', 'не', 'вы', 'чтоб', 'мы', 'пахали'],
 ['мы', 'пахали', 'а', 'ты', 'я', 'ебал']]

— всё разбиваем на пары слов:

мартин - алексеевич
алексеевич - (ENDSEN)

я - на
на - вас
вас - всю
всю - общественность
общественность - подниму
подниму - чтобы
чтобы - просветили
просветили - вас
вас - гадов
гадов - гадских
гадских - (ENDSEN)

вы - срал
срал - а
а - я
я - тебе
тебе - говорил
говорил - мы
мы - дом
дом - общественность
...
мы - же
же - и
и - будем
будем - а
...
пахали - (ENDSEN)

мы - пахали
пахали - а
а - ты
ты - я
я - ебал
ебал - (ENDSEN)

— когда нам на вход поступает сообщение, мы его опять бьём до токенов и берём случайный токен. с этого токена будет начинаться новое предложение.

⚠️ тут нужно ещё производить проверку, а окей ли вообще сообщению начинаться с этого слова (например, мы, вы, здравствуйте — более вероятные начала предложения, чем же). т.е. нужно отдельную статистику вести.

— затем для каждого j-го токена ищем двойки вида (j, k) и из всех k выбираем наиболее часто встречающийся (или случайный из топ-3/5/N наиболее часто встречающихся

⚠️ аналогично и с окончаниями предложений. хранить ?/. как части слов нельзя, это ну пиздец диковато. я бы хранила это как какую-то условную строку (ENDSEN), и для слов, которые попадают в двойку с (ENDSEN), тоже вела бы статистику.

в общем, выбираем стартовый токен — random select из всех токенов сообщения, но плюс с домножением на частоту встречаемости данного слова в начале (т. е. если нам написали вы же пидор, мы как бы можем начать одинаково с вы, же или пидор, но учитывая историю встречаемости слов — будет примерно так: (1/3) * (1+1) * вы + (1/3) * 1 * же + 1/3 * 1 * пидор)

не описала:

  • тройки
  • предложения из одного слова
  • редактирование и удаление токенов

@REDNBLACK спасибо за доку! 👍

я подумаю ещё по поводу того, каким должен быть ботик, а пока предлагаю тебе тоже поприкидывать, как его лучше реализовать.

не исключено, что всё написанное выше я потом назову буллшитом, потому что это прям первые пришедшие в голову мысли

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants