Всички публикации
ИзмерванеАвтоматично отчитанеТочностЛокално съпоставянеПродуктова разработка

Точност на автоматичното отчитане: с две трети по-малко грешни записи

Публикувахме праговете на автоматичното отчитане и после измерихме как се справят. Осем дни по-късно вече не ги задаваме ние: приложението ги изчислява от вашето работно пространство.

TO
Екипът на TimerOS
Vezoft
9 мин четене

Преди седмица публикувахме праговете, по които автоматично свързваме времето със задачи: резултат 0,45, преднина 0,15 и шейсет секунди съвпадение. Изглеждаше ни правилно да ги покажем открито. После измерихме как се държат тези числа в истински работни пространства и разбрахме, че праг, избран веднъж в нашия офис, не може да е подходящ за вашия списък със задачи.

Оттогава преработихме съпоставянето, като за всяко число в него питахме: откъде знаем това? Повечето фиксирани числа отпаднаха. Летвата за запис се изчислява от собствените ви проекти на всеки няколко минути, и то на вашия компютър. Тук разказваме за измерването: какво броим, какво се промени и кое правило оцеля при всички преработки.

Какво обхваща статията
Съпоставянето със задачи все още е отбелязано като Бета. Работи само в настолното приложение за Windows (уеб таблото няма тази функция). Включено е по подразбиране и може да се изключи. От v1.15.0 фактурите по отработено време включват отчетените часове по всяка задача, затова преди да фактурирате, прегледайте разпределеното време. Как работи първоначалното съпоставяне е описано отделно; тук приемаме, че го познавате.

Какво значи „точност“, преди да я измерим

Думата „точност“ не казва нищо, докато не уточните коя грешка броите. Автоматичният отчет на времето може да сгреши по два начина, а цената на двете грешки е съвсем различна. Може да пропусне работа, която е трябвало да разпознае. Това се забелязва веднага, защото редът е празен. Или може да запише времето към задача, която няма нищо общо с тази работа. Такъв ред изглежда досущ като верен и изобщо няма да го забележите.

Грешният запис излиза по-скъпо от липсващия, защото не го виждате.
— Същото изискване, от което тръгна първата версия, вече подкрепено с число.

Затова измерваме втората грешка. Тестът подава на съпоставянето работа от проект, който работното пространство няма, и брои колко пъти въпреки това се стига до запис. Всеки запис в този тест е грешен по определение, така че за оценката не е нужна ничия преценка.

Фигура 1 · Един проект се изважда
1 · Прозорецът
Качване на iOS бетата в TestFlight — Google Chrome
Истинско заглавие на задача, заедно с текста, който прозорецът добавя към него.
2 · Работното пространство
Разработка на iOS приложениеДизайн и изработка на сайтМиграция в облака+ още 17
Проектът, към който принадлежи заглавието, е премахнат. Всичко друго остава.
3 · Верният отговор
Да не се записва нищо
Работата не е в това работно пространство. Всеки запис тук е фалшиво положителен резултат.
Пускаме теста по веднъж за всяко заглавие от двайсетте проектни плана, които идват с TimerOS, общо 481 прозореца. Тестът е надежден, защото верният отговор е известен предварително и винаги е един и същ: да не се записва нищо.

Вторият тест прави обратното и е също толкова важен: всяко от 481-те заглавия се подава на работно пространство, което съдържа съответния проект. Тук мълчанието е провал. Съпоставяне, което изобщо не се обажда, не би сгрешило нито веднъж в първия тест, затова двата теста имат смисъл само заедно. В днешната версия при втория тест съпоставянето разпознава 453 от 481 заглавия, при 28 мълчи и нито веднъж не посочва грешен проект. Ако тази нула някога се промени, тестовете ще се провалят.

Числото и как спадна

Фигура 2 · Грешни записи като дял от 481 прозореца за липсващ проект
Грешни записи% от прозорците
16.8
11.4
5.6
v1.6.7v1.6.8v1.8.0
Колкото по-ниско, толкова по-добре. Всяка стъпка е конкретна промяна, защитена с тест. Броят е записан в кода като граница, която може само да намалява.

Две трети от грешните записи изчезнаха. При първата стъпка не се изгуби нито един верен отговор, а след втората съпоставянето все още разпознава 98,7% от работата, която разпознаваше преди. Фигура 3 показва разбивката на последния тест. Обърнете внимание на средния сегмент: прозорците, за които приложението е достатъчно сигурно, за да попита, но не и за да запише час.

Фигура 3 · Всичките 481 прозореца с работа, която работното пространство няма
481прозореца
Резултат за всеки прозорец
Мълчание (вярно) · 43791%
Предложен грешен проект · 174%
Записана грешна задача · 276%
Измерено на издадената версия. Всяко от 17-те грешни предложения се отхвърля с един поглед и едно натискане. Истински важни са 27-те грешни записа, защото никой не ги вижда.

Ето трите промени. Първите две са стъпките от фигура 2: v1.6.8 и v1.8.0. Третата излезе между тях, с v1.7.4, и подобри разпознаването на истинска работа.

1. Без запис, ако задачата не обяснява прозореца

Старата проверка питаше дали задачата има достатъчно висок резултат. Не питаше обратното: обяснява ли тази задача прозореца? При страница с девет думи задача, която съвпада с две от тях, можеше да мине всички прагове само благодарение на тези две. Другите седем, които всъщност казваха за какво е страницата, изобщо не се проверяваха.

Сега за запис са нужни две условия. Задачата трябва да разпознава поне половината смислени думи на екрана, а поне 30% от собствените ѝ думи трябва да присъстват в прозореца. Ако някое от тях не е изпълнено, запис няма. Задачата обаче не се изхвърля, а се появява като предложение с едно натискане. От премахнатите грешни записи повечето изчезнаха напълно, а няколко се върнаха като въпроси.

2. Всяко работно пространство определя своята летва

Заради тази промяна предишната статия вече е остаряла. Прагът 0,45 всъщност е предположение за това колко лесно се бъркат вашите проекти, а ние нямаме откъде да знаем това. Представете си две агенции: едната води двайсет напълно различни клиентски проекта, а другата четири почти еднакви преработки. Те имат нужда от различни числа, а верното число за втората не бихме открили в нашия офис, колкото и да се стараем.

Затова настолното приложение го изчислява само. На всеки няколко минути то оценява наново фиксирана извадка от заглавията на задачите ви спрямо проектите ви и си задава два въпроса: как изглежда верният отговор тук и кой е най-добрият грешен отговор, който това работно пространство може да даде? Летвата за запис се поставя над този грешен отговор, с по-голям запас, когато примерите, от които приложението се учи, са малко.

Фигура 4 · Откъде идва един праг
Избран веднъж, от насИзведен от вашето работно пространство
Какво го определяПреценка по имената на нашите задачиВашите задачи, оценени наново спрямо вашите проекти
Когато проектите се припокриватСъщата летва, повече грешни записиЛетвата се вдига над най-добрия наличен грешен отговор
Когато не може да се изчислиНе се случва: числото винаги е налицеВръща се към числото по подразбиране и отбелязва защо
Ако думите не могат да разделят работатаВсе пак записва нещоЗаписът се изключва и всичко става предложение
Изискванията за това колко от прозореца трябва да обясни задачата се определят от най-слабите верни отговори в работното пространство, а не от грешните. Правилото: никога не искаме повече обяснение, отколкото дават собствените ви верни съвпадения.

Най-важен за нас е последният ред. Ако десетият персентил на верните отговори в едно работно пространство е под деветдесетия персентил на най-добрите грешни, думите просто не могат да различат проектите му. Тогава приложението казва това и спира да записва. Таймерът продължава да върви. Всичко става предложение с едно натискане, а ако сте включили дневника на сесията, описан по-долу, причината се записва там.

3. Общата дума се претегля, вместо да се изтрива

Една по-ранна поправка просто махаше всяка дума, която се среща в два проекта, с довода, че обща дума не помага да ги различим. Подходът се оказа твърде груб и ни отне време да разберем защо. В работно пространство с проекти Дизайн на сайт и Android приложение поправката с право махаше името на самата фирма. Но махаше и дизайн, защото думата се срещаше и в проекта за Android, и така „Дизайн на сайт“ губеше дума от собственото си име.

Сега всяка дума се оценява според това доколко сочи към един проект по-често, отколкото би се случило по чиста случайност. А случайността зависи от това колко проекта имате. При два проекта дума, разделена поравно между тях, казва толкова, колкото и хвърлена монета, а преди изглеждаше наполовина полезна. С новата оценка разпознаването на истинска работа се подобри.

0
прозореца в теста за грешни записи
0.0%
от тях все още се записват (бяха 16,8%)
0
грешни записа за работа, която е в пространството
0 дни
локален дневник на сесията, ако го включите

Правилото, което оцеля при всяко пренаписване

Първоначалното съпоставяне четеше само заглавието на прозореца. Сега чете повече: домейна в браузъра и първата част от пътя, името на приложението, както и домейните и ключовите думи, които сте добавили към проекта. На пръв поглед това са просто още доказателства, но промяната е най-рискованата в цялата поредица. Тези сигнали показват място, а не работа. Щом сте в домейна на клиента, ясно е в кой проект сте, но не и по коя задача работите.

Мястото може да породи въпрос. Само думите в прозореца могат да доведат до запис.
— Записано в кода като правило, което винаги трябва да важи, и покрито с тест.
Фигура 5 · Какво е позволено на всеки канал
Закачили сте задача
Съзнателно действие от ваша страна
може да записва часове
Думи в заглавието на прозореца
„Синхронизация на фактурите“ срещу списъка ви със задачи
може да записва часове
Задача, отворена в TimerOS
Таблото казва какво е на екрана
може да записва часове
Адресната лента или приложението
play.google.com /console · figma.exe
може само да пита
Прилика с проекта
Сходство, изчислено локално, без обща дума
може само да пита
Нищо от изброеното
Прозорецът не е разпознат
остава неразпределено
Чете се отгоре надолу: печели първият канал, който отговори. Канал от долната половина може да покаже предложение с едно натискане в лентата на таймера и да определи какво да предложи първо, но никога не може сам да запише час.

Направихме това правило твърдо, защото го нарушихме два пъти и двата пъти ни струваше истински часове. Първия път проект носеше името на продукт, който го изписва в заглавието на всеки свой раздел в браузъра. Това име всъщност показваше място, но се броеше за втората „независима“ дума, нужна за уверен запис. Втория път връзка, научена от действията на един потребител (две потвърждения в github.com), започна да записва като работа времето, в което той разглеждаше личните си хранилища. Научените сигнали вече не записват нищо. Те само определят кое предложение ще видите първо, а решението пак е ваше.

Една дума не е доказателство

Деветнайсет часа реална работа показаха това по-убедително от всеки довод. За това време таймерът зададе 379 въпроса. От тях 264 бяха предизвикани от една-единствена обикновена дума: monitor на сайт за статуса на услуги, console в услуга за планиране, model в GitHub, links в конзола за търсене. Всички те предлагаха един и същ проект, който нямаше нищо общо с тях.

Логиката зад тях не беше очевидно погрешна. Дума, която се среща само в една от задачите ви, е рядка, а рядкото прилича на доказателство. Именно затова номерата на заявки вършат работа. Но една дума може да е рядка в задачите ви и да се среща навсякъде другаде. От v1.7.3 въпрос, който посочва проект, изисква две различни думи. Случаите, които работеха и преди, винаги са имали по две. Онези 264 нямаха. Запис обаче все още може да се основава на една-единствена дума, ако тя се среща само в една от задачите ви. Думата трябва да е в заглавието на прозореца, а записът пак трябва да премине летвата на работното ви пространство и двете проверки от първата промяна. При този вид запис има известен пропуск, описан в края на статията.

Защо в приложението има дневник на сесията
Нищо от това не би се разбрало от доклад за грешка. Настолното приложение може да води локален дневник на това какво е видяло, какво е решило и защо, и какво сте направили след това. От v1.19.2 дневникът е изключен, докато не го включите сами от „Настройки“ → „Засичане на активност“ → „Диагностичен запис“. Работодателят ви не може да го включи вместо вас. Дневникът обхваща най-много 30 дни, изчиства се автоматично и никога не се изпраща. Благодарение на него „понякога ми се струва, че греши“ се превръща в 264 от 379, а такъв проблем вече може да се поправи.

Когато няма обща дума

Много прозорци нямат нито една обща дума със задачите. Една страница може съвсем явно да е за вашата работа по Android и въпреки това да не съдържа нищо от списъка ви със задачи. Тогава всички механизми по-горе с право мълчат. Последната версия от поредицата добави канал точно за такъв случай.

Настолното приложение вече съдържа малък езиков модел с отворен код, който превръща текст във вектор. Моделът е с лиценз MIT и идва вграден в инсталатора. Приложението изгражда вектор за всеки ваш проект от заглавията на задачите му и още един за страницата на екрана, след което ги сравнява. Когато страницата е близо до един проект и явно по-далеч от останалите, приложението предлага този проект. Всичко това са около 17 MB таблици и едно скаларно произведение: без сървър, без графичен процесор и без нито една заявка извън компютъра.

Моделът е полезен заради ограниченията около него, а всички те бяха определени още преди да го пуснем. Той никога не записва. Никога не отменя проект, който думите вече са посочили. Обажда се най-много веднъж на час за един и същ сайт или приложение. Работи точно там, където нищо друго не може, затова нищо друго не може и да го провери. Ограничението от веднъж на час е проверката. При всичките 190 двойки от вградените проектни планове 99,9% от проектите, предложени по този начин, бяха верни, а грешно предложение имаше при 0,4% от страниците за работа, която работното пространство не съдържа.

Бележка за термините, защото другаде държим на точността им: съпоставянето по думи не е AI. То е фиксирана функция за оценка, която при едни и същи данни винаги дава един и същ резултат, и в режим „Автоматичен“, и в режим „Само правила“. Каналът за прилика е модел и работи само в режим „Автоматичен“, затова в режим „Само правила“ в съпоставянето не участва никакъв модел.

Какво още греши

  • 5,6% не е нула и останалото не се решава с промяна на един праг. В теста с премахнат проект прозорците, при които все още се стига до запис, описват работа, която наистина прилича на вашата, и никаква граница не може да ги отдели, без да отхвърли и верни отговори. Следващата стъпка е по-богат речник за обясняване на прозорците.
  • Записът все още не отчита мястото. В конзолата на ваш клиент записът по една дума, описан по-горе, може да запише часове към задача от друг проект, защото частта от съпоставянето, която записва, умишлено не е научена да чете адресната лента. Пропускът ни е известен и вече има тест за него, който засега не минава.
  • През първата минута в прозорец нищо не се записва. За запис са нужни шейсет секунди последователни доказателства, а за въпрос стигат десет. Това е умишлено, но наистина се усеща бавно.
  • Ръчно зададените сигнали са най-евтината поправка, но приложението не ви подканва да ги въведете. Най-сигурният начин таймерът да разбере в кой проект сте е да посочите в проекта кои домейни и приложения са негови. Само че повечето хора така и не откриват това поле. Пропускът е на продукта, а не на съпоставянето, и от целия списък него ни е най-трудно да оправдаем.
Къде да го намерите
Обновете настолното приложение за Windows до v1.9.0 или по-нова версия. Съпоставянето е включено по подразбиране и може да се изключи от Настройки. Лентата на таймера показва по какво според приложението работите, а в панела „Време по задачи“ на страницата „Ефективност“ можете да преглеждате, прехвърляте или премахвате всяко разпределение. Функцията е включена във всеки план, от Freelancer нагоре. Изтеглете TimerOS за Windows или започнете пробен период.
Пратете ни прозореца, който го заблуди
Тестовите ни планове не могат да съдържат вашите задачи, затова вашите истински екрани откриват онова, което ние пропускаме. Ако таймерът записва към грешна задача или пропуска работа, която очевидно е трябвало да улови, заглавието на прозореца и името на задачата ни стигат, за да го възпроизведем: [email protected].

Ако от тази седмица можехме да запазим само един урок, той би бил този: праг, който никой не може да обясни, е догадка с десетична запетая. Нашият вече може да се обясни. Изчислява се и е документиран, а когато работното пространство не позволява праг, приложението ви го казва.

Вижте го на своя компютър

Пробвайте безплатно 14 дни. При регистрацията въвеждате карта, но ако се откажете преди края на пробния период, не плащате нищо. Инсталирайте настолното приложение и вижте как класифицира деня ви.