我曾经使用 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 的元数据?
祝你今天过得愉快!