Values in PSL don't need to be probabilities, but they do need to be in [0, 1]. There's no one-size-fits all way to normalize values into [0, 1]; it really depends on the situation. This isn't exhaustive list, but some ways people normalize values include dividing them all by the maximum observed value, or dividing them all by a value smaller than that and clipping the results into [0, 1].
An example that's similar to what you mention is the use of normalized Levenshtein similarity between strings, which is based on their
Levenshtein distance. For two strings s1 and s2, normalized Levenshtein similarity is defined as:
(1 - (Levenshtein_distance(s1, s2)/max(length(s1), length(s2))
Because the Levenshtein distance between s1 and s2 will never be greater than the length of the longer string, this value falls into [0, 1] and can be used in a PSL program even though it isn't a probability.
I hope this helped, feel free to ask any followup questions.