Определить категориальный уровень иерархии значения 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?))