Datasketch MinHash LSH Forest генерирует неверный результат - PullRequest
0 голосов
/ 16 апреля 2019

Мы внедряем Систему рекомендаций, основанную на локально-чувствительном хешировании (LSH) , использующую реализацию MinHash LSH Forest от Datasketch.

После анализа результатов мы обнаружили, что MinHash LSH Forest (Datasketch) не рекомендует самое близкое совпадение для данного запроса.

Мы проанализировали предсказанное совпадение и фактическое ближайшее совпадение, используя MinHash LSH от Datasketch (Примечание: MinHash LSH отличается от MinHash LSH Forest) и обнаружили, что, хотя MinHash LSH работает достаточно хорошо MinHash LSH Forest дает неверный результат.

def get_forest(df, permutations, p_trees):
    lemmatizer = WordNetLemmatizer()
    minhash = []
    for i in range(len(df)):
        text = df.iloc[i,8]
        tokens = process_text(text, lemmatizer)
        if tokens is None:
            pass
        m = MinHash(num_perm = perms)
        for s in tokens:
            m.update(s.encode('utf8'))
        minhash.append(m)
    forest = MinHashLSHForest(num_perm = perms, l = p_trees)
    for i,m in enumerate(minhash):
        forest.add(i,m)
    forest.index()
    return forest

Например, Предположим, есть 3 предложения,

Предложение A: Текст запроса.

Предложение B: ближайшее совпадение.

Предложение C: Предсказанный матч.

J_AB = 0.38,            

J_MinHash_AB = 0.39, 

J_AC = 0.2,         

J_MinHash_AC = 0.2

Где,

J_AB: фактическое сходство Жакара между предложением A и предложением B.

J_AC: Фактическое сходство с Жакаром между предложением А и предложением С.

J_MinHash_AB: Жаккард Сходство между предложением A и предложением B рассчитывается MinHash LSH.

J_MinHash_AC: Жаккард Сходство между предложением А и предложением С рассчитывается MinHash LSH.

У нас есть два вопроса,

  1. Почему Datasketch MinHash LSH Forest предлагает предложение С в качестве ближайшего соседа предложения А вместо предложения В?

  2. Учитывая, что MinHash LSH Forest приведет к нескольким сходствам Джакарта, т.е. J_MinHash_AB, J_MinHash_AC, J_MinHash_AD, …………, J_MinHash_AN можно ли получить доступ ко всем из них?

...