18 октября, четверг 20:35
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Модуль проверки на терроризм

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Модуль проверки на терроризм

    Добрый день!
    Предлагаю Вам ознакомиться с разработанным мной модулем проверки текстовых данных на предмет примерного вхождения записей из справочника террористов.
    В состав модуля входят непосредственно алгоритмы анализа похожести вхождения, реализованные на чистом С++ в виде dlm (dll), возможная методология использования проверки при работе в RS-BANK, и вспомогательные макросы для реализации этой методологии. Включенные макросы реализуют задачи проверки всех документов произвольного дня, текущих документов конкретного операциониста, проверки на этапе ввода документа. Используя dlm, не составляет труда встроить проверку в любую задачу.
    Модуль так же содержит exe-приложение для проверки текстовых файлов или данных, вводимых с клавиатуры. Поскольку алгоритмы реализованы на С++, модуль может быть адаптирован под любую систему, допускающую расширение через dll.
    Отличительной особенностью алгоритма является то, что он работает значительно качественнее и быстрее стандартной рстайловской ф-ции CheckTerror.
    Подробное описание и примеры смотрите в readme.doc внутри архива.

    Дам немного критики стандартной ф-ции CheckTerror
    Изложенный в базе знаний R-Style http://portal.softlab.ru/reggy/faq/s...age=&Prob=2297
    пример на самом деле показывает практическую непригодность критерия совпадения. Слова PALRIANA и SAHARA, являясь "основными", совпадают слишком слабо, а слово BANK не имеет практической значимости. Если бы в справочнике террористов была запись типа "SAHARA INTERNATIONAL BANK", то попадался бы вообще любой INTERNATIONAL BANK. В результате, при понижении % порога алгоритма пользователь будет видеть очень много "не настоящих" совпадений, а при повышении -- пропустит настоящие. Алгоритм не способен ловить совпадения фамилии с инициалами, фамилии с именем, а так же почти точных полных совпадений при достаточном количестве посторонних слов.. При этом он обладает слишком медленной скоростью работы. (Не экспериментируйте с SAHARA BANK, поскольку сейчас его нет в справочнике).

    Мой алгоритм имеет в основе похожую модель оценки близости отдельных слов (тоже имеет в основе динамическое программирование, оптимизированное). Но при этом дополнительно учитываются особенности словообразования и фонетики, отличается критерий совпадения строки как совокупности слов, а данные из справочника проходят анализ и структурную предобработку. Все данные, необходимые для проверки, хранится внутри модуля, обращений к terror.dbt не происходит. Говоря об эффективности алгоритма, на процессоре Intel Pentium 4 3000 MHz (15 x 200, без HT, объем оперативной памяти значения не имеет) скорость обработки текстового файла с реальными данными по платежам составляет ~3000 строк в секунду, где строки – это наименование плательщика, получателя, и основание платежа. Проверка документа на этапе ввода, естесственно, происходит мгновенно Так же алгоритм позволяет гибко регулировать детальность проверки (что определяет кол-во выдаваемых совпадений).

    Здесь я выкладываю версию модуля, в которой справочник террористов заменен на список выпускников МФТИ (ФУПМ, за последние ~10 лет), что примерно соответствует по количеству записей справочнику лиц, причастных к терроризму. Справочник выпускников находится внутри архива. Процесс генерации модуля под конкретный справочник автоматизирован и не составляет труда. С учетом того, что справочник обновляется примерно 1 раз в квартал, такой подход вполне оправдан.

    Если захотите попробовать проверку на настоящем справочнике, или у Вас есть какие-либо вопросы и предложения, пишите.

    Андрей Бажан
    bazhan@stroycredit.ru
    Последний раз редактировалось Andrej_; 07.07.2006, 13:03.

  • #2
    2 Andrej_:
    Андрей, спасибо! Думаю многим этот модуль будет весьма и весьма полезен.
    Ну и небольшой комментарий к "немного критики стандартной ф-ции CheckTerror":
    В принципе, шансов, что Уссама Бен Ладен придет в один из российских банков с паспортом на свое имя и попытается перевести деньги, указав в комментарии к переводу "на закупку оружия для Аль Каиды", наверно нет!
    Да и, как Вы надеюсь понимаете, при существующем алгоритме проверки шанс поймать не террориста весьма велик. Поэтому многие банки выполняют букву закона именно как написано в инструкции и реализовано в CheckTerror и их это вполне устраивает.

    Комментарий


    • #3
      Усама может и не прийдет, но кое-кто уже приходил, и его пропустили (подробностей не знаю).
      Я как-то поиграл с этой функцией. Запись "Басаев Шамиль Солманович (правильно Салманович) + посторонние слова" она пропускала со свистом!
      Не знаю, у нас в банке такое положение вещей не понравилось руководству
      А ведь в основании платежа может быть написано что угодно...

      Комментарий


      • #4
        Cost
        А скорость ее работы банки устраивает? У нас, при небольшом количестве (~5000) документов в RS_BANK в день, проверка дня занимает около часа. Из-за медленной скорости ее даже на этап ввода документа не вставляют..

        Кстати, попробовал такую строчку:
        "Дрова из лесу вестимо. Отец слышишь рубит, а я отвожу!.. Басаеву Шамилю Салмановичу на закупку оружия для Аль Каиды". Система не поймала! (видимо из уважения к русской литературе..)

        Комментарий


        • #5
          2 Andrej_:
          видимо из уважения к русской литературе...
          И правильно! Террор - террором, а классиков уважать надо. Тем более, если персонаж Некрасова рубит и продает дрова, а вырученные деньги посылает на закупку оружия, то тут явно что-то не так!

          Комментарий


          • #6
            2 Andrej_:
            Кстати, а я ни слова не сказал, что функция плохая. Отличная! Просто все люди(банки) разные... И террористов ловят в меру сил.

            Комментарий


            • #7
              И я предлагаю облегчить сей непосильный труд.
              Если кто-нибудь хочет встроить модуль к себе в систему, с проверкой на действительном справочнике, пишите. Вы сами сможете сравнить его со стандартным, и почувствовать разницу. У нас в банке он используется на ряду со стандартным, но стандартный -- только "для галочки". Реальную защиту обеспечивает именно описываемый здесь модуль.

              Комментарий


              • #8
                Обновил программу.
                Не нашел способа приаттачить архив обратно к первому посту, поэтому вот он:

                Комментарий


                • #9
                  Andrej_ - доброго дня
                  пробую работу Вашего функционала на проводке документа в postdoc, в назначении платежа указан один из выпускников, получаю следующее сообщение
                  Код:
                  Внимание! Подозрение на принадлежность к списку террористов!
                       --------------------------------------------------
                              В строке "Агаханов Антон Назарович":
                                  Error in string processing!♪
                       --------------------------------------------------
                                           Проводить?
                  что означает следующая строка?
                  Код:
                  Error in string processing!♪
                  согласно Вашего описания функции Check_Terror должна возвращать немного другое...

                  Комментарий


                  • #10
                    Gindos
                    Здравствуйте. А Вы точно положили все файлы в "..\MAC\user_bazhan\no_terror\" рсбанка, как написано в инструкции? Этот путь жестко прописан в Dlm, она по нему находит terror.dat. К сожалению, я не нашел способа из длм узнать в каком каталоге она расположена, поэтому путь фиксирован.
                    p.s. Агаханова я знал лично

                    Комментарий


                    • #11
                      Andrej_
                      конечно нет - все сложил куда Вы сказали и сработало... огромное спасибо за созданный функционал
                      буду делать посмотреть в течение недельки-другой
                      на каких условиях можна получить боевую базу "барадатых"?

                      Комментарий


                      • #12
                        Gindos на каких условиях можна получить боевую базу "барадатых"?

                        А Вы и Ваш банк доверяет Andrej_? ^-)
                        Я ничего против не имею...

                        Комментарий


                        • #13
                          Adyan
                          ну раз не имеете, то почему спрашиваете?
                          как гриться "ближе к телу...", а вокруг да около ходить не нужно

                          Комментарий


                          • #14
                            Я имел ввиду против Andrej_.
                            Использовать предложенный функционал, думаю, можно и даже может быть эффективнее. Но пользоваться "базой" я бы не стал.

                            Комментарий


                            • #15
                              Gindos
                              Скиньте мне Ваш емэйл, вышлю. Причем это не база. База должна быть у вас в RS (terror.dbt). С помощью макроса и программы Вы экспортируете оттуда данные, и сформируете рабочий файл terror.dat.
                              Adyan
                              Вспомнилась фраза из "Штирлица":
                              "В наше тяжелое время.. нельзя доверять никому! Порой даже самому себе... Мне можно!"
                              Если серьездно, то, что касается доверия к правильности распознавания всех террористов, можно написать простой макрос подсовывающий модулю всех террористов в произвольном шаблоне предложения. Паралельно с этой программой, Вы можете продолжать пользоваться и стандартной процедурой RS.

                              Комментарий


                              • #16
                                Andrej_
                                Так и я говорю, что ваша процедура "распознования" у меня сомнений в её эффективности не вызывает. Я про то, что я бы не стал брать у вас terror.dbt при всём моём доверии :-)

                                Комментарий


                                • #17
                                  Adyan
                                  Я бы на вашем месте тоже не стал, но дело как раз в том, что я его и не предлагаю! Макросом из вашего terror.dbt формируется текстовый список имен, потом программой -- terror.dat. Доверие, что туда попадут ВСЕ террористы, не требуется, т.к. это легко проверить как я написал выше.

                                  Комментарий


                                  • #18
                                    Andrej_К сожалению я не нашел способа из длм узнать в каком каталоге она расположена...Может вам поможет функция GetModuleFileName().

                                    Комментарий


                                    • #19
                                      Иванов
                                      Разве что попробовать получить необходимый "HMODULE hModule" через вызов GetModuleHandle("terrorDlm.d32"). Не знаю, получится ли, но попробую.

                                      Комментарий


                                      • #20
                                        Можно конечно и так, но полной гарантии, что это будет именно нужный описатель нет. Гораздо проще добавить в длм точку входа DllMain...

                                        Комментарий


                                        • #21
                                          Иванов
                                          А разве DllMain не присутствует уже где-то в недрах dlm? Я могу ее добавлять?

                                          Комментарий


                                          • #22
                                            Кто же вам может помешать, длм-то ваш Вы просто посмотрите, что там присутствует, а что нет...

                                            Комментарий


                                            • #23
                                              Я имел в виду что эта функция где-то в скомпилированной библиотеке rsldlmms.lib. Кто-то же дергает InitExec\DoneExec, я предполагал что это из DllMain, которая мне не доступна для редактирования. Завтра посмотрю.

                                              Комментарий


                                              • #24
                                                Вы предполагали неправильно...

                                                Комментарий


                                                • #25
                                                  Да, DllMain добавилась благополучно, спасибо.

                                                  Комментарий


                                                  • #26
                                                    Andrej_ Подскажите, выложенная версия checker.exe из архива terrord.rar позволяет создать terror.dat из своего terror.txt или нет? Дело в том, что у меня при попытке это сделать выскакивает сообщение:
                                                    Line not found:
                                                    иванов антон петрович

                                                    Generation failed!
                                                    Press any key..
                                                    А если подсунуть переименованный в terror.txt файл выпускники.txt, то все нормально.

                                                    Комментарий


                                                    • #27
                                                      mrmaxi
                                                      Эта версия не позволяет. Как я говорил, я высылаю специальный инструмент, позволяющий вам самостоятельно сделать рабочую проверку по вашему terror.dbt.

                                                      Комментарий


                                                      • #28
                                                        Мож у кого завалялся этот "специальный инструмент" а то ну очень надо, пожалуйста скажите у кого есть и повозможности отправьте мне.
                                                        Ну очень нужно!
                                                        Просто немогу до Andrej_ дописаться, вот и обращаюсь к Вам(тем у кого есть).

                                                        Комментарий

                                                        Пользователи, просматривающие эту тему

                                                        Свернуть

                                                        Присутствует 1. Участников: 0, гостей: 1.

                                                        Обработка...
                                                        X