1

Я пытаюсь связать упоминания сущности с базой знаний, например DBpedia или Wikidata.Как создать Викициту/Связывание объектов на основе EntityMentionsAnnotator?

В конце концов, я хочу обогатить выход JSON произвольной онтологией и настоящим предоставить некоторую семантику. Но в качестве первого шага он должен просто выглядеть примерно так:

{ 

    "index": 1, 
    "mention": "Barack Obama", 
    "characterOffsetBegin": 0, 
    "characterOffsetEnd": 12, 
    "ner": "PERSON", 
    "before": "", 
    "after": " " 
    "uri": "http://dbpedia.org/page/Barack_Obama" 

} 

Есть ли способ сделать это с уже предусмотрены инструментами Стэнфордского CoreNLP? Я видела WikitictAnnotator на GitHub, но, к сожалению, нет никакой документации или вообще о том, что это такое и как ее использовать соответственно.

Помимо этого, какие существуют другие возможности? Должен ли я использовать сторонний инструмент, например, DBpedia Spotlight в сочетании со справочником Stanford NE Recognizer, чтобы реализовать связывание объектов?

Заранее благодарен!

+0

Вы можете использовать http://dbpedia.org/sparql api для запроса dbpedia. например SELECT разный? Uri? Label WHERE { ? Uri rdfs: этикетка? Этикетка. FILTER regex (str (? Label), «Barack Obama», «i») } – Anish

+0

Ваш предложенный подход слишком прямолинейный, я думаю. Что делать, если есть неоднозначные сущности, например, «Джордж Буш»? Это может относиться как к Джорджу Бушу. и Джордж Буш-младший. Я знаю, что существуют сторонние инструменты для связывания ссылок, которые могут быть неоднозначными, но возможно ли это сделать и с CoreNLP? Если нет, какой API или инструмент следует использовать в сочетании с CoreNLP? – phly

ответ

0

После некоторого исследования я собираюсь ответить на свой вопрос. Возможно, это помогает кому-то в будущем.

Я нашел структуру под названием AGDISTIS, которая содержит ссылки на функциональность базы знаний. Он принимает упоминания из EntityMentionsAnnotator и сопоставляет их с соответствующими ресурсами dbpedia. Вы даже можете использовать другой индекс, кроме dbpedia.

Тем не менее, я был бы рад, если бы кто-нибудь мог объяснить, возможно ли и как викификация возможна только с помощью CoreNLP (см. WikidictAnnotator).

+1

WikidictAnnotator не будет работать. Чтобы придерживаться вашего примера, поймите, что «Обама» - это двусмысленное имя: он может либо ссылаться на Барака Обаму, или на Мишель Обаму или других лиц с таким именем. DBpedia, Wikidata, YAGO и другие объекты хранения КБ, т. Е. Их идентификаторы.Обработка «Обама была первой леди» со словарным поиском (часть «dict» в WikidictAnnotator), только «Обама» признан в качестве упоминания, не зная, какой из них. Чтобы получить идентификатор Викидата (в данном случае Q13133), вам нужен контекст, где происходит упоминание «Обама», что делает AGIDISTIS (или AIDA, или Dexter, ...). – jhoff

+0

Благодарим вас за эту информацию. Я не знал, что WikidictAnnotator - это просто поиск в словаре. К счастью, существуют рамки, способные устранять неоднозначность упоминаний, предоставляемых CoreNLP, вместо того, чтобы запускать их собственное распознавание сущностей/упоминаний, а затем их неоднозначно. – phly

0

В Ambiverse у нас есть система entity-linking, которая идентифицирует named entities в тексте. Каждый объект связан с его идентификатором Wikidata. Результатом является объект JSON, содержащий идентифицированные объекты и их позиции во входном тексте, а также некоторые полезные метаданные объекта как категории, URL-адрес Википедии и уверенность в связях. Система может использоваться как API. Чтобы узнать больше о сущности-связывании или случаях использования, вы можете проверить наш blog.

В качестве примера возьмем фразу:

Ма основал Alibaba в Ханчжоу инвестиций от SoftBank и Голдман.

Наша система будет производить выходные данные ниже. Вы также можете попробовать это самостоятельно here.

{ 
"docId": "1803274355", 
"language": "en", 
"matches": [ 
    { 
    "charLength": 2, 
    "charOffset": 0, 
    "text": "Ma", 
    "entity": { 
     "id": "http://www.wikidata.org/entity/Q1137062", 
     "url": "http://en.wikipedia.org/wiki/Jack%20Ma", 
     "confidence": 0.24400826614264 
    } 
    }, 
    { 
    "charLength": 7, 
    "charOffset": 11, 
    "text": "Alibaba", 
    "entity": { 
     "id": "http://www.wikidata.org/entity/Q1359568", 
     "url": "http://en.wikipedia.org/wiki/Alibaba%20Group", 
     "confidence": 0.89595517818717 
    } 
    }, 
    { 
    "charLength": 8, 
    "charOffset": 22, 
    "text": "Hangzhou", 
    "entity": { 
     "id": "http://www.wikidata.org/entity/Q4970", 
     "url": "http://en.wikipedia.org/wiki/Hangzhou", 
     "confidence": 0.92296125433251 
    } 
    }, 
    { 
    "charLength": 8, 
    "charOffset": 53, 
    "text": "SoftBank", 
    "entity": { 
     "id": "http://www.wikidata.org/entity/Q201653", 
     "url": "http://en.wikipedia.org/wiki/SoftBank", 
     "confidence": 0.95402181746993 
    } 
    }, 
    { 
    "charLength": 7, 
    "charOffset": 66, 
    "text": "Goldman", 
    "entity": { 
     "id": "http://www.wikidata.org/entity/Q193326", 
     "url": "http://en.wikipedia.org/wiki/Goldman%20Sachs", 
     "confidence": 0.41802014708618 
    } 
    } 
] 
} 
+0

Ваша система выглядит красиво. Но, к сожалению, мне нужно что-то свободное и открытое. – phly

+0

Когда вы подписываетесь на API, вы получаете 1000 запросов бесплатно каждый месяц. –

Смежные вопросы