-
Notifications
You must be signed in to change notification settings - Fork 0
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
Ограничение размера цитируемого отрывка #27
Comments
Кажется, что под условие более 40 слов попадают большинство цитат, под условие 250 символов ещё больше. Все таки сокращаем цитату до 4-5 слов или оставляем ту часть, которая подходит под условие не более 40 слов? Возможно надо поиграть с количеством символов, и с дополнительными условиями, с другой стороны, если фича для телеги, то 40 слов вполне достаточно. Возможно надо добавить числа 40 и 250 в настройки, что бы можно было менять параметры без пересборки приложения, чтобы проще можно было менять значения, подобрать необходимые, в случае если 40 / 250 нас не устроят. На сайте я бы пока оставил без изменения, но не значит, что навсегда, надо потестировать в телеге. |
Я предлагал чисто на глазок, не проверяя, возможны варианты. 5-6 строк 300-400 символов тоже нормально, и другие версии возможны. Тут не строго. Если пока только в телеге, и подразумевается управляемый контроллер значения, то сначала можно вообще одну строчку оставлять. Имеет смысл вынести вопрос в тему для ОС, ребята тоже могут какие-то мысли забросить по существу вопроса? |
Я пока сделал такую функцию, в процессе, она считает количество слов в строке и если слов меньше 40, то пропускает, а если больше то начинает сокращать и тогда уже учитывает количество символов в строке. Установил 350 символов.
тут может быть сразу проблема, например, с такими цитатами:
В таком случае останется один никнэйм пользователя. А писать специальное условие распознающее каждый ник, кажется дорогим решением, придется в базу ходить. Поэтому пока 40 слов не зависимо от количества строк, кажется нормальным вариантом.
Думаю да можно и задать вопрос. Может быть предложат еще лучшие варианты. А если не будет ответа, то попробуем вариант 40 слов |
Это обучающий суперсистему критерий. У критерия есть цель — сделать сообщения в телеге читаемыми. Наилучший способ — чтобы пользователь понял, что нужно приложить усилие и сделать сообщение читаемым. И если от портянки будет оставаться только никнейм и одно-два слова, и замечательно, поскольку дальше всё равно цитату никто читать не должен, он этот текст уже читал позавчера, цитировать нужно непосредственно тот контекст, который затрагивается в ответе. Если нужно сослаться на три портянки, для этого давно существует сайт с поиском и короткой ссылкой. |
Логику считаю верной, размеры думаю нормальные, так что пусть покрутится день-неделю-месяц, поймём. Вопрос, а вернее анонс и краткое описание ситуации в обсуждении сейчас сделаю |
Ограничение пока не установлено? Цитаты проходят и более длинные. |
Нет, пока не установлено. я еще не делал обновление, только протестировал функцию на тексте. Но теперь уже внес изменения в бота, и пока еще поднимаю тестовую связку локально для теста. Думаю в ближайшее время (в течение часа, мак двух) обновлю. |
Уточнял логику, ибо ранее написано «установил ограничение 350», что можно принять за выкатывания релиза. Так то спешки нет, разумеется. |
Сделал обновление, логика такая Ранее цитата всегда разбивалась на строки по разделителю — перенос строки Так вот если следовать новой логике, то это условие убрал, а точнее просто из итоговой цитаты теперь забираем только первую строку: предложение, фразу, фрагмент и уже только к этой строке применяется условие 40 слов и 350 символов. |
прогнал на тестовом канале, отослал все сообщения текущей темы 350+ сообщений, по ощущениям выглядит нормально, хорошо. |
Да, возможно нам следовало подумать об этом решении раньше. Или мы подумали, но передумали? Я уже точно не могу вспомнить. PS. Чтобы не открывать пока новый issue — а что мы думали про избыточные переносы строк в тексте в конце сообщения, которые иногда возникают в движке фкт, как-то для телеги это думали обрезать? Кажется об этом была речь где-то, но быстро не нашёл. У меня вот в нижнем сообщении некрасиво напортачено svoddru/19625 |
Да, возможно, но тоже не припоминаю. Эту логику с разбиением на чанки, я делал почти в самом начале запуска трансляции, примерно год назад, возможно у нас тогда не было по этом поводу опыта и это выглядело логичным. Скорее так.
Я точно несколько раз исправлял такое руками, и точно один раз сам напортчил. В телеге исправлять просто, зашел, кнопочку редактирования нажал и готово, в БД сложнее надо зайти и в консоли написать запрос на обновление записи. Каждый раз когда исправлял, то появлялось мысль, что возможно надо с этим что-то делать, написать фильтр, который будет обрезать лишние пробелы, переносы строк и прочее. Но это случается действительно не часто, чаще возникают некрасивые пробелы или отсутствие пробелов между абзацами или цитатами. Думаю настало время с этим разобраться, т.к. фактор уже распознан и есть статистика различения таких записей. Подумаю и в с покойном режиме допишу функционал и для телеги и для сайта. ps поправил запись |
Опытным путём установлено, что ошибка с пробелом между абзацами и переносом строки возникает от разницы между вводом через Enter и Shift+Enter / двойной Enter. Обычное однократное нажатие переносит строку, а с шифтом или двойное — начинает новый абзац. В окне ввода сообщения на фкт об этом невозможно узнать, поскольку символьно это никак не отображается. Но узнаешь при попадании текста в телегу. Постоянно это забываешь, и потому получается косяк. t.me/svoddru/19585 и t.me/svoddru/19585 перед звёздочками с названием книг подразумевали перенос без пустой строки, и я ошибочно использовал Shift+Enter, при этом следующая цитата должна быть отбита пустой строкой, и я использовал двойной Enter. В последнем случае выбран верный вариант, а в первом случе нужно было выбрать однократное нажатие Enter. Настройка этого поведения при вводе текста в телегу есть в официальном приложении. Возможно это имеет отношение к публикации через бота, возможно нет. Фильтр, наверное, будет полезен, но он отдаляет нас от геодезии (с) |
Забыл про перенос, и таким образом цитата обрезалась на первой строке из одного слова. Полагаю так же будет обрабатываться никнейм пользователя при квадратно-гнездовой цитате? |
Да, отдаляет, согласен. Так что это можно сделать в фоне, пока даже не хочу разбираться с пробелами) По поводу сообщения: https://t.me/svoddru/19628
Да именно так. будет висеть только никнейм. Не очень симпатично, можно убрать ограничение по строкам. или придумать ограничение на ограничения по строкам. если строка короткая и т.д. но кажется, что почти то же эффект будет, если просто задать 40 слов и/или 350 символов. например:
|
Полагаю, что формально нарушается логика ограничения по длине цитаты, поскольку реализуется скрытое условие. Его можно огласить и оно перестанет быть скрытым, но будет ли это логично с точки зрения пользовательского опыта, держать в голове конструкции? Просто число символов легко оценивается на глазок после привычки и наследует общую «правильную» манеру цитирования независимо от телеги. Строгое второе правило требует дополнительного ресурса хранения в памяти и относится только к телеге, получается избыток. Есть ощущение, что просто ограничение по одним только символам будет логичнее? Мне кажется да. |
Сделал обновление #29, убрал ограничение на количество строк. |
Отлично. Потестируем значит. Пока звучит логично. |
Кажется прошла хорошая боевая проверка алгоритмов в сообщениях: Присутствует множество цитат, отработали разделители пробелов, сокращение цитируемых отрывков, и разделение сообщения на части не более 4096. |
Так точно. Нормально выглядит и не бросается в глаза. Только многоточие по правилам пунктуации нужно приклеивать к последнему слову, я полагаю там технический вопрос обрезки с первой буквы лишнего слова, а пробел автоматически становится «частью» последнего оставшегося.
— А у вас несчастные случаи на стройке были? |
Да, это надо доработать. Верно, сейчас пробел ставиться после каждого слова, этот пробел перед приклейкой многоточия надо удалить — это просто. Если так, то позже поправлю это. |
А на какой таблице символов это производится? В целом кажется оставляют все кириллицы-латиницы и цифры, а также закрывающие знаки препинания, прилепленные к слову — кавычки
Всё перечисленное отбрасываем. Кажется так. |
Работаем с utf-8 таблицей символов. Да, согласен, проще работать со списком исключений, чем писать белый список. Добавлена функция ModifyText, которая проверяет последний символ строки и заменяет его на "…", если он присутствует в указанном списке, в противном случае просто добавляет "…" в конец строки: Т.к. мы работаем с кириллицей в utf-8, то функция переводит строку в срез рун. Руны используются для работы с юникодными символами. Руна (Rune) - это целое число типа int32, которое представляет отдельный символ. Функция работает с числами. Добавлены автоматические тесты для функций truncateText — ограничение размера цитируемого отрывка и ModifyText — добавление многоточия к цитируемому отрывку. |
Отлично. Наверное этих ухищрений пока вполне хватит для наведения красоты и порядка в текущей телеге. |
Пробел между текстом и последующей цитатой избыточный — на фкт добавляется дополнительная пустая строка перед цитатой, если цитата идёт после текста (то же свойство имеют две цитаты подряд), этот лишний пробел транслируется и в телеграм, тут уже не знаю точную причину. t.me/svoddru/19681 |
Продолжу для статистики |
На ФКТ после текст по умолчанию, если нажимать enter, то ставится 2 Парсер сохраняет html из сообщения, вместе с br'ами На картинке задаю вопрос про это ли избыточный пробел идет речь? Или про какой-то ещё? Надо разбираться почему так, залезать в код и проводить тестирование на разных вариантах. Вот хорошо уже есть 2 случая. Оба разные. В первом случае текст после цитаты, второй случай — сообщение разбито на фрагменты и почему то второй кусок получил лишние пробелы. Надо поднакопить статистику и потом скопом посмотрю. |
Всё верно, про этот пробел, после обычного текста и перед цитатой. Между двух цитат будет подобная логика отбивки — #475444 на сайте и 19610 в тележке, тут цитаты тоже разделяются движком фкт, превышая намерения пользователя в окне ввода перед отправкой. |
Еще для статистики svoddru/19796 |
Поскольку некоторые пользователи не умеют работать с цитированием, предлагаю научить цитирование работать с некоторыми пользователями. В теме уже неоднократно отмечалось, и судя по оставленной под замечаниями обратной связи в форме лайков отмечалось справедливо — бездумное цитирование всей портянки, а то и двух и даже трёх, мешает рабочему восприятию информации.
Посему предлагаю соорудить счётчик, который будет устанавливать размер цитируемого текста, и если цитата укладывается, публиковать её без изменений, а если не укладывается, то цитировать лишь первые 4-5 слов, ставить многоточие, и двигаться далее. Допустимый размер можно определить как «четыре-пять строчек», пусть это будет 200-250 символов или 30-40 слов. Уложился — молорик, нет — давай дасвидания.
Фичу предлагаю для телеграма, но подобный механизм можно использовать и на сайте.
The text was updated successfully, but these errors were encountered: