Как стать автором
Обновить

Как решить 90% задач NLP: пошаговое руководство по обработке естественного языка

Время на прочтение16 мин
Количество просмотров110K
Всего голосов 38: ↑36 и ↓2+34
Комментарии11

Комментарии 11

One-hot encoding («Мешок слов»)

Может вы хотели написать Bag of Words?
Словосочетание «мешок слов» более или менее устоялось, поэтому показалось разумно его использовать с указанием исходного выражения. А вот для one-hot encoding можно предложить разве что one-hot-кодирование, поэтому в заголовке получилось смешение.
Спасибо за замечание, интересно мнение о переводе или использовании терминологии на английском.
В любом случае, мешок слов и one-hot кодирование — это совершенно разные термины. Это может спутать тех, кто только знакомится с темой. Например, можно одновременно использовать one-hot кодирование слов и использовать CNN/RNN без bag of words.
НЛО прилетело и опубликовало эту надпись здесь
Но ведь мешок слов игнорирует порядок. А разные спряжения приводятся к одному варианту при предобработке датасета. Данному методу должно быть пофиг на эти особенности языков.
объясняем ее предсказания

— а не могли бы поподробнее, какие предсказания на дискриминационных моделях можно делать?
А поясните, как это работает:
переход от 75.4% к 76.2% — «очень незначительное улучшение»
переход от 77.7% к 79.5% — «гораздо лучше предыдущей»
Возможно, последнее сравнение применимо к переходу от 75,4 до 79,5. А возможно, это просто оценочное суждение автора, которое складывается и из косвенных признаков. А конкретные значения позволяют вам самостоятельно решить, стоит ли игра свеч.
В случае с катастрофами эти 2-4 процента могут быть критичными, и обеспечить спасение человеческой жизни. Так что я бы назвал все улучшения существенными.

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


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

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


Во-вторых, размечать данные дорого и долго. Хорошо, если у вас открытые данные, а принцип разметки легко объяснить — в этом случае можно закинуть данные в Amazon MTurk или Яндекс Толоку и просто подождать пару дней. А вот если данные выгружать в сторонние системы нельзя, или разметка требует определённой экспертизы, создание набора данных может стать просто адски долгим.


Далее следует чеклист, который используется при очистке наших данных

Здесь чувствуется явный перекос в сторону классификации с bag of words представлением на небольшом объёме данных. Если вы хотите разбирать структуру предложений или искать упоминания (dependency parsing & coreference resolution), находить именованные сущности (named entity recognition), переводить или генерировать текст, или даже просто использовать модели на основе рекуррентных или свёрточных сетей, то многие пункты из этого списка могут сделать данные только хуже. Например, попробуйте по словам только в нижнем регистре определить, является ли "cure" упоминанием лекарства или группы "The Cure".


Дальше по тексту смешиваются понятия one-hot encoding (в переводе), bag of words и embeddings, хотя embeddings — это как раз встраивание из пространства с одним измерением на слово в пространство с меньшей размерностью с плотным непрерывным представлением.


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

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


Во-вторых, даже если у вас очень хорошие данные, и логистическая регрессия выдала в первой десятке максимальных коэффициентов действительно релевантные слова, то остальные 19990 слов вы всё равно не просматриваете. Поэтому аргумент про интерпретируемость для меня выглядит довольно странным.


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

Что будет работать только на классификаторах, которые считают все слова независимыми. Если 2 слова зависимы, удаление одного может привести к непредсказуемым результатам (по-отдельности слова "так" и "себе" значат совсем не то же самое, что "так себе").


[свёрточные сети] обычно гораздо быстрее обучаются, чем большинство сложных подходов NLP (например, LSTM-сети и архитектуры Encoder/Decoder )

Откуда взялось сравнение свёрточных сетей и encoder/decoder архитектур, учитывая, что они решают разные задачи, и вообще encoder/decoder может включать в себя CNN, для меня загадка.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий