如何更深入地了解 Watson Discovery Service 无法摄取文档的原因

How to get more insight into why documents fail to be ingested in Watson Discovery Service

我正在使用 watson_developer_cloud python 库的 DiscoveryV1 模块将 700 多个文档提取到 WDS 集合中。每次我尝试批量摄取时,许多文档都无法摄取,这是不确定的,通常大约有 100 个文档失败。

每次我调用 discovery.add_document(env_id, cold_id, file_info=file_info) 我发现响应包含一个 WDS document_id。在我对语料库中的所有文档进行此调用后,我使用相应的 document_ids 调用 discovery.get_document(env_id, col_id, doc_id) 并检查文档的状态。其中大约 100 个调用将 return 状态 Document failed to be ingested and indexed。失败的文件之间没有模式,它们的大小不等,并且属于 msword (doc) 和 pdf 文件类型。

我提取文档的代码是基于 WDS Documentation 编写的,它看起来像这样:

with open(f_path) as file_data:
    if f_path.endswith('.doc') or f_path.endswith('.docx'):
        re = discovery.add_document(env_id, col_id, file_info=file_data, mime_type='application/msword')                      
    else:                                                                                        
        re = discovery.add_document(env_id, col_id, file_info=file_data)

因为我的语料库相对较大,大约 3gb,我收到了来自 discovery.add_document(env_id, cold_id, file_info=file_info) 次调用的 Service is busy processing... 响应,在这种情况下,我调用 sleep(5) 并重试。

我已经用尽了 WDS 文档,但没有任何运气。我怎样才能更深入地了解这些文件未能被摄取的原因?

您应该能够使用 https://watson-api-explorer.mybluemix.net/apis/discovery-v1#!/Queries/queryNotices API 查看摄取期间发生的 errors/warnings 以及可能提供有关摄取失败原因的更多信息的详细信息。

不幸的是,在发布这篇文章时,python SDK 似乎没有包装此 API 的方法,因此您可以使用 Watson Discovery Tooling 或使用curl 直接查询 API(将 {} 中的值替换为您的集合特定值)

curl -u "{username}:{password}" "https://gateway.watsonplatform.net/discovery/api/v1/environments/{environment_id}/collections/{collection_id}/notices?version=2017-01-01

python-sdk现在支持查询公告

from watson_developer_cloud import DiscoveryV1

discovery = DiscoveryV1(
 version='2017-10-16',
 ## url is optional, and defaults to the URL below. Use the correct URL for your region.
 url='https://gateway.watsonplatform.net/discovery/api',
 iam_api_key='your_api_key')
discovery.federated_query_notices('env_id', ['collection_id']])