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

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

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

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

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

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

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

1 ответ

Решение

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

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

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

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

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

Смотря на

/m/02w0000  "Clibadium subsessilifolium"@en

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

48484848875048

или же

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

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

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