После одной недели исследований, проб и ошибок у меня есть еще некоторый прогресс для публикации/отчета. Я начал неделю с установки пакетов, используемых в книгах, которые я читаю. Я написал простой сценарий оболочки, чтобы установить их все:

#!/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, оба из которых посвящены теме Один дома. Оставайтесь с нами для тех. Я также буду писать что-то для работы, так что следите за этим.