Pull to refresh
0
@C1ear1kread⁠-⁠only

User

Send message

Задача: извлечь ключевые выражения из текста на русском языке. NLP на Python

Reading time6 min
Views40K
Что было нужно в самом начале:

  • программа, «выуживающая» из сырого текста на русском языке уникальные названия продукции по определенной отрасли. Сырой текст — текст, который писал человек, просто излагая свои мысли и не заботясь о формировании или выделении какого-либо списка слов;
  • автоматически получаемый список слов;
  • минимальная ручная или автоматизированная обработка для преобразования списка в набор хештегов или ключевых слов к тексту.

Полагаю, что неявно с проблемой многие сталкиваются ежедневно, после написания или анализа статьи, поста, комментария, заметки, отчета и т.д. Вот и мне по роду деятельности приходилось сталкиваться с данной проблемой по многу раз в день. Поэтому, можно сказать, к идее автоматизации меня привела «лень», в хорошем смысле этого слова.

Сейчас, когда я пишу эту статью, сохранилась идея, но набор данных конечного результата сильно изменился:

  • выбираются не слова, а ключевые выражения и в том числе слова;
  • список ключевых выражений размечен 16-ю различными маркерами;
  • все слова текста (в том числе и не ключевые) лемматизированы – приведены в начальную форму или унифицированы под выведенный формат;
  • каждое слово в тексте имеет дополнительную аналитику, относящуюся к положению по тексту и числу повторений.

Результаты работы ПО nrlpk (Natural Russian Language Processing by the Keys) подготавливают данные для:

  • анализа текстов неограниченного круга тематик и отраслей (разработка и тестирование проводилось по материалам тематики промышленности и ВПК — Военно-Промышленного Комплекса);
  • автоматической рубрикации, классификации, каталогизации, предметизации материалов (online площадки);
  • контроля и фильтрации по содержимому с настройками реакции системы (службам и системам безопасности в замкнутых контурах или online);
  • многослойной разметки текстов (ИИ).

Качество

Открыть полный текст
Total votes 12: ↑10 and ↓2+8
Comments23

50 оттенков matplotlib — The Master Plots (с полным кодом на Python)

Reading time39 min
Views368K
Те, кто работает с данными, отлично знают, что не в нейросетке счастье — а в том, как правильно обработать данные. Но чтобы их обработать, необходимо сначала проанализировать корреляции, выбрать нужные данные, выкинуть ненужные и так далее. Для подобных целей часто используется визуализация с помощью библиотеки matplotlib.



Встретимся «внутри»!
Читать дальше →
Total votes 67: ↑67 and ↓0+67
Comments15

Must-have алгоритмы машинного обучения

Reading time5 min
Views30K
Хабр, привет.

Меня зовут Рушан, и я автор Telegram‑канала Нейрон. Не забудьте поделиться с коллегами или просто с теми, кому интересны такие статьи. Этот пост — краткий обзор общих алгоритмов машинного обучения. К каждому прилагается краткое описание, гайды и полезные ссылки.

Метод главных компонент (PCA)/SVD


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

image

SVD — это способ вычисления упорядоченных компонентов.

Полезные ссылки:


Вводный гайд:

Читать дальше →
Total votes 38: ↑31 and ↓7+24
Comments6

Garbage Collector. Полный курс + перевод из BOTR

Reading time10 min
Views23K

В данной статье вы встретите сразу два источника информации:


  1. Полный курс по работе Garbage Collector на русском языке: CLRium #6 (текущий семинар здесь)
  2. Перевод статьи из BOTR "Устройство сборщика мусора" от Маони Стевенс.

Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments2

Творчество на iPad и iPhone

Reading time4 min
Views13K


Для iOS постоянно появляются приложения для творчества. Музыкальные синтезаторы,  рисование акварелью, пиксель-арт и много чего ещё. Вдохновившись очередным таким приложением, я решил поделиться с вами информацией о возможностях для творчества, которые доступны на iOS-устройствах.

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

Моя цель — не перечислить программы на iOS, а дать обзор возможностей для творчества, которые вообще есть, и, возможно, вдохновить вас на творческое занятие.

И сегодня я расскажу о музыкальных приложениях и гаджетах.
Читать дальше →
Total votes 39: ↑37 and ↓2+35
Comments16

Как правильно раскрашивать многочлены

Reading time9 min
Views7.2K

Многочлены – это не просто упражнения в абстрактных материях. Они прекрасно подходят для выявления структур в неожиданных местах.




В 2015 году бывший поэт, ставший математиком, Джун Хо помог решить задачу, сформулированную около 50 лет назад. Она была связана со сложными математическими объектами, "матроидами", и графами (комбинациями точек и отрезков). А ещё она была связана с многочленами – знакомыми нам с уроков математики выражениями, состоящими из суммы переменных, возведённых в различные степени.

В какой-то момент в школе вы, наверное, проходили раскрытие скобок у многочленов. К примеру, вы можете помнить, что x2 + 2xy + y2 = (x + y)2. Удобный алгебраический трюк, но где он может пригодиться? Оказывается, что многочлены отлично помогают выявлять скрытые структуры – и в своём доказательстве Хо активно использовал этот факт. Вот простая загадка, иллюстрирующая это.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments3

Архив олимпиадных задач по физике для школьников

Reading time1 min
Views25K

За долгое время работы в школе я сформировал банк задач по физике для подготовки к олимпиадам. Задачи можно искать по нужным темам, уровню, классу. Затем отправлять на печать, или в виде ссылки ученикам. И хотя я уже не работаю в школе, решил, что жалко добру пропадать. Сайт без рекламы и прочей монетизации. Если вы учитель физики, или родитель, добро пожаловать под кат.

Читать дальше →
Total votes 101: ↑101 and ↓0+101
Comments40

iPhone 11, новый iPad, TV+, Arcade и другое. Что сегодня показала Apple

Reading time8 min
Views20K


Несколько минут назад закончился очередной ежегодный Apple Event. В театре Стива Джобса компания представляла то, чем будет радовать нас в этом году.


Тех-гики, собравшиеся в атриуме над театром, говорят, атмосфера была на удивление спокойной. Все в основном думали, что знают, чего ожидать. А на сам ивент больше пришли для того, чтобы подтвердить свои догадки. Хотя сотрудники, попадавшиеся им по пути, были необычно воодушевлены.


Сама Apple в этом году впервые открыла свою презентацию для публики, которая еще не сидит на её девайсах. Лайвстрим был доступен на YouTube, в «Твиттере» и на сайте самой Apple, где любой мог посмотреть его с десктопа. Давно пора было! И оно того явно стоило. На пике во всех этих платформах было больше трёх миллионов зрителей, это не считая ретрансляций. Вполне неплохой результат.


На Хабре прекрасную живую текстовую трансляцию вёл ivansychev. Если хочется прочувствовать момент, горячо рекомендую.


А у нас – коротко и по фактам.

Читать дальше →
Total votes 29: ↑25 and ↓4+21
Comments80

Оптимизация производительности .NET (C#) приложений

Reading time11 min
Views40K
image

Статей с подобным заголовком достаточно много, поэтому постараюсь избежать банальных тем. Надеюсь, что даже опытный разработчик найдёт здесь что-то полезное для себя. В данной статье будут рассмотрены только простые механизмы и подходы оптимизации, которые позволят применить их, затратив минимум усилий. И эти изменения не увеличат энтропию вашего кода. В статье не будет уделено внимания, что и когда нужно оптимизировать, эта статья скорее о подходе к написанию кода в целом.
Читать дальше →
Total votes 48: ↑44 and ↓4+40
Comments51

ООП, «святая троица» и SOLID: некоторый минимум знаний о них

Reading time43 min
Views114K

Необходимое вступление


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


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


Столь малые гарантии поднимают вопросы о причинах, по которым статья пишется. Я считаю, что этим вещам должны учить везде, где учат программированию, вплоть до уроков информатики в школах с углублённым её изучением. Тем не менее, для меня стала пугающе нормальной ситуация, когда я узнаю, что собеседник мой коллега, причём работающий уже не первый год, но про инкапсуляцию «что-то там слышал». Необходимость собрать всё это в одном месте и давать ссылку при возникновении вопросов зрела давно. А тут ещё и мой «pet-project» дал мне изрядно пищи для размышлений.


Тут мне могут возразить, что учить эти вещи в школе рановато, и вообще на ООП свет клином не сошёлся. Во-первых, это смотря как учить. Во-вторых, 70% материала этой статьи применимо не только к ООП. Что я буду отмечать отдельно.



Читать дальше →
Total votes 88: ↑82 and ↓6+76
Comments79

Мониторинг .NET приложений

Reading time12 min
Views12K

.NET – управляемая среда выполнения. Это означает, что в ней представлены высокоуровневые функции, которые управляют вашей программой за вас (из Introduction to the Common Language Runtime (CLR), 2007 г.):


Среда выполнения предусматривает множество функций, поэтому их удобно разделить по следующим категориям:

  1. Основные функции, которые влияют на устройство других. К ним относятся:
    1. сборка мусора;
    2. обеспечение безопасности доступа к памяти и безопасности системы типов;
    3. высокоуровневая поддержка языков программирования.
  2. Дополнительные функции– работают на базе основных. Многие полезные программы обходятся без них. К таким функциям относятся:
    1. изолирование приложений с помощью AppDomains;
    2. защита приложений и изолирование в песочнице.
  3. Другие функции – нужны всем средам выполнения, но при этом они не используют основные функции CLR. Такие функции отражают стремление создать полноценную среду программирования. К ним относятся:
    1. управление версиями;
    2. отладка/профилирование;
    3. обеспечение взаимодействия.

Видно, что хотя отладка и профилирование не являются основными или дополнительными функциями, они находятся в списке из-за ‘стремления создать полноценную среду программирования’.


Total votes 21: ↑20 and ↓1+19
Comments2

Дорожная карта Android-разработчика в 2019 году

Reading time7 min
Views30K

Всем привет! У нас отличные новости. В этом месяце в Отус стартует базовый курс "Android-разработчик", а также "Специализация Android-разработчик", которая включает в себя целый пакет курсов. В связи с этим делимся с вами полезной статьей, перевод которой приурочен к данным запускам.



2019 год – самое время, чтобы стать Android-разработчиком. Беря во внимание те инновации и тот прогресс, который сейчас происходит в сфере Android-разработки, можно сказать, что сейчас самое время стать частью этого движения. Последние достижения в Kotlin, Android Things и иных технологиях, делают Android приоритетным направлением развития для новичка, давая возможность получать актуальную информацию и двигаться вперед в определенном направлении.


Я решил написать это руководство после того, как подумал о том, что в 2017 году я сам проходил такой же путь. Надеюсь, оно поможет вам стать таким Android-разработчиком, каким вы хотите быть.
Начнем с самых основ.

Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments19

Разбираемся с латинскими сокращениями и фразами в английском языке

Reading time6 min
Views64K


Полтора года назад, читая работы про уязвимости Meltdown и Spectre, я поймал себя на том, что не очень понимаю разницу между сокращениями i.e. и e.g. Т.е. по контексту вроде бы понятно, но потом вроде бы как-то и не совсем то. В результате я тогда сделал себе небольшую шпаргалку именно по этим сокращениям, чтобы не путаться. И тогда же появилась идея этой статьи.


Прошло время, я набрал коллекцию встреченных в английских источниках латинских слов и сокращений и сегодня готов поделиться ею с читателями Хабры. Стоит заметить, что многие из этих фраз активно употребляются и в академической литературе на русском языке, но в английском они – частые гости даже в массовых источниках. Надеюсь, что эта подборка пригодится людям, не занимающимся научной работой в русскоязычной среде, но часто сталкивающимся с более-менее серьезными текстами на английском, где латинские вкрапления могут сбить с толку.

Читать дальше →
Total votes 143: ↑142 and ↓1+141
Comments72

Открытый курс машинного обучения. Тема 2: Визуализация данных c Python

Reading time15 min
Views416K

Второе занятие посвящено визуализации данных в Python. Сначала мы посмотрим на основные методы библиотек Seaborn и Plotly, затем поанализируем знакомый нам по первой статье набор данных по оттоку клиентов телеком-оператора и подглядим в n-мерное пространство с помощью алгоритма t-SNE. Есть и видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017).


UPD 01.2022: С февраля 2022 г. ML-курс ODS на русском возрождается под руководством Петра Ермакова couatl. Для русскоязычной аудитории это предпочтительный вариант (c этими статьями на Хабре – в подкрепление), англоговорящим рекомендуется mlcourse.ai в режиме самостоятельного прохождения.


Сейчас статья уже будет существенно длиннее. Готовы? Поехали!

Читать дальше →
Total votes 52: ↑52 and ↓0+52
Comments45

Видеокурс «Введение в реверсинг с нуля, с использованием IDA PRO. Глава 1»

Reading time1 min
Views12K
Привет, Хабравчане!

Хочу сообщить Вам приятную новость. Уже доступна первая видео-глава из цикла статей — «Введение в реверсинг с нуля, с использованием IDA PRO». Сам видеоролик доступен здесь. Очень красивый PDF файл здесь.

Также здесь можно увидеть какие комплектующие я приобрел в своё время:


А здесь можно посмотреть на компьютер в сборке:


Также, в видеоролике я рассказываю про 99 год, Журнал Хакер, в общем про то, что было и уже не будет. И я очень рад, что я попал в это время, время 90-х и пережил всё это.
Total votes 23: ↑21 and ↓2+19
Comments34

Подборка полезных слайдов от Джулии Эванс

Reading time1 min
Views52K
Перевели новую порцию слайдов. Права доступа в Unix, файловые дескрипторы, потоки, магия proc. И на закуску пара советов о том, как общаться, когда ты не согласен. А вдруг пригодятся =)



Читать дальше →
Total votes 115: ↑111 and ↓4+107
Comments42

Пирамидальная сортировка (HeapSort)

Reading time7 min
Views202K


Перевод статьи подготовлен специально для студентов курса «Алгоритмы для разработчиков».




Пирамидальная сортировка (или сортировка кучей, HeapSort) — это метод сортировки сравнением, основанный на такой структуре данных как двоичная куча. Она похожа на сортировку выбором, где мы сначала ищем максимальный элемент и помещаем его в конец. Далее мы повторяем ту же операцию для оставшихся элементов.

Total votes 30: ↑28 and ↓2+26
Comments6

MVVM: полное понимание (+WPF) Часть 1

Reading time8 min
Views285K
В настоящей статье задействован мой опыт доведения некоторого числа студентов до полного и окончательного понимания паттерна MVVM и реализации его в WPF. Паттерн описывается на примерах возрастающей сложности. Сначала теоретическая часть, которая может использоваться безотносительно конкретного языка, затем практическая часть, в которой показано несколько вариантов реализации коммуникации между слоями с использованием WPF и, немножко, Prism.

Зачем вообще нужно использовать паттерн MVVM? Это ведь лишний код! Написать тоже самое можно гораздо понятнее и прямолинейнее.

Отвечаю: в маленьких проектах прямолинейный подход срабатывает. Но стоит ему стать чуть больше — и логика программы размазывается в интерфейсе так, что потом весь проект превращается в монолитный клубок, который проще переписать заново, чем пытаться распутать. Для наглядности можно посмотреть на две картинки:
Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments53

А ваш язык программирования необоснованный? (или почему предсказуемость важна)

Reading time15 min
Views35K
Как должно быть очевидно, одна из целей этого сайта — убедить принимать F# всерьёз в роли универсального языка разработки.

Но в то время как функциональный стиль всё больше проникает в массы, и C# уже получил такие функциональные средства как лямбды и LINQ, кажется, что C# всё больше и больше наступает на пятки F#. Так что, как это ни странно, но я стал всё чаще слышать как высказывают такие мысли:

  • «C# уже обладает большей частью инструментария F#, и зачем мне напрягаться с переходом?»
  • «Нет никакой необходимости что-то менять. Всё, что нам нужно сделать, так это пару лет подождать, и C# получит достаточно от F#, что обеспечит практически все плюшки.»
  • «F# только чуть лучше, чем C#, но не настолько, чтобы в самом деле тратить время с переходом на него.»
  • «F# кажется действительно неплох, хоть и пугает местами. Но я не могу найти ему практического применения, чтобы использовать вместо C#.»

Не сомневаюсь, что теперь, когда и в Java тоже добавлены лямбды, подобные комментарии зазвучали в экосистеме JVM при обсуждении «Scala и Closure против Java».

Так что в этой статье я собираюсь отойти от F# и сосредоточиться на C# (а на его примере и на других популярных языках), чтобы показать, что даже с реализацией всех мыслимых средств функциональных языков программирование на C# никогда не будет таким же, как на F#.
Читать дальше →
Total votes 47: ↑36 and ↓11+25
Comments195

Асинхронное программирование – производительность async: понять расходы на async и await

Reading time21 min
Views31K

Это статья достаточно древняя, но не потерявшая актуальности. Когда разговор заходит об async/await, как правило, появляется ссылка на неё. Перевода на русский найти не смог, решил помочь кто не fluent.




Асинхронное программирование долгое время было царством самых опытных разработчиков с тягой к мазохизму – тех, кто имел достаточно свободного времени, склонность и психические способности размышлять об обратных вызовах (callback) из обратных вызовов в нелинейном потоке выполнения. С появлением Microsoft .NET Framework 4.5, C# и Visual Basic принесли асинхронность всем нам, так что простые смертные теперь могут писать асинхронные методы почти так же легко, как синхронные. Обратные вызовы больше не нужны. Больше не нужна явная передача (marshaling) кода из одного контекста синхронизации в другой. Больше не нужно беспокоиться как двигаются результаты выполнения или исключения. Нет необходимости в трюках, которые искажают средства языков программирования для удобства разработки асинхронного кода. Короче говоря, больше нет мороки и головной боли.

Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments5

Information

Rating
Does not participate
Registered
Activity