我正在尝试根据预测的其他文本字段预测文本字段。我使用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://sparkDriver@192.168.65.27:59649]
[INFO] [CoreWorkflow$] Starting evaluation instance ID: AU29p8j3Fkwdnkfum_ke
[INFO] [Engine$] DataSource: org.template.textclassification.DataSource@faea4da
[INFO] [Engine$] Preparator: org.template.textclassification.Preparator@69f2cb04
[INFO] [Engine$] AlgorithmList: List(org.template.textclassification.NBAlgorithm@45292ec1)
[INFO] [Engine$] Serving: org.template.textclassification.Serving@1ad9b8d3
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数据进行了测试。
答案 0 :(得分:3)
因此,当您的数据无法通过DataSource
类正确读取时,会出现此特定错误消息。如果您正在使用其他文本数据集,请确保正确反映readEventData
方法中对eventNames,entityType和相应属性字段名称的任何更改。
maxBy
方法用于拉出具有最多观察数的类。如果标记Map的类别为空,则表示没有记录任何类,这实际上告诉您没有数据被输入。
例如,我刚刚使用此引擎做了垃圾邮件检测器。我的电子邮件数据格式如下:
{"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
在此之后,我能够进行构建,培训和部署,以及评估。