Ранг текста нормализован между 0 и 1

#python #matrix #ranking #pagerank #textrank

Вопрос:

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

 # Pare text by spaCy
doc = nlp(text)
        
# Filter sentences
sentences = self.sentence_segment(doc, candidate_pos, lower) # list of list of words
        
# Build vocabulary
vocab = self.get_vocab(sentences)
        
# Get token_pairs from windows
token_pairs = self.get_token_pairs(window_size, sentences)
        
# Get normalized matrix
g = self.get_matrix(vocab, token_pairs)
        
# Initionlization for weight(pagerank value)
pr = np.array([1] * len(vocab))
        
# Iteration
previous_pr = 0
for epoch in range(self.steps):
    pr = (1-self.d)   self.d * np.dot(g, pr)
    if abs(previous_pr - sum(pr))  < self.min_diff:
        break
    else:
        previous_pr = sum(pr)

# Get weight for each node
node_weight = dict()
for word, index in vocab.items():
    node_weight[word] = pr[index]
        
self.node_weight = node_weight
 

Я видел на выходе что-то похожее:

 # Output
# science - 1.717603106506989
# fiction - 1.6952610926181002
# filmmaking - 1.4388798751402918
# China - 1.4259793786986021
# Earth - 1.3088154732297723
# tone - 1.1145002295684114
# Chinese - 1.0996896235078055
# Wandering - 1.0071059904601571
# weekend - 1.002449354657688
# America - 0.9976329264870932
# budget - 0.9857269586649321
# North - 0.9711240881032547
 

Я хотел бы нормализовать значение ранга текста от 0 до 1, чтобы получить максимальное значение.

В википедии я нашел эти 2 формулы здесь формулы ранжирования текста, но если я добавлю (1-self.d)/g.shape[0] к предыдущей формуле так:

 pr = (1-self.d)/g.shape[0]   self.d * np.dot(g, pr)
 

У меня все еще остаются некоторые значения выше 1. В чем же ошибка?

Комментарии:

1. Возможно, он сходится к 1, а не стремится к 1.

2. Да, это, вероятно, так, как вы говорите @PeterWood. В любом случае, я ищу способ убедиться, что счет находится между 0 и 1.