Khớp chuỗi Python

Là một nhà khoa học dữ liệu, bạn buộc phải truy xuất thông tin từ nhiều nguồn khác nhau bằng cách tận dụng các API có sẵn công khai, yêu cầu dữ liệu hoặc đơn giản là lấy dữ liệu của chính bạn từ một trang web. Tất cả thông tin này hữu ích nếu chúng tôi có thể kết hợp nó và không có bất kỳ thông tin trùng lặp nào trong dữ liệu. Nhưng làm cách nào để đảm bảo rằng không có bản sao nào?

Tôi biết… “hứ. bạn chỉ có thể sử dụng một chức năng truy xuất tất cả thông tin duy nhất, do đó loại bỏ các thông tin trùng lặp”. Chà, đó là một cách, nhưng chức năng của chúng tôi có lẽ không thể nói rằng một cái tên như “Barack Obama” giống như “Barack H. Ô-ba-ma” phải không? . Chúng ta có thể nói rõ rằng những cái tên này khác nhau nhưng có lẽ chúng đang đề cập đến cùng một người. Vì vậy, làm thế nào để chúng ta phù hợp với những tên này?

Đây là lúc Kết hợp chuỗi mờ xuất hiện. Bài đăng này sẽ giải thích Khớp chuỗi mờ là gì cùng với các trường hợp sử dụng của nó và đưa ra các ví dụ sử dụng Thư viện Fuzzywuzzy của Python

Lập luận mờ

mờ [tính từ]. khó nhận thức;

-Wikipedia

Logic mờ là một dạng logic đa trị liên quan đến suy luận gần đúng thay vì cố định và chính xác. Các giá trị logic mờ nằm ​​trong khoảng từ 1 đến 0. tôi. e giá trị có thể từ hoàn toàn đúng đến hoàn toàn sai. Ngược lại, Boolean Logic là một logic hai giá trị. đúng hoặc sai thường được ký hiệu lần lượt là 1 và 0, xử lý lý luận cố định và chính xác. Logic mờ có xu hướng phản ánh cách mọi người suy nghĩ và cố gắng mô hình hóa việc ra quyết định của chúng ta, do đó nó hiện đang dẫn đến các hệ thống thông minh mới [hệ thống chuyên gia]

Vì vậy, nếu chúng ta đang so sánh hai chuỗi bằng cách sử dụng logic mờ, chúng ta sẽ cố gắng trả lời câu hỏi “Chuỗi A và chuỗi B giống nhau như thế nào?”, và diễn đạt lại thành “Chuỗi A và chuỗi B có giống nhau không?”

Kết hợp chuỗi mờ

So khớp chuỗi mờ, còn được gọi là So khớp chuỗi gần đúng, là quá trình tìm các chuỗi gần khớp với một mẫu. Quá trình này có nhiều ứng dụng khác nhau như kiểm tra chính tả, phân tích và phát hiện DNA, phát hiện thư rác, phát hiện đạo văn, v.v. t. c

Giới thiệu về Fuzzywuzzy trong Python

Fuzzywuzzy là một thư viện python sử dụng Khoảng cách Levenshtein để tính toán sự khác biệt giữa các chuỗi và mẫu được phát triển và cũng là mã nguồn mở của SeatGeek, một dịch vụ tìm vé sự kiện từ khắp nơi trên internet và giới thiệu chúng trên một nền tảng. Vấn đề lớn mà họ gặp phải là việc dán nhãn cho các sự kiện giống như đã nêu trên blog của họ. Điều này giống như ví dụ tôi đã đưa ra ở đầu bài đăng khi một thực thể như tên của một người có thể được gắn nhãn khác nhau trên các nguồn khác nhau

Cài đặt

Để cài đặt thư viện, bạn có thể sử dụng pip

pip install fuzzywuzzypip install python-Levenshtein

ví dụ

Đầu tiên chúng ta phải nhập các mô-đunuzzywuzzy

from fuzzywuzzy import fuzz
from fuzzywuzzy import process

Bây giờ, chúng ta có thể lấy điểm giống nhau của hai chuỗi bằng cách sử dụng các phương thức sau đây hai phương thức ratio[] hoặc partial_ratio[]

fuzz.ratio["Catherine M Gitau","Catherine Gitau"]#91fuzz.partial_ratio["Catherine M. Gitau","Catherine Gitau"]#100

Có thể bạn đang thắc mắc tại sao điểm số lại khác nhau. Điều này là do lông tơ. ratio[] chỉ tính toán khoảng cách chỉnh sửa giữa một số thứ tự của mã thông báo trong cả hai chuỗi đầu vào bằng cách sử dụng difflib.ratio. Bạn có thể tìm hiểu thêm về difflib. tỷ lệ ở đây. lông tơ. partial_ratio[] lấy chuỗi ngắn nhất, trong trường hợp này là "Catherine Gitau" [length 14] , sau đó so khớp chuỗi đó với tất cả các chuỗi con có độ dài[14] trong "Catherine M. Gitau" có nghĩa là khớp với "Catherine Gitau" mang lại 100%. Bạn có thể chơi xung quanh với các chuỗi cho đến khi bạn hiểu ý chính

Điều gì sẽ xảy ra nếu chúng ta chuyển hai tên trong một chuỗi? . Hãy xem điểm số

fuzz.ratio["Catherine M Gitau","Gitau Catherine"]#55fuzz.partial_ratio["Catherine M. Gitau","Gitau Catherine"]#60

Chúng tôi thấy rằng cả hai phương pháp đều cho điểm thấp, điều này có thể được khắc phục bằng cách sử dụng phương thức token_sort_ratio[]. Phương pháp này cố gắng giải thích cho các chuỗi tương tự không theo thứ tự. Ví dụ: nếu chúng tôi sử dụng lại các chuỗi trên nhưng sử dụng token_sort_ratio[], chúng tôi sẽ nhận được như sau

fuzz.token_sort_ratio["Catherine Gitau M.", "Gitau Catherine"]#94

Như bạn có thể thấy, chúng tôi nhận được số điểm cao là 94

Phần kết luận

Bài viết này đã giới thiệu So khớp chuỗi mờ, đây là một vấn đề nổi tiếng được xây dựng trên Khoảng cách Leivenshtein. Từ những gì chúng ta đã thấy, nó tính toán xem hai chuỗi giống nhau như thế nào. Điều này cũng có thể được tính toán bằng cách tìm ra số lượng thao tác cần thiết để chuyển đổi chuỗi này sang chuỗi khác. e. g với tên “Barack”, người ta có thể đánh vần là “Barac”. Chỉ cần một thao tác để sửa lỗi này. e thêm chữ K ở cuối. Bạn có thể thử điều này bằng cách sử dụng thư viện stringdist trong R như vậy

Chủ Đề