Size: a a a

Natural Language Processing

2020 May 24

AM

Alex Mak in Natural Language Processing
Всем добрый день!
Вопрос по multi-label классификации. Есть вот такая задача на kaggle: https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge/overview Для каждого текста нужно предсказать одну или несколько категорий.
У меня другие тексты (на русском, к слову), но задача та же – нужно проставить от 0 до 12 меток.
Мой вопрос в следующем: После predict для какого-то текста я получаю список вероятностей для каждой категории. Как мне перевести эти вероятности в метки? Конечному же пользователю эти вероятности без надобности, ему нужно 1/0 ситуация – вот этот текст на входе, он относится к данной категории или нет? А вот к той? Т. е. ситуация не вероятностная для обычного пользователя, а строго бинарная: метка либо есть, либо ее нет.
Скажем у меня есть вероятности (для 3-х меток, не будем пока про 12 говорить): 0,01; 0,5; 0,4. Понятно, что первой метки тут не должно быть? А что делать со второй и третьей? Ставить только вторую? Или вторую и третью? А если вероятности были бы такие: 0,01; 0,6; 0,65? А если 0,01; 0,3; 0,55?
Есть какой-то общепринятый механизм «схлопывания» таких вероятностных предсказаний в ситуацию «0/1»?
источник

YN

Yuriy Nazarov in Natural Language Processing
Alex Mak
Всем добрый день!
Вопрос по multi-label классификации. Есть вот такая задача на kaggle: https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge/overview Для каждого текста нужно предсказать одну или несколько категорий.
У меня другие тексты (на русском, к слову), но задача та же – нужно проставить от 0 до 12 меток.
Мой вопрос в следующем: После predict для какого-то текста я получаю список вероятностей для каждой категории. Как мне перевести эти вероятности в метки? Конечному же пользователю эти вероятности без надобности, ему нужно 1/0 ситуация – вот этот текст на входе, он относится к данной категории или нет? А вот к той? Т. е. ситуация не вероятностная для обычного пользователя, а строго бинарная: метка либо есть, либо ее нет.
Скажем у меня есть вероятности (для 3-х меток, не будем пока про 12 говорить): 0,01; 0,5; 0,4. Понятно, что первой метки тут не должно быть? А что делать со второй и третьей? Ставить только вторую? Или вторую и третью? А если вероятности были бы такие: 0,01; 0,6; 0,65? А если 0,01; 0,3; 0,55?
Есть какой-то общепринятый механизм «схлопывания» таких вероятностных предсказаний в ситуацию «0/1»?
Общепринятый механизм - выбрать порог и считать то, что меньше - 0, то что больше - 1.
Предположу, что сомнения возникли из-за того, что данный подход кажется неэффективным.
Например модель предсказывает 2 метки, а они противоречивы. В таком случае либо мало фичей, либо мало примеров.
источник

AM

Alex Mak in Natural Language Processing
Yuriy Nazarov
Общепринятый механизм - выбрать порог и считать то, что меньше - 0, то что больше - 1.
Предположу, что сомнения возникли из-за того, что данный подход кажется неэффективным.
Например модель предсказывает 2 метки, а они противоречивы. В таком случае либо мало фичей, либо мало примеров.
Спасибо за ответ. Т. е. просто "из головы" берется число? Скажем 0,5 и просто с ним сравнивается?
источник

FF

Futorio Franklin in Natural Language Processing
Alex Mak
Спасибо за ответ. Т. е. просто "из головы" берется число? Скажем 0,5 и просто с ним сравнивается?
обычно смотря каких целей нужно достичь, если максимальный охват с меньшим качеством, то порог понижают, если увеличить качество, то порог повышают ( если идёт речь о определении 1-го класса)
источник

FF

Futorio Franklin in Natural Language Processing
Подробнее за это отвечает Precision и Recall и F1 метрики
источник

YN

Yuriy Nazarov in Natural Language Processing
Alex Mak
Спасибо за ответ. Т. е. просто "из головы" берется число? Скажем 0,5 и просто с ним сравнивается?
Если речь про log loss, выбор этого числа определяет правдоподобие какого события мы максимизируем.
Если 0.5, то максимизируем вероятность 0 и 1 поровну. Если другой, то 0 и 1 с разным весом участвуют. Например, как если бы мы спросили модель про 1 из датасет по два раза, а про 0 по одному.
источник
2020 May 25

R

Rishi in Natural Language Processing
Anyone worked on few shot learning for text classification before?
источник

M

Mineni in Natural Language Processing
Pavel Pantyukhov
Всем примет! А есть ли готовые решения по распознаванию команд. Для примера на вход подается текст:

Поставить будильник на 4 утра.

И можно написать контрукцию типа self.compare_command(free_text, "Включить будильник) -> bool
А в deeppavlov?
источник

PP

Pavel Pantyukhov in Natural Language Processing
Mineni
А в deeppavlov?
А там я не нашёл ничего похожего
источник

M

Mineni in Natural Language Processing
Pavel Pantyukhov
А там я не нашёл ничего похожего
Там же было что-то вроде распознавания команд
источник

D(

David (ddale) Dale in Natural Language Processing
Mineni
Там же было что-то вроде распознавания команд
А чем распознавание команд отличается от обычной классификации текстов?
Классический подход такой: для каждой команды собирается набор положительных и отрицательных примеров, на них обучается бинарный классификатор.
Если примеров нет, можно, конечно, какую-нибудь зиро-шот магию придумать, но нет никаких гарантий, что она будет работать корректно.
источник

NK

Nikolay Karelin in Natural Language Processing
Pavel Pantyukhov
Всем примет! А есть ли готовые решения по распознаванию команд. Для примера на вход подается текст:

Поставить будильник на 4 утра.

И можно написать контрукцию типа self.compare_command(free_text, "Включить будильник) -> bool
Это называется intent recognition или intent classification. В том или ином виде есть в любом фрейворке для чат-ботов, включая deeppavlov,  rasa и пр.
источник

PP

Pavel Pantyukhov in Natural Language Processing
Проблема в том, что они работают только в en в deeppavlov.  а датасеты на ru собрать не представляется возможным
источник

PP

Pavel Pantyukhov in Natural Language Processing
Но спасибо за наводку
источник

D(

David (ddale) Dale in Natural Language Processing
Pavel Pantyukhov
Проблема в том, что они работают только в en в deeppavlov.  а датасеты на ru собрать не представляется возможным
Без датасетов ничего не получится. Пиши грамматики и генерируй тексты ими. Или задания на Толоке давай. Или сам эти несчастные тексты пиши.
Магии не будет 🤷‍♂
источник

PP

Pavel Pantyukhov in Natural Language Processing
Понял, спасибо! Обидно что магии нет(
источник

D(

David (ddale) Dale in Natural Language Processing
Pavel Pantyukhov
Проблема в том, что они работают только в en в deeppavlov.  а датасеты на ru собрать не представляется возможным
На крайняк, можно англоязычный датасет через переводчик прогнать - всё лучше, чем ничего)
источник

PP

Pavel Pantyukhov in Natural Language Processing
David (ddale) Dale
На крайняк, можно англоязычный датасет через переводчик прогнать - всё лучше, чем ничего)
Хехехех.
источник

C

Cucusenok in Natural Language Processing
Pavel Pantyukhov
Хехехех.
Я вчера смотрел, там точно были обученные на русском модели с bert, может там где был выложен датасет. Мне кажется с командами все не много проще. Т.к. все равно будут ключевые слова.
источник

PP

Pavel Pantyukhov in Natural Language Processing
Спасибо!
источник