Я использовал text2vec для генерации пользовательских вложений слов из совокупности собственных текстовых данных, содержащих множество отраслевых жаргонов (таким образом, запатентованные вложения, подобные тем, которые доступны из Google, не будут работать). Аналогии отлично работают, но мне сложно применить вложения для оценки новых данных. Я хочу использовать вложения, которые я уже тренировал, чтобы понимать отношения в новых данных. подход, который я использую (описанный ниже), кажется запутанным, и это очень медленно. Есть ли лучший подход? Возможно, что-то уже встроено в пакет, который я просто пропустил?Применение вложений text2vec к новым данным
Вот мой подход (предлагается с ближе всего к воспроизводимым коду я могу генерировать, учитывая, что я использую собственный источник данных):
d = список, содержащий новые данные. каждый элемент имеет классовый характер
ЗВТ = реализация этого слова vectorizations получена из text2vec о перчатке
new_vecs <- sapply(d, function(y){
it <- itoken(word_tokenizer(y), progressbar=FALSE) # for each statement, create an iterator punctuation
voc <- create_vocabulary(it, stopwords= tm::stopwords()) # for each document, create a vocab
vecs[rownames(vecs) %in% voc$vocab$terms, , drop=FALSE] %>% # subset vecs for the words in the new document, then
colMeans # find the average vector for each document
}) %>% t # close y function and sapply, then transpose to return matrix w/ one row for each statement
Для моего случая использования, мне нужно, чтобы сохранить результаты отдельно для каждого документа, так что все, что включает в себя pasting- вместе элементы d не будут работать, но, безусловно, должен быть лучший способ, чем то, что я собрал вместе. Я чувствую, что я должен упустить что-то довольно очевидное.
Любая помощь будет принята с благодарностью.