Поддерживает ли API-интерфейс Google Cloud Natural Language синтаксический анализ HTML?

Я пытаюсь извлечь основной контент из новостных сайтов и блогов.

Документы делают это, как будто documents.analyzeSyntax будет работать, как и ожидалось, с HTML, передавая его document с content как необработанный HTML-код страницы (utf-8) и документ type установлен в HTML, Документы определенно включают HTML в качестве поддерживаемого типа контента.

На практике, однако, полученные предложения и токены путаются с тегами HTML, как будто парсер думает, что ввод - простой текст. В его нынешнем виде это исключает GC NL API для моего случая использования, и, вероятно, многих других, поскольку обработка веб-страниц с использованием естественного языка является довольно распространенной задачей.

Для справки, вот пример от Dandelion API того типа вывода, который можно ожидать при вводе HTML (или, скорее, в этом случае URL на страницу HTML в качестве ввода).

Тогда мой вопрос: я что-то упустил, возможно, неправильно вызывал API, или API NL не поддерживает HTML?

1 ответ

Решение

Да, это так.

Не уверен, какой язык вы использовали, но ниже приведен пример использования Python в клиентской библиотеке:

from google.cloud import language

client = language.Client()

# document of type PLAIN_TEXT
text = "hello"
document_text = client.document_from_text(text)
syntax_text = document_text.analyze_syntax()

print("\n\ndocument of type PLAIN_TEXE:")
for token in syntax_text.tokens:
    print(token.__dict__)

# document of type HTML
html = "<p>hello</p>"
document_html = client.document_from_html(html)
syntax_html = document_html.analyze_syntax()

print("\n\ndocument of type HTML:")
for token in syntax_html.tokens:
    print(token.__dict__)

# document of type PLAIN_TEXT but should be HTML
document_mismatch = client.document_from_text(html)
syntax_mismatch = document_mismatch.analyze_syntax()

print("\n\ndocument of type PLAIN_TEXT but with HTML content:")
for token in syntax_mismatch.tokens:
    print(token.__dict__)

Это работает для меня в том, что HTML-теги <p> а также </p> не обрабатываются как естественный язык.

Если вы выполните шаги настройки на этой странице, вы можете быстро поэкспериментировать с gcloud инструмент командной строки:

gcloud beta ml language analyze-syntax --content="<p>hello</p>" --content-type="HTML"

Другие вопросы по тегам