2016-02-26 2 views
0

Case Сценарий:Percent Подобные тексты и уровень толерантности

Представьте объект ключ-значение (словарь), который содержит следующие данные:

{ 
    'www.example.com/':2, 
    'www.example.com/happy/':4 
} 

я получаю значение из источника, который содержит следующие данные:

{ 
    'www.example.com//':4 
} 

очевидно, что www.example.com// очень и очень похож на www.example.com/. Вместо того, чтобы создавать новую запись в моем словаре, я хотел бы, чтобы код отображал ближайший ключ в моем словаре с точки зрения сходства текста, а затем суммировал числа. Таким образом, конечное состояние словаря будет выглядеть следующим образом:

{ 
    'www.example.com/':6, 
    'www.example.com/happy/':4 
} 

Суммирование часть легко и отражаясь от толерантности легко, но сложная часть это то, что лучший алгоритм для использования в качестве словаря растет?

т.е. у меня есть цикл по словарю каждый раз и проверить ключ (что-то вроде этого:

for key in dictionary: 
    if tolerance > diff(key,collected_data): 
     dictionary[key] += collected_data[value] 
     break 

)

Но приведенный выше пример не останавливается до тех пор, пока не найдет наилучшее значение, что не является идеальным.

+1

Это действительно больше проблемы обработки естественного языка. Есть много подходов к нему, но классический, разбивающий строки на слова-подобные части и используя что-то вроде [tf-idf] (https://en.wikipedia.org/wiki/Tf%E2%80%93idf), чтобы определить степень сходства. [NTLK] (http://www.nltk.org/) может быть полезен в реальной реализации. –

+0

@GustavoBezerra NTLK имеет большой потенциал, спасибо за то, что поделились им! Мне нужно увидеть, есть ли какие-либо практические приложения в области URL/Hyperlinks. – Adib

ответ

1

Я предполагаю, что вы хотите какой-то местности чувствительного хеширования (LSH), я никогда не пробовал раньше, но вы можете попробовать что-то вроде http://nearpy.io/