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
)
Но приведенный выше пример не останавливается до тех пор, пока не найдет наилучшее значение, что не является идеальным.
Это действительно больше проблемы обработки естественного языка. Есть много подходов к нему, но классический, разбивающий строки на слова-подобные части и используя что-то вроде [tf-idf] (https://en.wikipedia.org/wiki/Tf%E2%80%93idf), чтобы определить степень сходства. [NTLK] (http://www.nltk.org/) может быть полезен в реальной реализации. –
@GustavoBezerra NTLK имеет большой потенциал, спасибо за то, что поделились им! Мне нужно увидеть, есть ли какие-либо практические приложения в области URL/Hyperlinks. – Adib