Trong hướng dẫn này, chúng tôi sẽ tìm hiểu về các số liệu tương tự của các chuỗi bằng Python.Similarity metrics of strings using Python.
Nó được sử dụng trong nhiều lĩnh vực khoa học máy tính như xử lý ngôn ngữ tự nhiên, học máy và lĩnh vực phát triển web. Trước, chúng ta sẽ tìm hiểu về cách tìm thấy sự tương đồng giữa hai câu sau đó chúng ta sẽ chuyển sang tạo ra các số liệu tương tự của nhiều chuỗi Sử dụng các phương thức python.different cho nó mà chúng ta sẽ khám phá trong hướng dẫn này là:
First, we’ll learn about how to find a similarity between two sentences then we’ll move towards generating similarity metrics of multiple strings using Python.
Different methods for it that
we’ll explore in this tutorial are:
- Phương pháp khoảng cách Levenshtein
- Phương thức tổng và zip
- Phương thức trình tự
- Phương pháp tương tự cosine
Sử dụng phương pháp khoảng cách Levenshtein trong Python
Khoảng cách levenshtein giữa hai từ được định nghĩa là số lượng chỉnh sửa đơn lẻ tối thiểu như chèn, xóa hoặc thay thế cần thiết để thay đổi một từ sang từ khác.
First, we’ll install Levenshtein using a command
pip install python-Levenshtein
Nhập nó bằng lệnh
import Levenshtein
Bây giờ, chúng tôi sẽ sử dụng phương thức khoảng cách để tính khoảng cách Levenshtein như sau:Levenshtein distance as follows:
Levenshtein.distance["Hello World", "Hllo World"]
Đầu ra tương ứng của nó như sau:
1
Vì chúng ta phải thực hiện một thao tác chèn duy nhất để chèn ‘E, trong từ hllo để làm cho nó xin chào.
Sử dụng phương thức tổng và zip trong Python
Phương pháp ZIP được sử dụng để ánh xạ cùng một chỉ mục của các thùng chứa khác nhau để chúng ta có thể sử dụng chúng như một thực thể duy nhất. Trước khi, chúng ta sẽ khởi tạo hai chuỗi và làm cho độ dài của chúng bằng nhau.is used to map the same index of different containers so that we can use them as a single entity.
First, we’ll initialize two strings and make their length equal.
s1 = 'Hello World' s2 = 'Hello Word' s1 = s1 + ' ' * [len[s2] - len[s1]] s2 = s2 + ' ' * [len[s1] - len[s2]]
Bây giờ, khởi tạo tổng bằng 0,once đã thực hiện thao tác zip, chúng tôi sẽ kiểm tra xem char của chỉ số cụ thể trong cả hai chuỗi có giống nhau hay không thì không tăng thêm 1. Cuối cùng, chia tổng cho độ dài của chuỗi đầu tiên và in kết quả.
Once performed zip operation, we’ll check if char of particular index in both strings are the same then increase sum by 1 else not. Finally, divide the sum by length of the
first string and print the result.
sum = 0 for i,j in zip[s1, s2]: if i==j: sum += 1 else: sum += 0 sum = sum/float[len[s1]] print["Similarity between two strings is: " + str[sum] ]
Đầu ra tương ứng của nó như sau:
Similarity between two strings is: 0.8181818181818182
Vì chúng ta phải thực hiện một thao tác chèn duy nhất để chèn ‘E, trong từ hllo để làm cho nó xin chào.
Sử dụng phương thức tổng và zip trong Python
First, we’ll import SequenceMatcher using a command
from difflib import SequenceMatcher
Phương pháp ZIP được sử dụng để ánh xạ cùng một chỉ mục của các thùng chứa khác nhau để chúng ta có thể sử dụng chúng như một thực thể duy nhất. Trước khi, chúng ta sẽ khởi tạo hai chuỗi và làm cho độ dài của chúng bằng nhau.
s1 = "I am fine" s2 = "I are fine" sim = SequenceMatcher[None, s1, s2].ratio[] print["Similarity between two strings is: " + str[sim] ]
Đầu ra tương ứng của nó như sau:
Similarity between two strings is: 0.8421052631578947
Vì chúng ta phải thực hiện một thao tác chèn duy nhất để chèn ‘E, trong từ hllo để làm cho nó xin chào.Cosine similarity in Python
Sử dụng phương thức tổng và zip trong Python
Phương pháp ZIP được sử dụng để ánh xạ cùng một chỉ mục của các thùng chứa khác nhau để chúng ta có thể sử dụng chúng như một thực thể duy nhất. Trước khi, chúng ta sẽ khởi tạo hai chuỗi và làm cho độ dài của chúng bằng nhau.string module as ‘Hello!’ and ‘Hello’ are the same. Strings will be converted to numerical vectors using CountVectorizer. The most frequent words which give no meaning like ‘I’, ‘you’, ‘myself’, etc. will also be removed, these are known as stopwords.
Bây giờ, khởi tạo tổng bằng 0,once đã thực hiện thao tác zip, chúng tôi sẽ kiểm tra xem char của chỉ số cụ thể trong cả hai chuỗi có giống nhau hay không thì không tăng thêm 1. Cuối cùng, chia tổng cho độ dài của chuỗi đầu tiên và in kết quả.
import Levenshtein0
Sử dụng phương thức sequenCeMatcher.ratio [] trong Python
import Levenshtein1
Đây là một phương pháp được xây dựng trong đó chúng ta phải vượt qua cả hai chuỗi và nó sẽ trả về sự tương đồng giữa hai.first, chúng ta sẽ nhập sequencematcher bằng lệnh bằng lệnh
import Levenshtein2
Bây giờ, chúng tôi sẽ khởi tạo hai chuỗi và chuyển nó sang phương thức Sequencematcher và cuối cùng in kết quả.
import Levenshtein3
Sử dụng sự tương đồng về cosine trong Python
import Levenshtein4
Chúng tôi sẽ xây dựng một không gian vectơ từ tất cả các câu đầu vào. Số lượng kích thước trong không gian vectơ này sẽ giống như số lượng từ duy nhất trong tất cả các câu kết hợp. Sau đó, chúng tôi sẽ tính toán góc giữa các vectơ này.
import Levenshtein5
Chúng tôi sẽ xóa các dấu chấm câu từ chuỗi bằng mô -đun chuỗi AS & NBSP; Xin chào !, Và ‘Xin chào & NBSP; giống nhau. Chuỗi sẽ được chuyển đổi thành các vectơ số bằng cách sử dụng CountVectorizer. Những từ thường xuyên nhất không có ý nghĩa như ‘Tôi,’ bạn, ’bản thân tôi, v.v. cũng sẽ bị xóa, chúng được gọi là từ dừng.
Vì vậy, trước tiên, chúng tôi nhập các gói sau bằng lệnhĐể sử dụng stopwords, trước tiên, hãy tải xuống bằng lệnh
import Levenshtein7
Đầu ra tương ứng của nó như sau:
import Levenshtein8
Vì chúng ta phải thực hiện một thao tác chèn duy nhất để chèn ‘E, trong từ hllo để làm cho nó xin chào.
I hope you enjoyed this tutorial.