Hướng dẫn edit distance python nltk - chỉnh sửa khoảng cách python nltk

________ 14 ________ 15 (S1, S2, hoán vị = false) [Nguồn] ¶(s1, s2, transpositions=False)[source]

Tính toán khoảng cách chỉnh sửa Levenshtein giữa hai chuỗi. Khoảng cách chỉnh sửa là số lượng ký tự cần được thay thế, chèn hoặc xóa, để biến S1 thành S2. Ví dụ, việc biến đổi Rain Rain thành Shine Shine, yêu cầu ba bước, bao gồm hai lần thay thế và một lần chèn: Rain Rain -> Các hoạt động này có thể đã được thực hiện trong các đơn đặt hàng khác, nhưng ít nhất ba bước là cần thiết.

Điều này cũng tùy chọn cho phép các chỉnh sửa chuyển vị (ví dụ: ab ab ab ->

Parameters:
  • S2 (STR) - Các chuỗi sẽ được phân tích (str) – The strings to be analysed
  • Chuyển vị (bool) - có cho phép các chỉnh sửa chuyển vị (bool) – Whether to allow transposition edits

: rtype int

nltk.metrics.distance.demo () [nguồn] ¶

NLTK.Metrics.Distance Module¶

Số liệu khoảng cách.

  1. Tính khoảng cách giữa hai mục (thường là chuỗi). Như các số liệu, chúng phải đáp ứng ba yêu cầu sau:

  2. D (A, A) = 0

  3. d (a, b)> = 0

D (A, C)edit_distance(s1, s2, substitution_cost=1, transpositions=False)[source]

nltk.metrics.distance.edit_distance (s1, s2, thay thế_cost = 1, hoán vị = false) [nguồn] ¶

Tính toán khoảng cách chỉnh sửa Levenshtein giữa hai chuỗi. Khoảng cách chỉnh sửa là số lượng ký tự cần được thay thế, chèn hoặc xóa, để biến S1 thành S2. Ví dụ, việc biến đổi Rain Rain thành Shine Shine, yêu cầu ba bước, bao gồm hai lần thay thế và một lần chèn: Rain Rain -> Các hoạt động này có thể đã được thực hiện trong các đơn đặt hàng khác, nhưng ít nhất ba bước là cần thiết.

Cho phép chỉ định chi phí của các chỉnh sửa thay thế (ví dụ:, A A -

Điều này cũng tùy chọn cho phép các chỉnh sửa chuyển vị (ví dụ: ab ab ab ->
  • Thông số (str) – The strings to be analysed

  • S2 (STR) - Các chuỗi sẽ được phân tích (bool) – Whether to allow transposition edits

Chuyển vị (bool) - có cho phép các chỉnh sửa chuyển vị

int

Loại trở lạiedit_distance_align(s1, s2, substitution_cost=1)[source]

nltk.metrics.distance.edit_distance_align (s1, s2, thay thế_cost = 1) [nguồn] ¶

Trong trường hợp sắp xếp nhiều khoảng cách tối thiểu hợp lệ, Backtrace có ưu tiên hoạt động sau:

  1. Bỏ qua ký tự S1

  2. Bỏ qua ký tự S2

  3. Thay thế các ký tự S1 và S2

Backtrace được thực hiện theo thứ tự chuỗi ngược.

Hàm này không hỗ trợ chuyển vị.

Thông số

S2 (STR) - Các chuỗi được căn chỉnh (str) – The strings to be aligned

Loại trở lại

Danh sách [tuple (int, int)]

nltk.metrics.distance.binary_distance (Label1, Label2) [Nguồn] ¶binary_distance(label1, label2)[source]

Kiểm tra bình đẳng đơn giản.

0,0 Nếu các nhãn giống hệt nhau, 1.0 nếu chúng khác nhau.

>>> from nltk.metrics import binary_distance
>>> binary_distance(1,1)
0.0

>>> binary_distance(1,3)
1.0

nltk.metrics.distance.jaccard_distance (Label1, Label2) [Nguồn] ¶jaccard_distance(label1, label2)[source]

Số liệu khoảng cách so sánh sự giống nhau.

nltk.metrics.distance.masi_distance (Label1, Label2) [Nguồn] ¶masi_distance(label1, label2)[source]

Số liệu khoảng cách có tính đến thỏa thuận một phần khi nhiều nhãn được chỉ định.

>>> from nltk.metrics import masi_distance
>>> masi_distance(set([1, 2]), set([1, 2, 3, 4]))
0.665

Passonneau 2006, Thỏa thuận đo lường về các mục có giá trị được đặt (MASI) cho chú thích ngữ nghĩa và thực dụng.

nltk.metrics.distance.interval_distance (Label1, Label2) [Nguồn] ¶interval_distance(label1, label2)[source]

Số liệu khoảng cách khoảng cách khoảng thời gian của Krippendorff

>>> from nltk.metrics import interval_distance
>>> interval_distance(1,10)
81

Krippendorff 1980, Phân tích nội dung: Giới thiệu về phương pháp của nó

nltk.metrics.distance.presence (nhãn) [Nguồn] ¶presence(label)[source]

Chức năng bậc cao để kiểm tra sự hiện diện của một nhãn đã cho

nltk.metrics.distance.fractional_presence (nhãn) [nguồn] nltk.metrics.distance.custom_distance (file) [nguồn] nltk.metrics.distance.jaro_similarity (s1, s2)fractional_presence(label)[source]nltk.metrics.distance.custom_distance(file)[source]nltk.metrics.distance.jaro_similarity(s1, s2)[source]

Tính toán sự tương đồng của Jaro giữa 2 chuỗi từ:

Matthew A. Jaro (1989). Những tiến bộ trong phương pháp liên kết kỷ lục như được áp dụng cho cuộc điều tra dân số năm 1985 của Tampa Florida. Tạp chí của Hiệp hội thống kê Hoa Kỳ. 84 (406): 414-20.

Khoảng cách Jaro giữa là tối thiểu không. của các chuyển đổi đơn lẻ cần thiết để thay đổi một từ này sang từ khác. Công thức tương tự Jaro từ https://en.wikipedia.org/wiki/jaro%E2%80%93Winkler_distance:

>>> binary_distance(1,3)
1.0
6

ở đâu
  • | s_i | là độ dài của chuỗi s_i

  • m là không. của các ký tự phù hợp

  • T là một nửa không. của các chuyển đổi có thể.

nltk.metrics.distance.jaro_winkler_similarity (S1, S2, P = 0.1, MAX_L = 4) [Nguồn] ¶jaro_winkler_similarity(s1, s2, p=0.1, max_l=4)[source]

Khoảng cách Jaro Winkler là một phần mở rộng của sự tương đồng Jaro trong:

William E. Winkler. 1990. Các số liệu so sánh chuỗi và các quy tắc quyết định nâng cao trong mô hình liên kết hồ sơ Fellegi-Sunter. Kỷ yếu của phần về phương pháp nghiên cứu khảo sát. Hiệp hội thống kê Mỹ: 354-359.

như vậy mà:

jaro_winkler_sim = jaro_sim + (l * p * (1 - jaro_sim)))

where,

  • jaro_sim là đầu ra từ sự tương đồng của jaro,

    Xem jaro_similarity ()

  • l là độ dài của tiền tố chung khi bắt đầu chuỗi
    • Việc triển khai này cung cấp một phần trên cho giá trị L

      Để giữ các tiền tố. Một giá trị chung của phần trên này là 4.

  • P là yếu tố tỷ lệ không đổi so với các tiền tố phổ biến cao hơn.

    Sự tương đồng của Jaro-Winkler sẽ nằm trong phạm vi [0, 1], với mức tối đa đó (p)

Kiểm tra bằng cách sử dụng đầu ra từ https://www.census.gov/srd/papers/pdf/rr93-8.pdf từ Bảng 5 so sánh các bộ so sánh chuỗi được định đổi lại giữa 0 đến 1 1

>>> winkler_examples = [("billy", "billy"), ("billy", "bill"), ("billy", "blily"),
... ("massie", "massey"), ("yvette", "yevett"), ("billy", "bolly"), ("dwayne", "duane"),
... ("dixon", "dickson"), ("billy", "susan")]

>>> winkler_scores = [1.000, 0.967, 0.947, 0.944, 0.911, 0.893, 0.858, 0.853, 0.000]
>>> jaro_scores =    [1.000, 0.933, 0.933, 0.889, 0.889, 0.867, 0.822, 0.790, 0.000]

Một cách để phù hợp với các giá trị trên giấy Winkler, là cung cấp một hệ số tỷ lệ P khác nhau cho các cặp chuỗi khác nhau, ví dụ:

>>> p_factors = [0.1, 0.125, 0.20, 0.125, 0.20, 0.20, 0.20, 0.15, 0.1]

>>> for (s1, s2), jscore, wscore, p in zip(winkler_examples, jaro_scores, winkler_scores, p_factors):
...     assert round(jaro_similarity(s1, s2), 3) == jscore
...     assert round(jaro_winkler_similarity(s1, s2, p=p), 3) == wscore

Kiểm tra bằng cách sử dụng các đầu ra từ https://www.census.gov/srd/papers/pdf/rr94-5.pdf từ Bảng Bảng 2.1. So sánh các bộ so sánh chuỗi bằng tên cuối cùng, tên và tên đường phố

>>> winkler_examples = [('SHACKLEFORD', 'SHACKELFORD'), ('DUNNINGHAM', 'CUNNIGHAM'),
... ('NICHLESON', 'NICHULSON'), ('JONES', 'JOHNSON'), ('MASSEY', 'MASSIE'),
... ('ABROMS', 'ABRAMS'), ('HARDIN', 'MARTINEZ'), ('ITMAN', 'SMITH'),
... ('JERALDINE', 'GERALDINE'), ('MARHTA', 'MARTHA'), ('MICHELLE', 'MICHAEL'),
... ('JULIES', 'JULIUS'), ('TANYA', 'TONYA'), ('DWAYNE', 'DUANE'), ('SEAN', 'SUSAN'),
... ('JON', 'JOHN'), ('JON', 'JAN'), ('BROOKHAVEN', 'BRROKHAVEN'),
... ('BROOK HALLOW', 'BROOK HLLW'), ('DECATUR', 'DECATIR'), ('FITZRUREITER', 'FITZENREITER'),
... ('HIGBEE', 'HIGHEE'), ('HIGBEE', 'HIGVEE'), ('LACURA', 'LOCURA'), ('IOWA', 'IONA'), ('1ST', 'IST')]

>>> jaro_scores =   [0.970, 0.896, 0.926, 0.790, 0.889, 0.889, 0.722, 0.467, 0.926,
... 0.944, 0.869, 0.889, 0.867, 0.822, 0.783, 0.917, 0.000, 0.933, 0.944, 0.905,
... 0.856, 0.889, 0.889, 0.889, 0.833, 0.000]

>>> binary_distance(1,3)
1.0
0

Một cách để phù hợp với các giá trị trên giấy Winkler, là cung cấp một hệ số tỷ lệ P khác nhau cho các cặp chuỗi khác nhau, ví dụ:

>>> binary_distance(1,3)
1.0
1

>>> binary_distance(1,3)
1.0
2

Kiểm tra bằng cách sử dụng các đầu ra từ https://www.census.gov/srd/papers/pdf/rr94-5.pdf từ Bảng Bảng 2.1. So sánh các bộ so sánh chuỗi bằng tên cuối cùng, tên và tên đường phố

>>> binary_distance(1,3)
1.0
3

Trường hợp thử nghiệm này chứng minh rằng đầu ra của sự tương tự Jaro-Winkler phụ thuộc vào sản phẩm l * p chứ không phải trên sản phẩm max_l * p. Ở đây sản phẩm max_l * p> 1 tuy nhiên sản phẩm l * pdemo()[source]