将文档上传到 Watson 的 Retrieve and Rank 服务
Upload documents into Watson's Retrieve & Rank service
我正在使用 Watson 的 Retrieve & Rank 服务实施解决方案。
当我使用工具界面时,我上传了我的文档,它们显示为一个列表,我可以在其中单击其中的任何一个以打开文档中的所有标题(答案单元),您可以见 Picture 1 and Picture 2.
当我尝试通过 Java 上传文档时,它无法识别文档,它们被分成几部分上传(答案单元作为文档),每个部分作为一个新文档。
我想知道如何将我的文档作为整个文档而不是部分文档上传?
以下是 Java 中上传功能的代码:
public Answers ConvertToUnits(File doc, String collection) throws ParseException, SolrServerException, IOException{
DC.setUsernameAndPassword(USERNAME,PASSWORD);
Answers response = DC.convertDocumentToAnswer(doc).execute();
SolrInputDocument newdoc = new SolrInputDocument();
WatsonProcessing wp = new WatsonProcessing();
Collection<SolrInputDocument> newdocs = new ArrayList<SolrInputDocument>();
for(int i=0; i<response.getAnswerUnits().size(); i++)
{
String titulo = response.getAnswerUnits().get(i).getTitle();
String id = response.getAnswerUnits().get(i).getId();
newdoc.addField("title", titulo);
for(int j=0; j<response.getAnswerUnits().get(i).getContent().size(); j++)
{
String texto = response.getAnswerUnits().get(i).getContent().get(j).getText();
newdoc.addField("body", texto);
}
wp.IndexDocument(newdoc,collection);
newdoc.clear();
}
wp.ComitChanges(collection);
return response;
}
public void IndexDocument(SolrInputDocument newdoc, String collection) throws SolrServerException, IOException
{
UpdateRequest update = new UpdateRequest();
update.add(newdoc);
UpdateResponse addResponse = solrClient.add(collection, newdoc);
}
您可以在此行中指定配置选项:
Answers response = DC.convertDocumentToAnswer(doc).execute();
我认为像这样的东西应该可以解决问题:
String configAsString = "{ \"conversion_target\":\"answer_units\", \"answer_units\": { \"selector_tags\": [] } }";
JsonParser jsonParser = new JsonParser();
JsonObject customConfig = jsonParser.parse(configAsString).getAsJsonObject();
Answers response = DC.convertDocumentToAnswer(doc, null, customConfig).execute();
我还没有尝试过,所以语法可能不完全正确,但希望这会让你走上正轨。
本质上,我在这里尝试做的是使用配置中的 selector_tags
选项(请参阅 https://www.ibm.com/watson/developercloud/doc/document-conversion/customizing.shtml#htmlau 了解相关文档)来指定应在哪些标签上拆分文档。通过指定一个没有标签的空列表,它会导致它根本不会被拆分 - 并根据需要出现在单个答案单元中。
(请注意,您也可以通过工具界面执行此操作 - 通过在上传文档时取消选中 "Split my documents up into individual answers for me" 选项)
我正在使用 Watson 的 Retrieve & Rank 服务实施解决方案。
当我使用工具界面时,我上传了我的文档,它们显示为一个列表,我可以在其中单击其中的任何一个以打开文档中的所有标题(答案单元),您可以见 Picture 1 and Picture 2.
当我尝试通过 Java 上传文档时,它无法识别文档,它们被分成几部分上传(答案单元作为文档),每个部分作为一个新文档。
我想知道如何将我的文档作为整个文档而不是部分文档上传?
以下是 Java 中上传功能的代码:
public Answers ConvertToUnits(File doc, String collection) throws ParseException, SolrServerException, IOException{
DC.setUsernameAndPassword(USERNAME,PASSWORD);
Answers response = DC.convertDocumentToAnswer(doc).execute();
SolrInputDocument newdoc = new SolrInputDocument();
WatsonProcessing wp = new WatsonProcessing();
Collection<SolrInputDocument> newdocs = new ArrayList<SolrInputDocument>();
for(int i=0; i<response.getAnswerUnits().size(); i++)
{
String titulo = response.getAnswerUnits().get(i).getTitle();
String id = response.getAnswerUnits().get(i).getId();
newdoc.addField("title", titulo);
for(int j=0; j<response.getAnswerUnits().get(i).getContent().size(); j++)
{
String texto = response.getAnswerUnits().get(i).getContent().get(j).getText();
newdoc.addField("body", texto);
}
wp.IndexDocument(newdoc,collection);
newdoc.clear();
}
wp.ComitChanges(collection);
return response;
}
public void IndexDocument(SolrInputDocument newdoc, String collection) throws SolrServerException, IOException
{
UpdateRequest update = new UpdateRequest();
update.add(newdoc);
UpdateResponse addResponse = solrClient.add(collection, newdoc);
}
您可以在此行中指定配置选项:
Answers response = DC.convertDocumentToAnswer(doc).execute();
我认为像这样的东西应该可以解决问题:
String configAsString = "{ \"conversion_target\":\"answer_units\", \"answer_units\": { \"selector_tags\": [] } }";
JsonParser jsonParser = new JsonParser();
JsonObject customConfig = jsonParser.parse(configAsString).getAsJsonObject();
Answers response = DC.convertDocumentToAnswer(doc, null, customConfig).execute();
我还没有尝试过,所以语法可能不完全正确,但希望这会让你走上正轨。
本质上,我在这里尝试做的是使用配置中的 selector_tags
选项(请参阅 https://www.ibm.com/watson/developercloud/doc/document-conversion/customizing.shtml#htmlau 了解相关文档)来指定应在哪些标签上拆分文档。通过指定一个没有标签的空列表,它会导致它根本不会被拆分 - 并根据需要出现在单个答案单元中。
(请注意,您也可以通过工具界面执行此操作 - 通过在上传文档时取消选中 "Split my documents up into individual answers for me" 选项)