Итак, я делаю проект, в котором я должен классифицировать журналы, созданные программой, разработанной компанией. Программа работает на ОС windows, собирает данные об активности пользователей и генерирует файлы журналов, которые выглядят следующим образом:
"activity":{
"probe": "PROCESS_PROBE",
"status": "ProcessCreated",
"processName": "backgroundTaskHost.exe",
"path": "C:\\WINDOWS\\system32\\backgroundTaskHost.exe",
"creationClassName": "Win32_Process",
"handle": "1940",
"priority": "Normal",
"commandLine": "\"C:\\WINDOWS\\system32\\backgroundTaskHost.exe\" -ServerName:CortanaUI.AppXy7vb4pc2dr3kc93kfc509b1d0arkfb2x.mca",
"handleCount": 236,
"processId": 1940,
"parentProcessId": 124,
"pageFileUsage": 4188,
"creationDate": "20200413164335.643711+120",
"annotations": {
"userName": "datta",
"timeSinceStartup": 230474796,
"ticksOfEvent": 637223930160294317
}
},
"activity":{
"probe": "PROCESS_PROBE",
"status": "ProcessCreated",
"processName": "dllhost.exe",
"path": "C:\\WINDOWS\\system32\\DllHost.exe",
"creationClassName": "Win32_Process",
"handle": "18048",
"priority": "Normal",
"commandLine": "C:\\WINDOWS\\system32\\DllHost.exe /Processid:{7966B4D8-4FDC-4126-A10B-39A3209AD251}",
"handleCount": 132,
"processId": 18048,
"parentProcessId": 124,
"pageFileUsage": 1808,
"creationDate": "20200413164336.238890+120",
"annotations": {
"userName": "datta",
"timeSinceStartup": 230475859,
"ticksOfEvent": 637223930170876513
}
},
"activity":{
"probe": "FILERESOURCE_PROBE",
"status": "Changed",
"path": "C:\\Users\\datta",
"entityName": "Internship",
"extension": "",
"attributes": "Directory",
"owner": "null",
"length": 0,
"isReadOnly": false,
"creationTime": "2020-03-18T16:15:32.0377931+01:00",
"lastWriteTime": "2020-03-18T16:24:16.6020195+01:00",
"lastAccessTime": "2020-04-13T16:43:37.3722167+02:00",
"annotations": {
"userName": "datta",
"timeSinceStartup": 230476156,
"ticksOfEvent": 637223930173876891
}
}
}
Моя цель - использовать эти данные для создания моделей процессов деятельности компании, которые можно использовать для управление бизнес-процессами для поиска узких мест в бизнес-процессах и их оптимизации. Итак, в основном я должен использовать сгенерированные журналы и абстрагироваться от выполняемой пользователем активности более высокого уровня. Например, моя программа должна иметь возможность просматривать журнал событий и получать такие действия, как «Написание отчета», «Отправка отчета менеджеру» и т. Д. c.
Итак, мой подход заключался в том, чтобы абстрагировать некоторые простые действия, такие как «Открытие Chrome», «Создание новой папки», «Удаление папки», открыв программу, затем выполнив простое действие и закрыв програмное обеспечение. Затем для каждого из простых действий я создал несколько сотен файлов журналов. Затем я попытался извлечь содержимое каждого файла журнала в большую строку и сохранить его в кадре данных с его известной меткой.
Я использовал несколько Классификаторы, такие как Классификатор Мультивного Наивного Байеса, Линейный SV C, Случайный Лес и Логистический c регрессия для обучения данных журнала с метками событий. И я получил довольно хорошие результаты теста. Но проблема в том, что мой подход явно не правильный. Поскольку я сгенерировал эти отдельные файлы журнала, специально выполнив простое действие, а затем закрыв программу. В реальной жизни пользователь будет выполнять несколько действий одновременно, и каждый файл журнала будет содержать журналы перекрывающихся действий. Мне нужно сегментировать строки журнала из файлов журнала в соответствии с активностью, которой они принадлежат, и пометить их именем действия. Я не уверен, как это сделать.
Буду очень признателен за ваши предложения и ваш опыт в этом вопросе. Спасибо.