Вопрос или проблема
Существует ли какой-либо API, который сообщит мне, что Тейлор Свифт – американская певица, Джил Сандер – немецкий бренд, а селезень – птица?
Ближайшее, что я могу найти, это API поиска графа знаний Google, но согласно ему,
-
Тейлор Свифт, хотя и является Личностью и даже Вещью, в первую очередь является исполнителем, о чем этот ответ не говорит мне.
"itemListElement": [ { "@type": "EntitySearchResult", "resultScore": 3186.92236328125, "result": { "@type": [ "Thing", "Person" ], "detailedDescription": { "url": "https://en.wikipedia.org/wiki/Taylor_Swift", "license": "https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License", "articleBody": "Тейлор Алисон Свифт — американская певица и автор песен. Ее нарративная поэзия часто вдохновляется ее личной жизнью и получила широкое освещение в СМИ и высокую оценку критиков." }, "description": "Американская певица и автор песен", "@id": "kg:/m/0dl567", "name": "Тейлор Свифт", "url": "http://www.taylorswift.com/" } } ]
-
Джил Сандер, которую я, возможно, ищу, является Брендом, а не Личностью или Вещью.
"itemListElement": [ { "resultScore": 7223.4814453125, "@type": "EntitySearchResult", "result": { "description": "Немецкий модельер", "@id": "kg:/m/044jy_", "@type": [ "Thing", "Person" ], "name": "Джил Сандер", "detailedDescription": { "url": "https://en.wikipedia.org/wiki/Jil_Sander", "license": "https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License", "articleBody": "Хайдемари Жилине \"Джил\" Сандер — минималистичный немецкий модельер и основатель модного дома Джил Сандер." } } } ]
-
Кажется, что лучшее, что schema.org может сделать для селезня, это обозначить его как Вещь, а не как Птицу или даже Животное. Там действительно написано Птицы в разделе
description
, но это кажется произвольным, и, вероятно, не стоит доверять, что это всегда будет там."itemListElement": [ { "resultScore": 135.50239562988281, "result": { "@id": "kg:/m/01hjj1", "@type": [ "Thing" ], "detailedDescription": { "articleBody": "Селезень или дикая утка — это утка-плаванец, которая размножается по всей умеренной и субтропической Америке, Евразии и Северной Африке и была интродуцирована в Новую Зеландию, Австралию, Перу, Бразилию, Уругвай, Аргентину, Чили, Колумбию, Фолклендские острова и Южную Африку.", "license": "https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License", "url": "https://en.wikipedia.org/wiki/Mallard" }, "description": "Птицы", "name": "Селезень" }, "@type": "EntitySearchResult" } ]
-
А для Мадса Нёргаарда он даже не знает, что такой Бренд существует, хотя у Google есть информационная карточка на правой стороне соответствующей страницы результатов поиска.
(Schema.org не является обязательным, я упомянул об этом, потому что Google использует его в своих ответах.)
Я могу как-то вывести элементы, которые ищу из вышеуказанных ответов, но это требует человека или нейронной сети, а я надеялся на внешний API вместо этого.
Спасибо!
Я думаю, что с 2020 года вы можете вызвать REST API любой большой языковой модели (LLM), например ChatGPT (или предшественника, такого как GPT-3), и задавать такие вопросы, чтобы получить разумный ответ. Вот страница справки по API и пример вызова REST API и ответа:
Вопрос: Кто такая Тейлор Свифт?
Эндпоинт: https://api.openai.com/v1/chat/completions
JSON-сообщение для HTTP POST-запроса
{
"model": "gpt-3.5-turbo-0301",
"messages": [
{
"role": "system",
"content": "Вы полезный помощник"
},
{
"role": "user",
"content": "Кто такая Тейлор Свифт?"
}
]
}
Ответ / ответ ChatGPT
{
"id": "chatcmpl-7Ji3UPI3w5OyauKduHiToEhcbFFdh",
"object": "chat.completion",
"created": 1684931936,
"model": "gpt-3.5-turbo-0301",
"usage": {
"prompt_tokens": 23,
"completion_tokens": 77,
"total_tokens": 100
},
"choices": [
{
"message": {
"role": "assistant",
"content": "Тейлор Свифт — известная американская певица и автор песен, известная своей кантри и поп-музыкой. Она впервые получила известность в 2006 году с дебютным альбомом и с тех пор стала мировой музыкальной суперзвездой с многочисленными хитами, наградами и аншлаговыми турами. Свифт также признана за свою деятельность по поддержке различных социальных и политических причин и за использование своей платформы для повышения осведомленности и вдохновения положительных изменений."
},
"finish_reason": "stop",
"index": 0
}
]
}
Многие из этих LLM имеют бесплатный уровень, или вы можете начать с нескольких долларов бесплатного кредита после регистрации.
Важно добавить ваш API-ключ в пользовательский HTTP-заголовок. Это будет выглядеть так: Authorization: Bearer sk-lB2b.................
Ответ или решение
Подробное руководство по API для разметки информации
В современном мире информационных технологий, доступ к данным о сущностях и их характеристиках становится всё более востребованным, особенно для разработчиков, желающих интегрировать внешние источники данных в свои приложения. В данном контексте, в вашем вопросе отражена необходимость в API, которые предоставляют структурированную информацию о различных сущностях, таких как люди, бренды или животные.
Существующие решения
Вы упомянули о Knowledge Graph Search API от Google, который на самом деле является одним из наиболее популярных инструментов для извлечения такой информации. Однако результаты его работы действительно могут не всегда быть окончательными и чёткими. Рассмотрим подробнее, что именно можно ожидать от этого API и альтернативных подходов.
Примеры использования Google Knowledge Graph
Можно наблюдать, что API предоставляет информацию о сущностях, но важные детали могут быть упущены или неправильно классифицированы.
-
Taylor Swift: Система определяет её как "персон" и "вещь", но в ключевом аспекте – как "исполнителя". Данные предоставляют основную информацию, включая описание и ссылку на источник, но не всегда исчерпывающе.
-
Jil Sander: В данном случае API определяет её как "немецкого модельера", однако это не отражает полного спектра её представления как бренда, что важно для пользователей, ищущих информацию о модной марке.
-
Mallard (утка): Здесь лишь обобщённая информация с пометкой как "вещь". Это показывает, что API может не предоставить детальной классификации, такой как "птица" или "животное".
Эти моменты демонстрируют ограничения текущих API, когда требуется более специфичная классификация и описание сущностей.
Альтернативные API
-
API языковых моделей (LLM): В последние годы способ экстракции данных через REST API от больших языковых моделей (как GPT-3 или ChatGPT) становился всё более популярным. Эти модели могут выдавать чёткие, контекстуальные ответы на запросы, выполняя роль виртуального помощника.
Пример запроса к ChatGPT:
{ "model": "gpt-3.5-turbo-0301", "messages": [ { "role": "system", "content": "Вы - полезный помощник" }, { "role": "user", "content": "Кто такая Тейлор Свифт?" } ] }
Ответ может быть:
{ "content": "Тейлор Свифт - известная американская певица и автор песен, известная как в жанре кантри, так и в поп-музыке." }
Использование LLM позволяет установить более персонализированный и контекстуальный подход к получению информации, что является важным для пользователей.
-
Wikidata: Это еще один мощный ресурс, который предоставляет структурированную информацию о сущностях с использованием RDF. Пользователи могут делать запросы через SPARQL и получать информацию о том, как сущности взаимосвязаны друг с другом.
-
Microsoft Azure Cognitive Services: Платформа также предлагает решения для обработки естественного языка, которые могут идентифицировать и классифицировать объекты в текстах.
Какой выбор сделать?
Если ваша цель — это извлечение детализированной и структурированной информации о сущностях с их характеристиками, настоятельно рекомендую рассмотреть использование API языковых моделей, таких как OpenAI. Эти решения предоставляют более контекстуальные, точные и объяснительные ответы на запросы.
При интеграции выбора API учитывайте:
- Требования по лицензированию и политике доступа.
- Возможность соединиться с API из вашего окружения разработки.
- Потребление и стоимость использования API (число токенов, вызовов и т.д.)
Надеюсь, это руководство было полезным для вас и ответило на ваш вопрос о доступных API для разметки информации. Если возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться!