Đôi Metaphone Python

Tiếp tục nơi tôi đã dừng lại trong bài viết trước sau khi khám phá một số thuật toán đối sánh mờ dựa trên chính tả, đã đến lúc chuyển trọng tâm của chúng ta sang đối sánh mờ dựa trên phát âm

Trước khi tiếp tục, chúng ta phải biết một thư viện trong python i. e. Fuzzywuzzy sử dụng nội bộ Khoảng cách Levenshtein để tính toán độ giống nhau giữa 2 chuỗi trên thang điểm từ 0–100, giá trị càng cao, các chuỗi càng giống với 100 là đối sánh chính xác

Nhưng ở vị trí số 1,

  • Yêu cầu của khớp mờ dựa trên ngữ âm là gì?
  • Các thuật toán đối sánh lông tơ dựa trên chính tả có một số nhược điểm không?

Hãy xem xét các trường hợp dưới đây

TRƯỜNG HỢP 1

  • 'Mehul' & 'Mahul' có nên ánh xạ tới cùng một cá nhân được cấp cùng một ID [để mọi gia đình trên thế giới được cấp một ID]?

Có, vì lỗi chính tả phổ biến trong dữ liệu người dùng và có vẻ như đây là một lỗi. Quan sát những gì mờ-wuzzy trở lại

Không tệ

Nhưng chúng ta có thể làm cho nó 100 tôi. một trận đấu chính xác?

TRƯỜNG HỢP 2

  • Có nên coi 'Mehul Gupta' & 'Mehul' là giống nhau nếu chúng được ánh xạ tới cùng một ID [để mỗi gia đình được cấp một ID như trên]?

Xác suất chắc chắn là 90% nếu không muốn nói là 100% rằng họ đại diện cho cùng một cá nhân vì các họ khác nhau trong cùng một gia đình là rất hiếm. Chúng ta hãy xem những gì mờ-wuzzy trả về cho trường hợp này

mới 62

Cái này chắc khoảng 90

Do đó, những cái tên không đầy đủ có thể khiến chúng ta đau đầu

TRƯỜNG HỢP 3

Ngoài ra, còn những chuỗi này 'Mehulllllllllllllllll', 'Mehul' thì sao?

Ối. chỉ 53

Vì vậy, bạn thấy đấy, tồn tại một số trường hợp mà sự trùng khớp chính tả có thể là thảm họa

Trước tiên, các chuỗi này có thể được chuyển đổi thành một mẫu chuẩn trước khi đi theo khoảng cách Levenshtein không? . Trước khi tiếp tục, cần lưu ý rằng các thuật toán bên dưới hoàn toàn dựa trên quy tắc và thảo luận về các quy tắc đó sẽ không có nhiều ý nghĩa [vì có rất nhiều quy tắc cho bất kỳ thuật toán nào đang được sử dụng] nhưng sẽ thảo luận về cơ sở của các quy tắc. Vậy hãy bắt đầu

âm thanh

Soundex là một trong những thuật toán ban đầu được thiết kế để đối sánh dựa trên ngữ âm vẫn được sử dụng trong Điều tra dân số Hoa Kỳ. Về cơ bản, những gì nó làm là tạo mã gồm 4 ký tự [như G123] cho bất kỳ chuỗi nào

  • Ký tự đầu tiên là ký tự đầu tiên của chuỗi. Giống như 'A' trong quả táo
  • 3 ký tự còn lại là chữ số phụ thuộc vào 3 âm tiếp theo của chuỗi. Làm sao?
  • Hãy kiểm tra nó cho các trường hợp trên của chúng tôi

Trường hợp 1. Lỗi chính tả nhỏ ['Mehul' & 'Mahul']

giải quyết dễ dàng

trường hợp 2. Văn bản vô nghĩa ở cuối

Bây giờ, lông tơ. ratio[] sẽ trả về 100 khi chúng tôi tìm thấy kết quả khớp chính xác. Một vấn đề được giải quyết

Trường hợp 3. tên không đầy đủ

Như chúng ta có thể thấy, lông tơ. ratio[] được cải thiện [75] so với bản gốc [67] cho các mã hóa mới được tạo. Do đó, một lựa chọn tốt hơn để lựa chọn

Nhưng làm thế nào Soundex tạo ra các mã hóa này?

Soundex chỉ xem xét 4 âm thanh đầu tiên mà chuỗi có

  • Hãy xem xét 'Gaurav Gupta' từ các ảnh chụp màn hình ở trên. Nó có 6 âm khác nhau ['gau','r','v','gu','p','ta'] nhưng Soundex sẽ xem xét 4 âm đầu tiên là. gau, r, v gu & cung cấp cho chúng tôi mã cho chuỗi
  • Tương tự, ‘Gaurav’ có 3 âm là ‘gau’,’r’,’v’ nên chữ số cuối cùng là 0 [ở G610] là thiếu âm thứ 4
  • Vì vậy, 3 trong số 4 âm thanh phù hợp với 2 chuỗi & do đó các mã được tạo khá giống nhau [G612 & G610] & khác nhau ở ký tự cuối cùng đại diện cho âm thanh thứ 4

Càng xa càng tốt

Nhưng có bất kỳ hạn chế nào khi chỉ xem xét 4 âm thanh đầu tiên không?

Nhiều

Vì 'Muralitharan' có 6 âm thanh. Mu, R, Li, Th, R, N. chỉ có 4 người đầu tiên trợ giúp trong việc hình thành mã, do đó, bất cứ điều gì xuất hiện sau 'Muralith' đều bị bỏ qua, điều này có thể khiến chúng ta rơi vào tình huống như trong trường hợp dưới đây khi cùng tên đầu tiên với họ khác nhau sẽ tạo ra cùng một mã

Do đó, xác định các cá nhân khác nhau là cùng

Ngoài ra, vì mã hóa được tạo chỉ có 4 ký tự, do đó, khả năng có 26[A-Z] X 10 [0–9] X 10 [0–9] X 10 [0–9]=26000 mẫu khác nhau có thể rất nhỏ khi

Do đó, nếu chúng ta có một nhóm gồm 100 nghìn tên, tất cả chúng sẽ được chuyển đổi thành một trong 26 nghìn mẫu và do đó, nhiều xung đột sẽ được quan sát và các tên khác nhau sẽ ánh xạ tới cùng một mẫu có thể không đại diện cho cùng một cá nhân. Vì vậy, một vài điểm trước khi kết thúc

  • Soundex khá tốt với các tên/chuỗi ngắn về độ dài hoặc chỉ tên riêng là quan trọng. Giống như nếu chúng tôi có ID gia đình nhóm tất cả các thành viên trong gia đình lại với nhau, bạn không nên lo lắng về họ trong hầu hết thời gian và do đó Soundex là một vị cứu tinh rõ ràng
  • Nó chỉ nên được sử dụng khi nhóm tên có thể có của một nhóm nhỏ. Giống như, việc xác định một cá nhân bằng cách sử dụng họ có thể dễ dàng nhưng việc xác định các cá nhân sử dụng thành phố hoặc tiểu bang làm ID sẽ gặp rắc rối do có quá nhiều nhóm và do đó xung đột trong mã hóa 4 ký tự được tạo
siêu âm

Metaphone ra đời sau Soundex rất nhiều. Nó, tương tự như Soundex, chuyển đổi bất kỳ chuỗi nào trong mã hóa tùy thuộc vào âm thanh hiện tại và xuất ra mã toàn bảng chữ cái. Ưu điểm chính mà Metaphone có trên Soundex là nó

  • Xem xét toàn bộ chuỗi trong khi tạo mã cho chuỗi & không giống như Soundex chỉ xem xét một vài âm thanh đầu tiên
  • Độ dài mã không bị hạn chế, do đó, ngay cả một nhóm từ lớn cũng có thể được chuẩn hóa mà không có nhiều va chạm

Mã cho chuỗi được tạo như thế nào? . Hãy quan sát hiệu suất của nó trên một vài trường hợp cạnh

Lỗi chính tả nhỏ

Chơi lô tô

Trường hợp mà Soundex đang gặp khó khăn là nó ánh xạ các tên khác nhau như ‘Gaurav Dwivedi’, ‘Gaurav Deshmukh’,’ Gaurav Dravid’ giống nhau. Metaphone cũng giải quyết vấn đề này

Metaphone tạo các bảng mã khác nhau trong đó tên đầu tiên giống nhau nhưng họ khác nhau. Nhưng có một số vấn đề với Metaphone?

Đúng,

Vì nó xem xét toàn bộ chuỗi để tạo mã,

  • Gặp khó khăn với các đuôi Vô nghĩa trong một chuỗi/tên so với Soundex nhưng tốt hơn là chỉ có lông tơ. tỉ lệ[]

  • Đấu tranh với những cái tên không đầy đủ so với Soundex

Metaphone cũng có hai phiên bản nâng cấp

  1. ĐôiMetaphone. Tạo 2 mã hóa cho một chuỗi, một chính và một phụ khác
  2. Metaphone3 không phải là mã nguồn mở do đó có rất ít kiến ​​thức về điều này

Một điều nữa, cả hai thuật toán này đều là thảm họa với các ký tự không phải là bảng chữ cái. Vì thế

  • Metaphone trả về mã hóa trống nếu tất cả các ký tự là số hoặc ký tự đặc biệt, ngược lại nếu chỉ một số ký tự không phải là bảng chữ cái, chúng sẽ bị bỏ qua hoàn toàn

  • Soundex bỏ qua các ký tự như vậy nếu chúng không phải là ký tự đầu tiên của chuỗi, nếu không thì ký tự đầu tiên của mã hóa là ký tự đặc biệt đó

Bây giờ chúng ta đã xem qua cả Soundex & Metaphone, cái nào tốt hơn thì hơi khó nói & hoàn toàn phụ thuộc vào dữ liệu của bạn

Ví dụ: tôi đã làm việc với việc hợp nhất các tên được cung cấp ID gia đình. Do đó, hiếm khi có các họ khác nhau trong một gia đình Ấn Độ với tên chung [như Raj Gupta & Raj Mishra trong cùng một gia đình là một trường hợp hiếm gặp], Soundex có lợi thế lớn so với Metaphone. Mặc dù vậy, Metaphone có thể tốt với các tên tương tự trong một thành phố hoặc tiểu bang nơi việc xem xét tên đầy đủ là bắt buộc

Đôi Metaphone hoạt động như thế nào?

Định nghĩa. Một thuật toán mã hóa các từ tiếng Anh [và các từ nước ngoài thường được nghe ở Hoa Kỳ] theo ngữ âm bằng cách rút gọn chúng thành tổ hợp gồm 12 phụ âm . Nó trả về hai mã nếu một từ có hai cách phát âm hợp lý, chẳng hạn như một từ nước ngoài.

Làm cách nào để sử dụng Soundex trong Python?

Triển khai Soundex . Lưu chữ cái đầu tiên. Step 1: Save the first letter. Xóa tất cả các lần xuất hiện của a, e, i, o, u, y, h, w. # Bước 3. Thay thế tất cả các chữ số giống nhau liền kề bằng một chữ số. # Bước 5. Nối thêm 3 số 0 nếu kết quả chứa ít hơn 3 chữ số.

Metaphone3 hoạt động như thế nào?

Thuật toán Metaphone hoạt động bằng cách loại bỏ các chữ cái và ký tự không phải tiếng Anh khỏi từ đang được xử lý. Tiếp theo, tất cả các nguyên âm cũng bị loại bỏ trừ khi từ bắt đầu bằng một nguyên âm đầu tiên, trong trường hợp đó, tất cả các nguyên âm ngoại trừ nguyên âm đầu tiên đều bị loại bỏ

Ưu điểm chính của chức năng Metaphone so với chức năng Soundex là gì?

Một trong những ưu điểm chính của Metaphone là nó đã mã hóa một số nhóm chữ nhất định cùng nhau , trong khi Soundex chỉ mã hóa một chữ cái tại một thời điểm. Chẳng hạn, từ "GNU" được mã hóa trong Soundex là 'G500' cho biết 'G' và 'N' được phát âm riêng.

Chủ Đề