Tôi đang làm việc trên một ứng dụng cố gắng khớp một tập hợp các tên thực thể "lộn xộn" có khả năng để "sạch" tên thực thể trong danh sách tham chiếu. Tôi đã làm việc với khoảng cách chỉnh sửa và các thuật toán kết hợp mờ phổ biến khác, nhưng tôi tự hỏi liệu có cách tiếp cận nào tốt hơn cho phép trọng số hạn hay không, như vậy các thuật ngữ phổ biến được giảm cân trong kết quả mờ.chuỗi mờ phù hợp với trọng số kỳ hạn
Hãy xem ví dụ này, sử dụng thư viện difflib
của Python. Tôi đang làm việc với các tên tổ chức, có nhiều thành phần tiêu chuẩn hóa chung và do đó không thể được sử dụng để phân biệt giữa các thực thể.
from difflib import SequenceMatcher
e1a = SequenceMatcher(None, "ZOECON RESEARCH INSTITUTE",
"LONDON RESEARCH INSTITUTE")
print e1a.ratio()
0.88
e1b = SequenceMatcher(None, "ZOECON", "LONDON")
print e1b.ratio()
0.333333333333
e2a = SequenceMatcher(None, "WORLDWIDE SEMICONDUCTOR MANUFACTURING CORP",
"TAIWAN SEMICONDUCTOR MANUFACTURING CORP")
print e2a.ratio()
0.83950617284
e2b = SequenceMatcher(None, "WORLDWIDE",
"TAIWAN")
print e2b.ratio()
0.133333333333
Cả hai ví dụ điểm số cao trên chuỗi đầy đủ vì RESEARCH
, INSTITUTE
, SEMICONDUCTOR
, MANUFACTURING
, và CORP
là tần số cao, điều khoản chung trong nhiều tên tổ chức. Tôi đang tìm kiếm bất kỳ ý tưởng nào về cách tích hợp các tần số cụm vào kết hợp chuỗi mờ (không nhất thiết phải sử dụng difflib
), sao cho điểm số không bị ảnh hưởng bởi các thuật ngữ phổ biến và kết quả có thể trông giống như "e1b" và " e2b "ví dụ.
Tôi nhận ra rằng tôi có thể tạo danh sách "thường xuyên" và loại trừ những từ so sánh, nhưng tôi muốn sử dụng tần số nếu có thể bởi vì ngay cả những từ phổ biến thêm một số thông tin và điểm cắt bất kỳ danh sách nào cũng sẽ tùy ý.
[Whoosh] (https://bitbucket.org/mchaput/whoosh/wiki/Home) trông thú vị, đặc biệt là ['score'] (http://packages.python.org/Whoosh/api/scoring. html) và [whoosh.reading.TermInfo] (http://packages.python.org/Whoosh/api/reading.html?highlight=frequency#whoosh.reading.TermInfo) 'doc_frequency() 'và' weight() ' –
Bạn có quyền truy cập vào toàn bộ tập hợp các tên phù hợp với mờ không? Nếu vậy, bạn có thể sử dụng tf-idf để huấn luyện một mô hình phù hợp mờ. –
Bạn có thể chia các chuỗi và tính toán sự khác biệt trên mỗi phần. Điều này sẽ giúp bạn trong các tình huống _some_ nơi bạn có cùng tên nhưng chỉ với một từ khác biệt. Nhưng điều này có lẽ không đủ mạnh cho những gì bạn muốn làm. – Bakuriu