2015-06-04 3 views
2

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

pio app new MyTextApp 

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

[INFO] [CoreWorkflow$] runEvaluation started 
[WARN] [Utils] Your hostname, my-ThinkCentre-Edge72 resolves to a loopback address: 127.0.0.1; using 192.168.65.27 instead (on interface eth0) 
[WARN] [Utils] Set SPARK_LOCAL_IP if you need to bind to another address 
[INFO] [Remoting] Starting remoting 
[INFO] [Remoting] Remoting started; listening on addresses :[akka.tcp://[email protected]:59649] 
[INFO] [CoreWorkflow$] Starting evaluation instance ID: AU29p8j3Fkwdnkfum_ke 
[INFO] [Engine$] DataSource: [email protected] 
[INFO] [Engine$] Preparator: [email protected] 
[INFO] [Engine$] AlgorithmList: List([email protected]) 
[INFO] [Engine$] Serving: [email protected] 
Exception in thread "main" java.lang.UnsupportedOperationException: empty.maxBy 
at scala.collection.TraversableOnce$class.maxBy(TraversableOnce.scala:223) 
at scala.collection.AbstractTraversable.maxBy(Traversable.scala:105) 
at org.template.textclassification.PreparedData.<init>(Preparator.scala:152) 
at org.template.textclassification.Preparator.prepare(Preparator.scala:38) 
at org.template.textclassification.Preparator.prepare(Preparator.scala:34) 

Должен ли я редактировать любые файлы конфигурации, чтобы сделать эту работу? Я успешно провел тесты на данные movielens.

ответ

3

Так что это конкретное сообщение об ошибке возникает, когда ваши данные не читаются должным образом через класс DataSource. Если вы используете другой набор текстовых данных, убедитесь, что вы правильно отражаете любые изменения имен eventNames, entityType и соответствующих полей полей свойств в методе readEventData.

Метод maxBy используется для вытягивания класса с наибольшим количеством наблюдений. Если категория для маркировки «Карта» пуста, это означает, что не записано никаких классов, что, по сути, говорит о том, что у вас нет данных, которые подаются.

Например, я просто создал спам-детектор, используя этот движок. Моя электронная почта данные формы:

{"entityType": "content", "eventTime": "2015-06-04T00:22:39.064+0000", "entityId": 1, "event": "e-mail", "properties": {"label": "spam", "text": "content"}}

Чтобы использовать двигатель для этих данных я сделал следующие изменения в классе DataSource:

entityType = Some("source"), // specify data entity type eventNames = Some(List("documents")) // specify data event name

изменения

entityType = Some("content"), // specify data entity type eventNames = Some(List("e-mail")) // specify data event name

и

)(sc).map(e => Observation(
    e.properties.get[Double]("label"), 
    e.properties.get[String]("text"), 
    e.properties.get[String]("category") 
)).cache 

изменения:

)(sc).map(e => { 
    val label = e.properties.get[String]("label") 


    Observation(
    if (label == "spam") 1.0 else 0.0, 
    e.properties.get[String]("text"), 
    label 
) 
}).cache 

После этого, я в состоянии пройти через здание, подготовки и развертывания, а также оценки.

+0

Благодарим за информацию. Я использовал одно и то же приложение для разных наборов данных. Я удалил существующее приложение, его данные и создал новое приложение, затем запустил сборку, подготовку и развертывание pio. Теперь он работает отлично. :) – cutteeth

+0

Удивительно, я рад, что ответ помог! Я только что выпустил новую версию движка, содержащую проверку работоспособности, чтобы убедиться, что данные тренировки действительно загружены. PreparedClass также был изменен, так что обработка векторизации текста выполняется быстрее. –

+0

Я загрузил последний шаблон классификации текста (2.0), и эта же проблема находится и в недавнем обновлении. Оценка завершилась ошибкой с ошибкой 'java.lang.UnsupportedOperationException: empty.maxBy' и поезд завершился с' io.prediction.data.storage.DataMapException: метка поля обязательна. 'Pio говорит, что искровой адрес привязан к loopback. Должен ли я изменить его на общедоступный ip? Также не могли бы вы объяснить текстолизацию текста? – cutteeth

Смежные вопросы