Поскольку последние несколько месяцев я работал исключительно с JavaScript, я решил сделать проект с одним из первых языков, которые я изучил, когда начал серьезно относиться к программированию. Python!

В связи с этим мне потребовались некоторые идеи для проекта, поэтому я решил возиться с Reddit API и хотел сделать проект типа анализа / визуализации данных. Затем я просмотрел документацию по оболочке под названием PRAW и увидел, что могу извлекать комментарии, и поэтому мне пришла в голову идея находить самые популярные слова на основе комментариев к каждому субреддиту.

Остерегайтесь, впереди много технических болтовни, не стесняйтесь переходить до конца, чтобы увидеть результаты

Оболочка поставляется с методом, который возвращает массив, содержащий отдельные элементы отправки, каждый со своими собственными комментариями. Оттуда я мог перебирать каждое сообщение, а затем извлекать из каждого комментария отдельные слова и анализировать их. Легко, правда? или так я думал.

Как оказалось, комментарии на самом деле представляют собой гигантский набор отдельных персонажей! Итак, теперь мне нужно было найти способ преобразовать гигантский массив символов в отдельные слова.

Решение, которое я придумал, было простым. Каждый раз, когда я встречал пустой символ, это означало, что текущее слово закончилось. Поэтому я бы объединял каждый символ, пока не дойду до пустого места, и сохраню строку в массив.

Получившийся массив выглядел так:

Идет прогресс, но, как вы можете видеть, есть символы, которые не являются буквами, которые в дальнейшем могут исказить данные. Так что мне нужен был способ избавиться от них. К счастью, в python есть изящный метод, встроенный для проверки буквенно-цифровых символов, поэтому я мог просто проверить их и соответственно уменьшить строку. Я также следил за тем, чтобы не проходили пустые слова.

Замечательно, теперь последнее, что мне нужно было сделать, это сопоставить количество символов, поэтому я использовал словарь, чтобы отслеживать количество вхождений. Затем я отсортировал его, чтобы получить самые популярные вхождения.

Когда я впервые протестировал его, я обнаружил, что, естественно, лучшими результатами будут общие слова, такие как «то», «это», «то» и т. Д., И поэтому я хотел игнорировать эти общие слова, чтобы найти слова, более уникальные для каждого субреддита. Не очень элегантное, но эффективное решение заключалось в том, чтобы создать набор общих слов, и перед добавлением слова в список он проверяет, есть ли слово в наборе, и игнорирует его, если это так. Я использовал набор вместо обычного списка для более эффективного времени поиска O (1) против O (n)

теперь у меня есть упорядоченное сопоставление уникальных слов с субреддитом, поэтому мне нужно просто отобразить его. У Python есть аккуратная библиотека под названием Matplotlib, которая может красиво представлять данные. Я использовал компонент круговой диаграммы для отображения данных и выбрал 10 самых популярных слов.

Результаты были великолепны, я протестировал его на нескольких субреддитах, каждый с размером выборки в 10 000 комментариев. Вот что сказали сабреддиты:

Внимание, впереди много нецензурной брани! (в конце концов, это Reddit)

Это был действительно забавный хакер, который оказался технически сложнее, чем я ожидал. Вы можете посмотреть его код вместе с другими моими проектами здесь

Спасибо за прочтение! Надеюсь, вы кое-что узнали, было ли это о Reddit или о технологиях.