Spacy - номер леммы

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

import spacy
 str="basing based base"
 sp = spacy.load('en_core_web_sm')
 sentence=sp(str)
 for w in sentence:
    print(w.text,w.lemma)

В первом слое нейронной сети с keras, слое встраивания, мне нужно знать максимальное количество слов в таблице поиска, кто-нибудь знает это число? Спасибо


person Simone Grassi    schedule 16.04.2020    source источник
comment
Как получить целочисленные индексы, которые вы собираетесь использовать для получения вложений из слоя? Это внутренний идентификатор от spacy?   -  person Jindřich    schedule 16.04.2020


Ответы (1)


Индексы леммы на самом деле являются хэшами, поэтому не существует непрерывной строки индексов от 0 до количества словарных статей. Даже sp.vocab.strings["randomnonwordstring#"] дает вам целое число.

Для записи «база» идентификатор равен 4715552063986449646 в sp.vocab (обратите внимание, что это общий словарь как для форм, так и для лемм). Вы бы никогда не поместили такое количество вложений в память.

Правильное решение — создать словарь, преобразующий слова в индексы на основе того, что у вас есть в ваших обучающих данных.

person Jindřich    schedule 16.04.2020