После одной недели исследований, проб и ошибок у меня есть еще некоторый прогресс для публикации/отчета. Я начал неделю с установки пакетов, используемых в книгах, которые я читаю. Я написал простой сценарий оболочки, чтобы установить их все:
#!/bin/bash apt-get update -y; apt-get upgrade -y; apt-get install python-pip python3-pip python-bs4 python3-bs4; apt install apt-transport-https software-properties-common; sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9;sudo add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/'; apt-get update -y; apt-get install r-base; apt install gdebi-core; wget https://download1.rstudio.org/desktop/bionic/amd64/rstudio-1.2.5019-amd64.deb; gdebi rstudio-1.2.5019-amd64.deb; pip install -r requirements.txt; pip3 install -r requirements.txt; echo "Installation Complete!"
Файл requirements.txt — это фактические пакеты Python для установки. Вот этот файл:
requests jupyterlab numpy tensorflow scikit-learn nltk pandas matplotlib re bs4
Поскольку книги «Машинное обучение» и «Обработка естественного языка» длиннее и содержат более длинные главы, в настоящее время я стараюсь заполнять один раздел в неделю прямо сейчас. Это позволяет мне усваивать больше материала по разным дисциплинам, продолжая при этом продвигаться вперед с моей книгой, писать другие блоги и выполнять свою повседневную работу.
Изучение Python
Обработка естественного языка
Начав с другого НЛП, обработки естественного языка, а не нейролингвистического программирования, я установил инструментарий естественного языка (nltk). Сначала я запускал команды из книги в интерпретаторе python3; затем я решил написать несколько сценариев и сохранить их в виде файлов.
В начале этой книги (Обработка естественного языка с помощью Python) я провожу много времени, используя пример набора данных из nltk, который можно установить через:
from nltk.book import *
Это дает девять различных литературных произведений для анализа. Книга начинается с элементарной математики и арифметики. Далее начинается анализ слов в файлах (с именами text1-text9). Мы начнем с создания соответствия, которое представляет собой список определенных слов, используемых в алфавитном порядке и количестве вхождений. Я вижу, где это будет важно в более поздних проектах из-за контекста, который это обеспечивает. Чтобы получить согласование файла:
<filename>.concordance("<word_searched_for")
Мы также можем выполнить аналогичный поиск со словом similar вместо concordance. Это найдет слова, подобные тому, что искали. Я запустил это со словом «засмотрелся», и он показал мне строки (в контексте), содержащие фразы «засмотрелся» и «обнаружил».
Используя common_context, мы можем увидеть случаи, когда слова имеют схожий контекст.
<filename>.common_context(["<word1>", "<word2>"])
Вот где все может стать страшно. Генерирующая функция. Он проанализирует ввод текста и создаст собственный отрывок, используя ngrams. Представьте себе возможности для этого, если использовать его для дезинформации, обмана или дипфейков.
Затем мы работаем с командой len(), чтобы определить длину нашего текста. Затем мы переходим к сортировке с помощью sorted() и подсчета вхождений слов. Мы можем сделать это через:
<filename>.count("<word>")
Далее мы переходим к спискам: создаем их, добавляем два списка вместе и добавляем к ним. Мы переходим к спискам индексации через:
<filename>.index("<word>") Indexes for the word <word>. <filename>[8675309:] Indexes all items in the list after 8675309 (note the list starts at 0). <filename>[:8675309] Indexes all items in the list before (not including) 8675309 . <filename>[867:5309] Indexes all items in the list from item 867 to 5308. <filename>[6] Item number 6 in the list. Modifying Lists: <list>[6] = 'six' Will write 'six' as the 6th item in the list or replace the 6th item with 'six'
Далее идут переменные, затем строки. Мы начинаем работать с Frequency Distribution (кстати, это может пригодиться при взломе пароля). Это работает через частоту слов, длину слов и их комбинацию. Это достигается с помощью пакета FreqDist в составе nltk.
В следующем разделе я работаю с логикой и условиями Python.
< Less Than <= Less Than or Equal To == Equal To != Not equal To > Greater Than >= Greater Than or Equal To
Условные модели употребления:
<name>.startswith(<letter>) <name>.endswith(<letter>) <letter> in <name> <name>.islower() Checks if all characters are lowercase <name>.isupper() Checks if all characters are uppercase <name>.isaplha() Checks if all characters are alphabetic <name>.isalnum() Checks if all characters are alphanumeric <name>.isdigit() Checks if all characters are digits (numbers) <name>.istitle() Checks if all characters are in Title Case (All initial capitals)
Вот пример, когда я ввожу в интерпретатор главу моей будущей книги и ищу слова, оканчивающиеся на «ishing»:
>>> sorted([w for w in set(book) if w.endswith('ishing')]) ['Phishing', 'accomplishing', 'phishing', 'vishing']
Это может быть полезно для определения вариантов, которые люди используют в паролях.
Машинное обучение (с SciKit-Learn и Tensorflow)
Большая часть первой главы книги (Практическое машинное обучение с помощью Scikit-Learn и Tensorflow) посвящена ознакомлению с тем, как работает машинное обучение. Это проведет нас через контролируемое и неконтролируемое обучение, качество данных, недостаточное и чрезмерное обучение, обучение на основе экземпляров и обучение на основе моделей, а также пакетное обучение по сравнению с онлайн-обучением, и это лишь некоторые из них.
На самом деле я не писал никакого кода и не изучал ничего, относящегося к Python, в этой главе. Для меня это было серьезным освежением в том, что я узнал, работая над сертификатом о высшем образовании. Я смог продолжить с того места, где остановился, с аспектами кластерного анализа и регрессии, что в некотором смысле принесло облегчение.
Вывод
Следующая неделя будет насыщенной. В дополнение к моей основной работе я буду участвовать в подкасте ITSP Magazine в понедельник и Paul’s Security Weekly в четверг в рамках панели тестирования на проникновение. Я надеюсь выполнить свои добровольные квоты, но посмотрим, где я приземлюсь. Я проверю на следующей неделе.
На этой неделе компания AT&T Cybersecurity (ранее AlienVault) опубликовала мою статью Какая сертификация безопасности вам подходит (если есть). У меня есть готовящиеся к выпуску работы TripWire и ITSP, оба из которых посвящены теме Один дома. Оставайтесь с нами для тех. Я также буду писать что-то для работы, так что следите за этим.