Как найти список тем wikidata (или freebase или DBpedia), о которых идет речь?

Я ищу решение для извлечения списка концепций, о которых текстовый (или HTML) документ. Я хотел бы, чтобы концепции были темами Викиданных (или freebase или DBpedia).

Например, "Плохая песня Микаэля Джексона" должна вернуть Майкла Джексона (исполнитель, wikidata Q2831) и Bad (песня, wikidata Q275422). Как показывает этот пример, система должна быть устойчивой к орфографическим ошибкам (Микаэль) и неоднозначности (Плохо).

В идеале система должна работать на нескольких языках, она должна работать как на коротких текстах, так и на длинных текстах, а когда она не уверена, она должна возвращать несколько тем (например, Плохая песня + Плохой альбом). Кроме того, в идеале он должен быть открытым исходным кодом и иметь Python API.

Да, это звучит как список для Санта-Клауса. Есть идеи?

редактировать

Я проверил несколько решений, но пока никакой серебряной пули.

  • NLTK анализирует текст и извлекает "именованные объекты" (AFAIU, часть предложения, которое относится к имени), но не возвращает темы Wikidata, а просто текст. Это означает, что он, вероятно, не поймет, что "Я застрелил шерифа" - это название песни Боба Марли, вместо этого он будет рассматривать это как предложение.
  • OpenNLP делает примерно то же самое.
  • В Wikidata есть API поиска, но это только один термин за раз, и он не обрабатывает неоднозначность.
  • Есть несколько коммерческих сервисов (OpenCalais, AlchemyAPI, CogitoAPI...), но ни один из них не блестит, ИМХО.

1 ответ

Вы можете использовать Spacy для получения Именованной сущности, а затем связать их с WikiData, используя API поиска.

Для того, что осталось от предложения, которое не соответствует именованной сущности в Spacy, вы можете создать список нграмм из предложения, начиная с самой большой нграммы, которую вы используете API поиска WikiData для поиска тем WikiData.

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

Found 8 linkages (8 had no P.P. violations)
    Linkage 1, cost vector = (UNUSED=0 DIS= 0.15 LEN=9)

    +-------------------------Xp-------------------------+
    +----------->WV---------->+                          |
    +-------Wd------+         +---------Osn--------+     |
    |       +---G---+----Ss---+----Os----+         |     |
    |       |       |         |          |         |     |
LEFT-WALL Bob.m Marley[!] wrote.v-d Natural[!] Mystic[!] . 

Вы можете сказать, что предмет "Боб Марли", потому что

  1. "Писал" связан с "Марли" с S, который соединяет существительные с конечными глаголами.
  2. "Марли" соединяется с "Бобом" с помощью буквы G, которая соединяет собственное существительное.

Таким образом, "Боб Марли" является хорошим кандидатом на сущность (также у него есть оба слова с заглавной буквы).

Учитывая приведенный выше синтаксический анализ "дерева", трудно сказать, связаны ли "естественный" и "мистический", даже если они находятся на одной стороне предложения.

Второй синтаксический анализ, предоставленный грамматикой связи, имеет тот же вектор затрат и связывает воедино "Natural Mystic" с снова G.

Вот:

    Linkage 2, cost vector = (UNUSED=0 DIS= 0.15 LEN=9)

    +-------------------------Xp-------------------------+
    +----------->WV---------->+                          |
    +-------Wd------+         +---------Os---------+     |
    |       +---G---+----Ss---+          +----G----+     |
    |       |       |         |          |         |     |
LEFT-WALL Bob.m Marley[!] wrote.v-d Natural[!] Mystic[!] .

Так что, на мой взгляд, "Боб Марли" и "Натуральный мистик" - хороший кандидат для поиска в викиданных.

Это была простая проблема, когда грамматика и орфография верны.

Вот один разбор из одного и того же предложения в нижнем регистре:

Linkage 1, cost vector = (UNUSED=1 DIS= 0.15 LEN=14)

    +------------------------Xp------------------------+
    +----------------------Wa---------------------+    |
    |       +------------------AN-----------------+    |
    |       |        +-------------AN-------------+    |
    |       |        |                  +----AN---+    |
    |       |        |                  |         |    |
LEFT-WALL Bob.m marley[?].n [wrote] natural.n mystic.n . 

LG даже не распознает глагол.

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