Giải pháp # 1: Python BUILTIN
sử dụng SequenceMatcher từ difflib
ưu: thư viện python bản địa, không cần gói thêm.
nhược điểm: quá hạn chế, có rất nhiều thuật toán tốt khác cho sự giống nhau về chuỗi trên mạng.
dụ:
>>> from difflib import SequenceMatcher
>>> s = SequenceMatcher(None, "abcd", "bcde")
>>> s.ratio()
0.75
Giải pháp # 2: jellyfish thư viện
mình một thư viện rất tốt với vùng phủ sóng tốt và vài vấn đề. nó hỗ trợ:
- Levenshtein cách
- Damerau-Levenshtein cách
- Jaro cách
- Jaro-Winkler cách
- Trận Đánh giá cách tiếp cận so sánh
- Hamming cách
ưu: dễ dàng để sử dụng, âm thanh của các thuật toán được hỗ trợ, được kiểm tra.
cons: không phải thư viện gốc.
dụ:
>>> import jellyfish
>>> jellyfish.levenshtein_distance(u'jellyfish', u'smellyfish')
2
>>> jellyfish.jaro_distance(u'jellyfish', u'smellyfish')
0.89629629629629637
>>> jellyfish.damerau_levenshtein_distance(u'jellyfish', u'jellyfihs')
1
Nguồn
2017-09-08 22:49:25
Tôi không nghĩ rằng "khả năng" khá lâu ngay tại đây. Trong mọi trường hợp, hãy xem http://stackoverflow.com/questions/682367/good-python-modules-for-fuzzy-string-comparison – NPE
Từ bạn đang tìm kiếm là tỷ lệ, không xác suất. –
Hãy xem [Khoảng cách Hamming] (http://en.wikipedia.org/wiki/Hamming_distance). – Diana