Определите уровень категориальной иерархии значения Freebase MID

После использования API Google Cloud Vision я получил значения MID в формате /m/XXXXXXX (хотя не обязательно 7 символов в конце). Что я хотел бы сделать, так это определить, насколько специфично одно значение MID по сравнению с другими. По сути, насколько широким или уточненным является термин. Например, термин Автомобиль может быть уровня 1, а термин Фургон может быть уровня 2.

Я попытался запустить значения MID через Google Knowledge Graph API, но, к сожалению, этих MID нет в этой базе данных и они не возвращают никакой информации. Например, у меня есть несколько MID и описаний:

/m/07s6nbt = text
/m/03gq5hm = font
/m/01n5jq = poster
/m/067408 = album cover

Моя первоначальная мысль о том, почему эти MID ничего не возвращают в Knowledge Graph API, заключается в том, что они не были перенесены после прекращения поддержки Freebase. Я понимаю, что Google предоставляет дамп RDF для Freebase, но я не уверен, как читать эти данные в Python и использовать их для определения глубины середины в иерархии.

Если невозможно определить уровень категории значения MID, количество подключений, которые имел термин, также будет подходящим прокси. Предполагая, что более широкие термины имеют больше связей с другими терминами, чем более точные термины. Я нашел статью, в которой обсуждается количество "краев «У MID есть, что, как я полагаю, означает количество соединений. Тем не менее, они выполняют некоторое преобразование между значениями MID в длинные значения и используют различные сценарии, которые продолжают выдавать мне многочисленные ошибки в Python. Я надеялся на простую таблицу со значениями MID в одном столбце и количеством подключений в другом, но я потерялся в их коде, преобразовании значений и ошибках Python.

Если у вас есть какие-либо предложения по простому определению количества соединений MID или его иерархического уровня, мы будем очень признательны. Благодарю вас!


person Maxwell Poole    schedule 02.05.2017    source источник


Ответы (1)


Эти MID выглядят так, как будто они предназначены для довольно распространенных вещей, поэтому я удивлен, что их нет в сети знаний. Добавляете ли вы префикс MID для формирования URI?

"kg": "http://g.co/kg"
"kg:/m/067408"

Freebase и Knowledge Graph не организованы как иерархии, так что ваша идея с поиском уровней на самом деле не работает. Я также сомневаюсь в вашей идее о том, что степень (т.е. количество ребер) коррелирует с более широким и более узким, но вы должны иметь возможность использовать дамп, который вы нашли, чтобы проверить это.

Дамп данных Freebase ExQ, который вы нашли, очень сбивает с толку, потому что они переименовывают Freebase types в topics (не путать с Freebase topics), но я думаю, что их freebase-nodes-in-out-name.tsv содержит информацию, которую вы ищете (количество ребер == степень). Вы можете использовать inDegree, outDegree или их сумму.

Их код преобразования MID в целое число мне не кажется правильным (и не соответствует комментариям), но вам нужно будет использовать совместимую реализацию, чтобы соответствовать тому, что они сделали.

Смотря на

/m/02w0000  "Clibadium subsessilifolium"@en

это закодировано как

48484848875048

or

48 48 48 48 87 50 48
 0  0  0  0  w  2  0

Итак, просто возьмите значения ASCII справа налево и соедините их слева направо. Запутанно, неэффективно и неправильно все в одном! (На самом деле это кодировка base 36 (или 37?))

person Tom Morris    schedule 02.05.2017
comment
Я только что проверил Google Knowledge Graph Search API, и все четыре MID доступны: developers.google.com/knowledge-graph/reference/rest/ - person Tom Morris; 02.09.2020