0

我曾经使用 IBM 的 Natural Language Understanding API 来分析 URL。我在 Python 3.8 上使用 Python 的 IBM Watson SDK 5.1。

除了实体、概念等之外,我成功地使用了下面的代码 [所有适当的选项都已导入] 来提取元数据:

def NLU_analysis(url):
try:
    response = natural_language_understanding.analyze(
        url=url, return_analyzed_text=True, clean=True, language=True,
        features=Features(keywords=KeywordsOptions(limit=10), 
                          entities=EntitiesOptions(limit=10), 
                          concepts=ConceptsOptions(limit=5), 
                          metadata=MetadataOptions(),
                          categories=CategoriesOptions(limit=5))).get_result()
    return response
except:
    pass

上面的代码用于返回元数据。现在,在 Python SDK 5.1.0 中,IBM 最近更改了检索 URL 元数据的方式。“MetadataOptions”功能已被“FeatureMetadataResults”取代。如果我使用上面的代码并将 MetadataOptions 替换为 FeatureMetadataResults ,如下所示:

def NLU_analysis(url):
try:
    response = natural_language_understanding.analyze(
        url=url, return_analyzed_text=True, clean=True, language=True,
        features=Features(keywords=KeywordsOptions(limit=10),
                          entities=EntitiesOptions(limit=10),
                          concepts=ConceptsOptions(limit=5),
                          metadata=FeaturesResultsMetadata(),
                          categories=CategoriesOptions(limit=5))).get_result()
    return response
except:
    pass

现在,如果我运行修改后的代码,我会收到以下错误消息:“TypeError: Object of type FeaturesResultsMetadata is not JSON serializable”

如果我阅读 IBM 的文档,我会感到有些困惑(链接到API 文档。这是 IBM 的代码示例:

import json
from ibm_watson import NaturalLanguageUnderstandingV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
from ibm_watson.natural_language_understanding_v1
    import Features, MetadataOptions

authenticator = IAMAuthenticator('{apikey}')
natural_language_understanding = NaturalLanguageUnderstandingV1(
    version='2020-08-01',
    authenticator=authenticator
)

natural_language_understanding.set_service_url('{url}')

response = natural_language_understanding.analyze(
    url='www.ibm.com',
    features=Features(metadata=MetadataOptions())).get_result()

有谁知道是否仍然可以使用 IBM Watson 的自然语言理解 API 检索 URL 的元数据?

祝你今天过得愉快!

4

1 回答 1

1

IBM 的 API 文档中的示例似乎不正确。

下面的代码已粘贴为纯文本,以便能够删除 IBM 示例代码中的过时元素。

import json
from ibm_watson import NaturalLanguageUnderstandingV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
from ibm_watson.natural_language_understanding_v1

导入功能、元数据选项

authenticator = IAMAuthenticator('{apikey}')
natural_language_understanding = NaturalLanguageUnderstandingV1(
    version='2020-08-01',
    authenticator=authenticator
)

natural_language_understanding.set_service_url('{url}')

response = natural_language_understanding.analyze(
    url='www.ibm.com',

features=Features(metadata= MetadataOptions() {} )).get_result()

print(json.dumps(response, indent=2))

因此,对于请求元数据对象,只需提供一个空字典(metadata={})

祝您愉快!约斯特

于 2021-03-05T13:43:42.340 回答