2016-06-20 2 views
-1

Учитывая два документа, я хочу рассчитать сходство между ними. У меня есть меры по выяснению расстояния косинуса, N-грама и tf-idf, используя это: This is a previously asked questionСравнение двух документов в python

Я хочу знать, что еще нужно сделать, используя эти функции.

Кроме того, я попытался реализации Word2Vec, после чего я попытался находя сходства, используя следующий код:

for i in range(len(Words)): 
    print i 
    for k in range(len(Words)): 
     net_sim = 0.0 
     for j in range(len(Words.ix[i]['A'])): 
      sim = 0.0 
      for l in range(len(Words.ix[k]['A'])): 
       if sim < model.similarity(Words.ix[i]['A'][j],Words.ix[k]['A'][l]): 
        sim = model.similarity(Words.ix[i]['A'][j],Words.ix[k]['A'][l]) 
      net_sim += sim 
     Similarity.ix[i][k] = net_sim/len(Words.ix[i]['A']) 

Для истории слова в данном документе, я пытаюсь найти наиболее похожий слово во втором документе и добавить их сходство. Затем я делю на число слов, чтобы нормализовать его до диапазона от 0 до 1. Здесь слова - это DataFrame, состоящий из слов разных документов, в отдельных строках, а модель - это модель Word2Vec. Этот процесс занимает много времени, и я хочу его оптимизировать и тем самым искать различные подходы.

+0

Пожалуйста, покажите нам код у вас уже есть! –

+0

http://stackoverflow.com/a/22577329/6350407 –

+1

Пожалуйста, покажите нам код **, который у вас уже есть! Извините, но SO не существует для совместного использования кода, который вы нашли где-то в другом месте. Вы должны проявить хоть какие-то усилия. –

ответ

1

Если вы сосредоточены на использовании описанных вами функций, его следует легко реализовать, прочитав nltk wiki, но я не знаю, t знать, если это лучший способ сравнить простоту между ними.

Как указано на странице difflib docs, вы можете использовать их пакет для сравнения файлов и последовательностей.

Этот модуль предоставляет классы и функции для , сравнивая последовательности. Это может использоваться, например, для , сравнивая файлы и может производить информацию о различиях в различных форматах, включая HTML и контекст и унифицированные разницы.

Для сравнения каталогов и файлов см. Также модуль filecmp.


Более конкретно, вы можете использовать difflib.SequenceMatcher() для сравнения последовательностей текста.

Пример:

import difflib 

# passing strings 
difflib.SequenceMatcher(None, str1, str2) 

# reading files 
difflib.SequenceMatcher(None, file1.read(), file2.read()) 

Дополнительные примеры и учебники, см:

PyMOTW - difflib

+0

Нет, мне нужно найти сходство в диапазоне от 0 до 1. Я пробовал подход Word2Vec, но для этого требуется много времени, и мне нужна более быстрая программа для больших данных –

Смежные вопросы