#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
список.
Я был бы очень признателен, если бы вы помогли мне понять. Извините, если вы находите мои вопросы глупыми, но я всего лишь новичок в этом вопросе.