Простое связывание сущностей - векторы слов
Я очень смущен тем, как работают векторы слов, особенно в отношении связывания сущностей spacy (https://spacy.io/usage/training).
При добавлении сущности в базу знаний одним из параметров является entity_vector. Как вы это получили? Я пробовал делать
nlp = spacy.load('en_core_web_sm')
kb = KnowledgeBase(vocab = nlp.vocab, entity_vector_length = 96)
for n in m_yentities:
kb.add_entity(entity = n, freq = ___, entity_vector = **nlp(n).vector**)
Код ** дает мне векторы длиной 96, поэтому я использую его для entity_vector_length
, хотя в примере они используют 3. Мне просто интересно, подходит ли мой подход, но меня это немного сбивает с толку.
1 ответ
Придется лучше задокументировать это, но позвольте мне попытаться объяснить: база знаний хранит предварительно обученные векторы сущностей. Эти векторы являются сокращенными версиями описаний сущностей. Хотя такое описание может состоять из одного или нескольких слов (разной длины), его вектор всегда должен иметь фиксированный размер. Длина 3 нереальна, что-то вроде 64 или 96 имеет больше смысла. Если это у нас есть, описание каждого объекта отображается в пространстве 96D, чтобы мы могли использовать эти описания в последующих нейронных сетях.
Как показано в примере, который вы связали, вы можете использовать EntityEncoder для создания этого сопоставления описания из нескольких слов с вектором 96D, и вы можете поиграть с длиной встраивания. Более крупные вложения означают, что вы можете захватить больше информации, но также потребуется больше места для хранения.
Создание этих векторов внедрения для описаний сущностей выполняется как автономный шаг, один раз при создании базы знаний. Затем, когда вы действительно хотите обучить нейронную сеть связывать объекты, размер этой сети будет зависеть от размера, который вы выбрали для встраивания описания.
Интуитивно понятно, что "вложения сущностей" - это своего рода усредненная, сжатая версия векторов слов всех слов в описании сущности.
Кроме того, я не знаю, видели ли вы это, но если вы ищете более реалистичный способ запуска Entity Linking, вы можете проверить скрипты для обработки Википедии и Викиданных здесь.