API прогнозирования Google — построение обучающих данных классификатора

РЕДАКТИРОВАТЬ: я пытаюсь классифицировать новый отзыв пользователя по заранее определенному набору тегов. С каждым отзывом может быть связано несколько тегов.

Я сопоставил свои обзоры пользователей БД с 15 категориями. В следующем примере показан текст, обосновывающий сопоставленные категории.


USER_REVIEWS | КАТЕГОРИИ
"Лучшее pizza из всех, нам очень понравилось это место, our kids ..." | "еда, семья"
"The ATV tour was extreme и nature was beautiful ..." | "активный, семейный"

pizza:food
our kids:family
The ATV tour was extreme:active
nature was beautiful:nature


EDIT: я пробовал 2 подхода к обучающим данным:

Первый включает все категории в один файл, например:

"food","Best pizza ever, we really loved this place, our kids..."
"family","Best pizza ever, we really loved this place, our kids..."

Второй подход заключался в разделении данных обучения на 15 отдельных файлов, например:

family_training_data.csv:

"true" , "Best pizza ever, we really loved this place, our kids..."
"false" , "The ATV tour was extreme and the nature was beautiful ..."

Ни одно из вышеперечисленных не было окончательным, и в большинстве случаев пропускали теги.


Вот некоторые вопросы, которые возникли, пока я экспериментировал:

  1. Некоторые из моих обзоров очень длинные (более 300 слов). Должен ли я ограничивать количество слов в моем файле с тренировочными данными, чтобы оно соответствовало среднему количеству слов в обзоре (80)?
  2. Лучше всего разделить данные на 15 файлов данных обучения с опцией ИСТИНА/ЛОЖЬ, что означает: (относится ли текст обзора к определенной категории) или смешать все категории в одном файле данных обучения?
  3. Как мне обучить модель находить синонимы или связанные ключевые слова, чтобы она могла пометить «Поездка motorbike была отличной» как active, хотя в обучающих данных была запись для ATV ездить

Я пробовал некоторые подходы, описанные выше, но без хороших результатов.
В: Какой формат обучающих данных даст наилучшие результаты?


person Shlomi Schwartz    schedule 14.10.2015    source источник
comment
Вы задали очень широкий набор вопросов; Я думаю, что это выходит за рамки области применения StackOverflow. В нынешнем виде я не думаю, что смогу ответить на этот вопрос. Какую конкретную проблему вы пытаетесь решить? Что такое хорошие результаты? Каковы ваши критерии лучших результатов? Почему вы хотите обучить модель лексикону, если это обычно направленная задача?   -  person Prune    schedule 15.10.2015
comment
Спасибо за ответ, постараюсь уточнить. Проблема, которую я пытаюсь решить, заключается в классификации обзоров по предопределенным тегам, в настоящее время результаты, которые я получаю, (в большинстве случаев) не являются окончательными или вообще отсутствуют теги, хорошими результатами будет отзыв, помеченный правильно в 80% случаев. времена. Поскольку я не эксперт в построении обучающих данных, я пришел сюда со многими неопределенностями.   -  person Shlomi Schwartz    schedule 15.10.2015
comment
Пожалуйста, проверьте мои правки :)   -  person Shlomi Schwartz    schedule 15.10.2015
comment
Что касается ваших вопросов 1. и 3., я думаю, может помочь написать код для предварительной обработки ваших обучающих примеров и ваших входных данных. Ваша классификация в основном основана на ключевых словах, поэтому программная фильтрация статей, знаков препинания и т. д., нормализация грамматического регистра и, возможно, также построение графа синонимов с использованием некоторой существующей базы данных (и включение ассоциаций в обучающие образцы) уменьшит шум к коэффициент сигнала.   -  person Igor Raush    schedule 20.10.2015


Ответы (2)


Столкнувшись с подобными проблемами, вот мои идеи относительно ваших вопросов:

  1. Согласно документации лучше всего ограничить длину входного текста менее чем 60 словами, поэтому я думаю, что использование ваших средних 80 слов даст лучшие результаты
  2. Вы можете пойти любым путем, но отдельные файлы дадут более однозначный результат.
  3. создание графа синонимов, как было предложено, было бы хорошим началом, WATSON нацелен на более сложное когнитивное решение.

Некоторые другие полезные советы из руководств WATSON:

  • Ограничьте длину вводимого текста менее чем 60 словами.
  • Ограничьте количество классов до нескольких сотен классов. Поддержка большего количества классов может быть включена в более поздние версии службы.
  • Когда каждая текстовая запись имеет только один класс, убедитесь, что каждый класс соответствует как минимум 5–10 записям, чтобы обеспечить достаточное обучение по этому классу.
  • It can be difficult to decide whether to include multiple classes for a text. Two common reasons drive multiple classes:
    • When the text is vague, identifying a single class is not always clear.
    • Когда эксперты интерпретируют текст по-разному, несколько классов поддерживают эти интерпретации.
  • Однако, если многие тексты в ваших обучающих данных включают несколько классов или если некоторые тексты имеют более трех классов, вам может потребоваться уточнить классы. Например, проверьте, являются ли классы иерархическими. Если они иерархические, включите конечный узел в качестве класса.
person Roni Gadot    schedule 25.10.2015

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

Вопрос 3: Вы не можете научить модель распознавать новое словарное слово без поддержки контекста. Дело не только в том, что "мотоцикла" нет в тренировочном наборе, но и в тренировочном наборе нет "поездки", да и остальные слова в обзоре к транспортировке не относятся. Когнитивной информации, которую вы ищете, просто нет в данных, которые вы представляете.

Вопрос 2: Это зависит от метода обучения, который вы рассматриваете. Вы можете указать каждый тег как отдельный столбец функций со значением true/false. Функционально это эквивалентно 15 отдельным файлам данных, каждый из которых имеет одно значение true/false. Метод с одним файлом дает вам возможность позже расширить поддержку контекста между категориями.

Вопрос 1: Длина сама по себе не имеет особого значения, за исключением того, что удаление непродуктивных слов поможет сфокусировать обучение — вы не получите столько ложных классификаций из случайных корреляций. Есть ли у вас способ уменьшить размер программно? Можете ли вы применить это к новым входным данным, которые хотите классифицировать? Если нет, то я не уверен, что это стоит усилий.


ОТКРЫТЫЕ ВОПРОСЫ

Какие у вас есть эмпирические доказательства того, что при данных данных возможна точность 80%? Если обучающие данные не содержат теоретической информации, необходимой для точной маркировки этих данных, у вас нет шансов получить желаемую модель.

Достаточно ли интеллекта в выбранном вами приложении, чтобы разбить отзыв на слова? Есть ли понимание порядка слов или семантики — и нужно ли оно вам?

person Prune    schedule 19.10.2015
comment
У меня нет доказательств того, что 80% ~ возможно, это просто моя цель, я смотрел на Алхимию (alchemyapi.com/products/demo/alchemylanguage), особенно в разделе таксономии для вдохновения. Как правильно добавить когнитивную информацию к моим тренировочным данным? - person Shlomi Schwartz; 20.10.2015
comment
Не существует одного правильного способа; это зависит от когнитивной информации, которую вы хотите добавить, и дизайна системы, которую вы строите. Спасибо за ссылку на алхимию; это прекрасная, сложная система. Поймите, что это демонстрация сложного выпущенного продукта. Большое вдохновение, но большой проект. - person Prune; 20.10.2015
comment
Я признаю, что мне кажется, что это обсуждение неуместно (не относится к SO) и не имеет фокуса. Моя проблема в том, что я не знаю, чего вы хотите в результате своего сообщения. Вы задали несколько вопросов, связанных с реализацией, но когда я спрашиваю о концепциях этой системы более высокого уровня, я получаю другой вопрос вместо четкого ответа. Итак... на какой стадии находится этот проект? Какова цель проекта, и каковы ваши доступные ресурсы и сроки? Что у вас есть на пути целей, задач, требований и спецификаций? Это помогает мне давать полезную обратную связь. - person Prune; 20.10.2015