Пространственное соединение сущностей - Word Vectors - PullRequest
0 голосов
/ 23 января 2020

Я очень озадачен тем, как работают векторы слов, особенно в отношении связывания сущностей spacy (https://spacy.io/usage/training#entity -linker ).

При добавлении объекта в базу знаний одним из параметров является 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 Ответ

0 голосов
/ 23 января 2020

Нам нужно лучше документировать это, но позвольте мне попытаться объяснить: База знаний хранит предварительно обученные векторы сущностей. Эти векторы являются сокращенными версиями описаний сущностей. Хотя такое описание может состоять из одного или нескольких слов (различной длины), его вектор всегда должен иметь фиксированный размер. Длина 3 нереальна c, что-то вроде 64 или 96 имеет больше смысла. Если у нас это есть, каждое описание сущности отображается в пространстве 96D, чтобы мы могли использовать эти описания в дальнейших нисходящих нейронных сетях.

Как показано в примере , который вы связали, вы можете используйте EntityEncoder , чтобы создать это отображение описания из нескольких слов в вектор 96D, и вы можете поэкспериментировать с длиной вложений. Большие вложения означают, что вы можете захватить больше информации, но также потребуется больше места для хранения.

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

Интуитивно понятно, что "внедрения сущностей" являются своего рода усредненной, сжатой версии векторов слов всех слов в описании сущности.

Кроме того, я не знаю, видели ли вы это, но ищете ли вы более реалистичный c способ запуска Entity Linking, вы можете проверить скрипты для обработки Wikipedia & Wikidata здесь: https://github.com/explosion/spaCy/tree/2d249a9502bfc5d3d2111165672d964b1eebe35e/bin/wiki_entity_linking.

...