Xác định mức độ tương tự của một chuỗi đã cho với một chuỗi các chuỗi


10

Tôi không chắc câu hỏi này có thuộc về đây không và tôi xin lỗi nếu không. Những gì tôi đang tìm kiếm là phát triển một cách lập trình, trong đó tôi có thể xác định một cách chính xác liệu một chuỗi nhất định có "thuộc" trong một chuỗi các chuỗi hay không. Ví dụ: nếu tôi có túi 10.000 tên thành phố của Hoa Kỳ và sau đó tôi có chuỗi "Philadelphia", tôi muốn có một số đo định lượng về khả năng 'Philadelphia' là tên thành phố của Hoa Kỳ dựa trên tên thành phố Hoa Kỳ mà tôi đã biết. Mặc dù tôi biết rằng tôi sẽ không thể tách tên thành phố thật khỏi tên thành phố giả trong bối cảnh này, nhưng ít nhất tôi sẽ mong đợi có các chuỗi như "123,75" và "Con cáo đỏ nhanh chóng nhảy qua những con chó nâu lười biếng" được loại trừ một số ngưỡng.

Để bắt đầu, tôi đã xem Levenshtein Khoảng cách và tìm hiểu một chút về cách áp dụng cho các vấn đề ít nhất là tương tự như vấn đề tôi đang cố gắng giải quyết. Một ứng dụng thú vị mà tôi tìm thấy là phát hiện đạo văn, với một bài viết mô tả khoảng cách Levenshtein được sử dụng với thuật toán Smith-Waterman đã sửa đổi để chấm điểm các bài báo dựa trên khả năng chúng là phiên bản được viết bằng giấy của một tờ giấy cơ bản. Câu hỏi của tôi là nếu bất cứ ai có thể chỉ cho tôi đi đúng hướng với các thuật toán hoặc phương pháp đã được thiết lập khác có thể giúp tôi. Tôi có cảm giác rằng đây có thể là một vấn đề mà ai đó trong quá khứ đã cố gắng giải quyết nhưng cho đến nay Google-fu của tôi đã làm tôi thất bại.


Nếu bạn có sẵn các ví dụ tích cực và tiêu cực, thì bạn có thể thử đào tạo một bộ phân loại. Đối với các tính năng, để bắt đầu, tôi sẽ thử lấy một số thống kê đơn giản như các số liệu được đề xuất bởi Yuval Filmus.
Nick


Tên thành phố dường như là một ví dụ xấu; họ ở khắp mọi nơi, đặc biệt là ở Mỹ. Ở đây, tra cứu bảng dường như là cách hiệu quả nhất. Là vấn đề của bạn nói chung hơn?
Raphael

Câu trả lời:


5

Một số thống kê tốt hơn để nghĩ đến là độ dài từ và phân tích -gram. Đối với độ dài từ, bạn có thể thu thập số liệu thống kê về phân phối độ dài từ của tên thành phố và so sánh nó với độ dài của những gì bạn nhận được. phân tích n -gram xem xét sự phân phối các chuỗi của n chữ cái trong văn bản mẫu của bạn (giả sử n = 2 ). Cả hai cách tiếp cận có thể được kết hợp.nnnn= =2

Dựa vào các heuristic, bạn có thể sử dụng khả năng để có được điểm số (hy vọng) sẽ cao hơn cho dữ liệu mẫu của bạn so với văn bản khác. Để xác định ngưỡng hợp lý, bạn có thể thực hiện xác thực chéo. Chọn một tập hợp các cụm từ mẫu không phải là tên thành phố. Chia tên thành phố thành hai phần, một phần lớn (nói 80%) và một phần nhỏ (nói 20%). Huấn luyện mô hình của bạn trên phần lớn (nghĩa là thu thập số liệu thống kê trên phần lớn), sau đó đánh giá mô hình của bạn trên phần nhỏ và trên mẫu các cụm từ xấu. Xác định xem có một ngưỡng hợp lý nào vượt qua hầu hết các tên thành phố không, nhưng chỉ một lượng nhỏ các cụm từ xấu.


Cảm ơn. Tôi đã bắt đầu tìm đến n-gram nhưng không biết liệu tôi có hoàn toàn lạc hậu hay không vì vậy tôi rất vui vì bạn đã đề cập đến nó. Độ dài từ nghe cũng thú vị và điều mà tôi chưa từng nghĩ tới.
Andrew

Bạn có thể muốn thêm tần số ký tự cho điều này. Đặc biệt, điều đó sẽ thoát khỏi tất cả các công cụ số lượng. Một lợi thế là tần số như vậy là các vectơ số có thể được đào tạo / nhận biết trong một số mô hình thống kê.
Raphael

1
1n+1n
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.