2016-06-15 17 views
2

Wir haben Solr Schema in IBM Watson für Worksheet als Sammlung von Fragen definiert. Es gibt wenige Schemaelemente, bei denen es sich um mehrwertige Felder handelt. Wir können Dokumente und Index-Dokumente mit Retrieve und Rank Services laden, aber beim Generieren von Training Dataset erhalten wir Datentyp-Konvertierungsfehler.IBM Watson Retrieve und Rank Training Error "java.util.ArrayList kann nicht in java.lang.Float umgewandelt werden"

Schema

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/> 
    <field name="worksheet_number" type="watson_text_en" indexed="true" stored="true" /> 
    <field name='question_number' type='int' indexed='true' stored='true' multiValued='true' /> 
    <field name='question_type' type='watson_text_en' indexed='true' stored='true' multiValued='true' /> 
    <field name='answer' type='watson_text_en' indexed='true' stored='true' multiValued='true' /> 
    <field name='text' type='watson_text_en' indexed='true' stored='true' multiValued='true' /> 

Trainings Befehl train.py verwendet, die eine Ausnahme auslöst curl -u "***********": "******* *****“" https://gateway.watsonplatform.net/retrieve-and-rank/api/v1/rankers/3b140ax15-rank-3108

Leider ist eine Ausnahme keine Auskunft geben auf welchem ​​Feld es die Ausnahme wirft.

Java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.lang.Float 
    at com.ibm.watson.hector.plugins.ss.FCFeatureGeneratorComponent.toCSV(FCFeatureGeneratorComponent.java:677) 
    at com.ibm.watson.hector.plugins.ss.FCFeatureGeneratorComponent.process(FCFeatureGeneratorComponent.java:364) 
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:272) 
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:155) 
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:2082) 
    at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:651) 
    at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:458) 
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:229) 
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:184) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) 
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 
    at org.eclipse.jetty.server.Server.handle(Server.java:499) 
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) 
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) 
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) 
    at java.lang.Thread.run(Thread.java:745)\n","code":500}} 

Ther e scheint ein Problem mit den MultiValue-Feldern zu sein, die im Schema definiert sind, und für das Erstellen von Trainingsdatensätzen. MultiValue-Felder ermöglichen es uns, mehrere Fragen, Texte für die angegebene Arbeitsblattnummer mit beliebigen Datentypen zu speichern. Z.B. Ganzzahl für die Frage Nummer mit den Werten [1,2,3,4,5] in Fragezeichenfeld.

Beim Generieren von Trainingsdatensätzen löst die Watson-API die Ausnahme mit Datentypkonvertierungsfehler aus "java.util.ArrayList kann nicht in java.lang.Float umgewandelt werden".

Antwort

1

Dieses Problem wird möglicherweise durch ein mehrwertiges Feld verursacht, das in Ihren Daten als "Score" bezeichnet wird. Es könnte ein explizit definiertes Feld in schema.xml oder ein gültiges dynamisches Feld in einigen Dokumenten sein. Könnten Sie überprüfen, ob dies der Fall ist? Wenn dies der Fall ist, müsste es in einen anderen Namen geändert werden (zum Beispiel "my_score"), weil dies in Konflikt mit dem von Solr festgeschriebenen Namen für die Rückgabe der Scores stehen würde.

+0

Vielen Dank für die Unterstützung, wir haben "Score" -Feld, ich werde Schema ändern, versuchen Upload und bestätigen, ob es funktioniert. –

+0

Es funktioniert jetzt, wir haben eine Ausnahme und es erstellt Training Dataset –

Verwandte Themen