Làm thế nào để làm việc với python Fuzzywuzzy?

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách chúng ta có thể so khớp chuỗi bằng cách sử dụng thư việnuzzyWuzzy tích hợp sẵn của Python và xác định chúng giống nhau như thế nào bằng các ví dụ khác nhau

Giới thiệu

Python cung cấp một vài phương thức để so sánh hai chuỗi. Một vài phương pháp chính được đưa ra dưới đây

  • Sử dụng Regex
  • So sánh đơn giản
  • Sử dụng dfflib

Nhưng có một phương pháp khác có thể được sử dụng một cách hiệu quả để so sánh, được gọi làuzzywuzzy. Phương pháp này khá hiệu quả trong việc phân biệt hai chuỗi đề cập đến cùng một thứ, nhưng chúng được viết hơi khác nhau. Đôi khi chúng ta cần một chương trình có thể tự động xác định chính tả sai

Đó là một quá trình tìm các chuỗi khớp với một mẫu nhất định. Nó sử dụng Khoảng cách Levenshtein để tính toán sự khác biệt giữa các chuỗi

Thư viện này có thể giúp ánh xạ các cơ sở dữ liệu thiếu khóa chung, chẳng hạn như nối hai bảng theo tên công ty và các bảng này xuất hiện khác nhau trong cả hai bảng

Thí dụ

Hãy xem ví dụ sau

đầu ra

Đoạn mã trên trả về true vì các chuỗi được so khớp chính xác (100 %), điều gì sẽ xảy ra nếu chúng ta thực hiện thay đổi trong str2

đầu ra

Ở đây, đoạn mã trên trả về giá trị sai và các chuỗi khá giống với mắt người, nhưng không dành cho trình thông dịch. Tuy nhiên, chúng ta có thể giải quyết vấn đề này bằng cách chuyển đổi cả hai chuỗi thành chữ thường

đầu ra

Nhưng nếu chúng ta thay đổi bộ ký tự, chúng ta sẽ gặp một vấn đề khác

đầu ra

Để giải quyết các loại vấn đề như vậy, chúng ta cần các công cụ hiệu quả hơn để so sánh các chuỗi. Và Fuzzywuzzy là công cụ tốt nhất để tính chuỗi

Khoảng cách Levenshtein

Khoảng cách levenshtein được sử dụng để tính khoảng cách giữa hai chuỗi từ. Nó tính toán số lần chỉnh sửa tối thiểu mà chúng ta cần thay đổi trong chuỗi đã cho. Những chỉnh sửa này có thể là chèn, xóa hoặc thay thế

Thí dụ -

Chúng ta sẽ sử dụng hàm trên trong ví dụ trước khi chúng ta so sánh "Welcome to javatpoint. " thành "Chào mừng đến với javatpoint". Chúng ta có thể thấy cả hai chuỗi có khả năng giống nhau vì độ dài của Levensthtein nhỏ

Gói FuzzyWuzzy

Tên cái thư viện này nghe lạ và buồn cười, nhưng nó có lợi. Nó có một cách duy nhất để so sánh cả hai chuỗi và trả về điểm trên 100 của chuỗi được khớp. Để làm việc với thư viện này, chúng tôi cần cài đặt nó trong môi trường Python của chúng tôi

Cài đặt

Chúng ta có thể cài đặt thư viện này bằng lệnh pip

Collecting fuzzywuzzy
  Downloading fuzzywuzzy-0.18.0-py2.py3-none-any.whl (18 kB)
Installing collected packages: fuzzywuzzy
Successfully installed fuzzywuzzy-0.18.0

Bây giờ gõ lệnh sau và nhấn enter

Hãy tìm hiểu các phương thức sau đây của thư viện fuzzuwuzzy

Mô-đun lông tơ

Mô-đun fuzz được sử dụng để so sánh hai chuỗi đã cho cùng một lúc. Nó trả về điểm trên 100 sau khi so sánh bằng các phương pháp khác nhau

Lông tơ. tỉ lệ()

Đây là một trong những phương pháp quan trọng của mô-đun fuzz. Nó so sánh chuỗi và điểm số trên cơ sở mức độ phù hợp của chuỗi đã cho. Hãy hiểu ví dụ sau

Thí dụ -

đầu ra

Như chúng ta có thể thấy trong đoạn mã trên, fuzz. ratio() trả về điểm số, điều đó có nghĩa là có sự khác biệt rất nhỏ giữa các chuỗi

Lông tơ. một phần_ratio()

Thư việnuzzywuzzy cung cấp một phương thức mạnh mẽ khác - partial_ratio(). Nó được sử dụng để xử lý so sánh chuỗi phức tạp, chẳng hạn như khớp chuỗi con. Hãy xem ví dụ sau

Thí dụ -

đầu ra

Giải trình

Phương thức partial_ratio() có thể phát hiện chuỗi con. Do đó, nó mang lại sự tương đồng 100%. Nó tuân theo logic từng phần tối ưu trong đó chuỗi k có độ dài ngắn và chuỗi dài hơn m, thuật toán tìm chuỗi con k có độ dài phù hợp nhất

Lông tơ. token_sort_ratio

Phương pháp này không đảm bảo cho ra kết quả chính xác vì nếu chúng ta thay đổi thứ tự chuỗi. Nó có thể không cho kết quả chính xác

Nhưng mô-đunuzzywuzzy cung cấp giải pháp. Hãy hiểu ví dụ sau

Thí dụ -

đầu ra

Giải trình

Trong đoạn mã trên, chúng tôi đã sử dụng phương thức token_sort_ratio() mang lại lợi thế hơn partial_ratio. Trong phương pháp này, mã thông báo chuỗi được sắp xếp theo thứ tự bảng chữ cái và được nối với nhau. Nhưng có một tình huống khác, chẳng hạn như nếu các dây có độ dài khác nhau nhiều thì sao?

Hãy hiểu ví dụ sau

Thí dụ -

đầu ra

Trong đoạn mã trên, chúng tôi đã sử dụng một phương thức khác gọi là fuzz. token_set_ratio() thực hiện thao tác đã đặt và lấy ra mã thông báo chung, sau đó thực hiện so sánh theo cặp ratio()

Giao điểm của mã thông báo được sắp xếp luôn giống nhau vì chuỗi con hoặc chuỗi nhỏ hơn bao gồm các đoạn lớn hơn của chuỗi gốc hoặc mã thông báo còn lại gần nhau hơn

Gói Fuzzywuzzy cung cấp module process cho phép chúng ta tính chuỗi có độ tương đồng cao nhất. Hãy hiểu ví dụ sau

Thí dụ -

đầu ra

[('hello', 90), ('Hello Good', 90), ('Morning', 90), ('Good Evenining', 59)]
('hello', 90)

Đoạn mã trên sẽ trả về tỷ lệ phần trăm phù hợp cao nhất của danh sách chuỗi đã cho

Lông tơ. tỷ lệ WR

Mô-đun quy trình cũng cung cấp Tỷ lệ WR, mang lại kết quả tốt hơn so với tỷ lệ đơn giản. Nó xử lý chữ thường và chữ hoa và một số tham số khác nữa. Hãy hiểu ví dụ sau

Thí dụ -

đầu ra

Sự kết luận

Trong hướng dẫn này, chúng ta đã thảo luận về cách khớp chuỗi và xác định mức độ chặt chẽ của chúng. Chúng tôi đã minh họa ví dụ đơn giản nhưng chúng đủ để làm rõ cách máy tính xử lý các chuỗi không khớp. Nhiều ứng dụng thực tế như kiểm tra chính tả, tin sinh học để khớp, trình tự DNA, v.v. dựa trên logic mờ

Làm thế nào để mờ wuzzy làm việc Python?

Fuzzywuzzy là thư viện python sử dụng Khoảng cách Levenshtein để tính toán sự khác biệt giữa trình tự và mẫu do SeatGeek phát triển và cũng là mã nguồn mở .

Tỷ lệ Fuzzywuzzy hoạt động như thế nào?

Tỷ lệ một phần sử dụng FuzzyWuzzy . lấy chuỗi ngắn nhất và so sánh nó với tất cả các chuỗi con có cùng độ dài . Đầu ra của mã cho 100 dưới dạng partial_ratio() chỉ kiểm tra xem một trong hai chuỗi có phải là chuỗi con của chuỗi kia không.

Thuật toán kết hợp mờ hoạt động như thế nào?

Trong khoa học máy tính, khớp chuỗi mờ là kỹ thuật tìm các chuỗi khớp với một mẫu gần đúng (chứ không phải chính xác) . Nói cách khác, so khớp chuỗi mờ là một loại tìm kiếm sẽ tìm thấy kết quả khớp ngay cả khi người dùng viết sai từ hoặc chỉ nhập một phần từ cho tìm kiếm.

Tìm kiếm mờ hoạt động như thế nào?

Tìm kiếm mờ tìm kiếm văn bản khớp với cụm từ gần đúng thay vì chính xác . Tìm kiếm mờ giúp bạn tìm thấy kết quả có liên quan ngay cả khi cụm từ tìm kiếm bị sai chính tả. Để thực hiện tìm kiếm mờ, hãy thêm dấu ngã (~) vào cuối cụm từ tìm kiếm.