我看不出使用可用的api文档来解决这个问题。
它也不能在网络控制台上使用。
是否可以使用沃森发现服务获取文件url
发布于 2017-01-30 16:35:15
如果需要存储原始源/文件URL,可以将其作为字段包含在探索服务中的文档中,然后在需要时可以查询该字段。
发布于 2018-10-18 02:03:26
我也很难处理这个请求,但最终通过将Python绑定到沃森发现中来使其正常工作。在线文档和API引用非常糟糕;下面是我用来让它正常工作的内容:
(假设您有一个沃森发现服务,并有一个创建的集合):
# Programmatic upload and retrieval of documents and metadata with Watson Discovery
from watson_developer_cloud import DiscoveryV1
import os
import json
discovery = DiscoveryV1(
version='2017-11-07',
iam_apikey='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
url='https://gateway-syd.watsonplatform.net/discovery/api'
)
environments = discovery.list_environments().get_result()
print(json.dumps(environments, indent=2))这将提供您的环境ID。现在将其附加到您的代码中:
collections = discovery.list_collections('{environment-id}').get_result()
print(json.dumps(collections, indent=2))这将显示以编程方式将文档上载到的集合ID。您应该有一个要上传的文档(在我的例子中,是一个MS文档),以及它从您自己的源文档系统附带的URL。我将使用一个微不足道的虚构例子。
注意:文档并没有告诉您在open语句的末尾追加“rb”,但是在上传Word文档时需要这样做,如下面的示例所示。原始文本/ HTML文档可以在没有rb参数的情况下上传。
url = {"source_url":"http://mysite/dis030.docx"}
with open(os.path.join(os.getcwd(), '{path to your document folder with trailing / }', 'dis030.docx'), 'rb') as fileinfo:
add_doc = discovery.add_document('{environment-id}', '{collections-id}', metadata=json.dumps(url), file=fileinfo).get_result()
print(json.dumps(add_doc, indent=2))
print(add_doc["document_id"])注意将元数据设置为JSON字典,然后在参数中使用json.dumps对其进行编码。到目前为止,我只想存储原始的源URL,但是您可以根据自己的用例需要使用其他参数来扩展它。
这个对发现的调用为您提供了文档ID。
现在,您可以使用类似于发现查询的内容查询集合并提取元数据:
my_query = discovery.query('{environment-id}', '{collection-id}', natural_language_query="chlorine safety")
print(json.dumps(my_query.result["results"][0]["metadata"], indent=2))注意-我只是从返回的总体结果中提取存储的元数据--如果您只是拥有: print(my_query),您将从发现得到完整的响应.但是..。要识别您自己的自定义元数据,需要做很多工作。
https://stackoverflow.com/questions/41909962
复制相似问题