Как обрабатывать невидимые слова для предварительно обученного встраивания слов в Glove, чтобы избежать ключевого ошибки? - PullRequest
0 голосов
/ 24 мая 2019

Я хочу извлечь особенности из предварительно обученного встраивания Перчатки. Но я получил Keyerror за определенные слова. Вот список слов токена.

words1=['nuclear','described', 'according', 'called','physics', 'account','interesting','holes','theoretical','like','space','radiation','property','impulsed','darkfield']

Я получил Кейеррор из слов «импульсный», «темное поле», потому что, вероятно, это невидимые слова. Как я могу избежать этой ошибки? ,

Вот мой полный код:

gloveFile = "glove.6B.50d.txt"
import numpy as np
def loadGloveModel(gloveFile):
    print ("Loading Glove Model")
    with open(gloveFile, encoding="utf8" ) as f:
        content = f.readlines()
    model = {}
    for line in content:
        splitLine = line.split()
        word = splitLine[0]
        embedding = np.array([float(val) for val in splitLine[1:]])
        model[word] = embedding
    print ("Done.",len(model)," words loaded!")
    return model

model = loadGloveModel(gloveFile)

words1=['nuclear','described', 'according', 'called','physics', 'account','interesting','holes','theoretical','like','space','radiation','property','impulsed','darkfield']

import numpy as np
vector_2 = np.mean([model[word] for word in words1],axis=0) ## Got error message

Сообщение об ошибке для слова «импульс»

enter image description here

Есть ли способ пропустить эти невидимые слова?.

1 Ответ

0 голосов
/ 24 мая 2019

Я бы предложил ниже

  • Все пропущенные слова, присвоенные некоторому уникальному вектору (скажем, всем нулям)
  • Найдите слова, похожие на него, и используйте их вложение:
    • Попробуйте ngrams (префикс или суффикс) слов и проверьте, находится ли оно в слове
    • Сформулируйте слово и проверьте, есть ли оно в слове
  • Самое простое решение: используйтеFastText.Он собирает векторы слов из n-граммы подслов, что позволяет ему обрабатывать словарные слова.
...