Встраивание слов с учетом локального хеширования (LSH)

#python #nlp #nearest-neighbor #locality-sensitive-hash #lsh

#python #nlp #ближайший сосед #хеширование с учетом локальности #lsh

Вопрос:

Я пытаюсь понять эту статью, но мне действительно трудно выполнить некоторые шаги.
Я добавляю некоторые фрагменты, которые меня смущают, но весь код доступен здесь .

По сути, первым шагом является вычисление матрицы совпадений и списка редких слов, и меня это устраивает.

Затем нам нужны список NN и матрица NN в качестве входных данных для автоэнкодера, и для их получения мы используем LSH.

Здесь, насколько я понял, мы создаем хэш-бит hashsize для наших входных данных, а затем вычисляем вектор индекса для каждого значения матрицы co-occ.

 from lshash import LSHash
lsh = LSHash(hashsize, wordcount)
for i in range(len(cooc_matr)):
lsh.index(cooc_matr[i])
 

Затем мы создаем список NN и матрицу:

 friendslist = []
sim_matr = []
for i in range(len(rarewords)):
   result = lsh.query(cooc_matr[rarewords[i]], num_results=friends, 
                                           distance_func='euclidean')
   length = len(result)
   fri = []
   sim = []
   for j in range(length):
        fri.append(str(np.array(result[j][0])))
        sim.append(float(result[j][1]))
   if length < friends:
        count = friends - length
        for i in range(count):
            fri.append(str(8))
            sim.append(-1)
   friendslist.append(fri)
   sim_matr.append(sim)
 

В этом коде есть две основные вещи, которые я не понимаю: прежде всего, что значит запрашивать каждое значение совпадения для всех редких слов ( lsh.query(cooc_matr[rarewords[i]], num_results=friends,distance_func='euclidean') ) .
И, во-вторых, я совершенно не знаю, какова цель этого цикла:

 for i in range(count):
     fri.append(str(8))
     sim.append(-1)
friendslist.append(fri)
sim_matr.append(sim)
 

и почему он добавляет a str(8) в fri список.

Я был бы очень признателен, если бы вы помогли мне понять. Извините, если вы находите мои вопросы глупыми, но я всего лишь новичок в этом вопросе.