Кластеризация ip-адресов по доменным именам - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть ip-сеть, которая представляет собой список последовательных ip-адресов.Из этого списка я хочу сгруппировать диапазоны IP-адресов в независимые объекты.Я хочу дать каждому IP в диапазоне набор свойств, таких как время жизни, серверы имен и доменные имена, связанные с ним.

Затем я хочу определить расстояние между каждым IP-адресом и его соседями и начать кластеризацию на основе кратчайшего расстояния.

Мой вопрос заключается в функции расстояния.TTL - это число, поэтому проблем не должно быть.Однако серверы имен и доменные имена являются строками. Как бы вы представляли их как числа в векторе?

В основном, если 2 IP-адреса имеют одинаковый сервер имен или очень похожие доменные имена (равные 2LD), вы хотите, чтобы они имелименьшее расстояние.Я посмотрел что-то вроде word2vec, но не могу найти полезную реализацию.

1 Ответ

0 голосов
/ 21 ноября 2018

Я бы попробовал использовать difflib следующим образом.

from difflib import SequenceMatcher

def similarity(a, b):
    return SequenceMatcher(None, a, b).ratio()

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

similarity("server1","server1")
1.0

similarity("Server1","Server2")
0.8571428571428571

similarity("foo","bar")
0.0
...