Tôi đang tìm kiếm một công cụ tìm kiếm văn bản cho loại tìm kiếm văn bản phi truyền thống và tôi muốn được tư vấn về công cụ nào (Lucene, Sphinx, Xapian, hay cái gì khác) phù hợp với tôi, cộng với các gợi ý về nơi bắt đầu.thích ứng với tìm kiếm văn bản cho các thuật toán so sánh đồ thị/phân tử
Tôi có các phân tử được biểu diễn dưới dạng đồ thị (nguyên tử và liên kết). Tôi có cách để enumerate all subgraphs có kích thước tối đa k. Là kỹ thuật, đầu vào là SMILES và đầu ra là SMARTS chuẩn và số lần mỗi biểu đồ con/SMARTS xảy ra. Ví dụ: nếu phân tử đầu vào là "CCO" thì kết quả chuẩn là {"C": 2, "O": 1, "CC": 1, "OC": 1, "CCO": 1 } và nếu phân tử là "SCO" thì kết quả chuẩn là {"C": 1, "S": 1, "O": 1, "CS": 1, "OC": 1, "SCO": 1 }. Đây là những ví dụ nhỏ. Đối với phân tử thực tôi có khoảng 500 từ "", trông giống như "CC (C) O", "CCCOCC", "cn" và "cccc (c) O".
Nhìn vào phân tử như một tập hợp các chuỗi đặc trưng cộng với số đếm có nghĩa là tôi có thể sử dụng công cụ tìm kiếm văn bản để so sánh ở cấp độ văn bản, với hy vọng rằng chúng có ý nghĩa ở cấp độ hóa học.
Ví dụ, tôi có thể sử dụng cosine similarity có lẽ với trọng lượng tf-idf và tìm các phân tử tương tự bằng cách tìm các mẫu con tương tự. Với ví dụ "CCO" và "SCO" ở trên, độ tương tự cosin là (2 * 1 + 1 * 1 + 1 * 1)/sqrt (2 * 2 + 1 * 1 + 1 * 1 + 1 * 1 + 1 * 1)/sqrt (6 * (1 * 1)) = 4/sqrt (8 * 6) = 0,58. Ví dụ khác, nếu tôi muốn tìm các phân tử chứa cấu trúc con "CCS" thì tôi có thể thực hiện tìm kiếm chỉ số đảo ngược nhanh dựa trên số lượng (các phân tử phải có ít nhất 2 "C", ít nhất là 1). "CS", v.v.) trước khi giải quyết vấn đề đẳng cấu đồ thị NP. Nghĩa là, các phương thức dựa trên văn bản có thể hoạt động như một bộ lọc để loại bỏ các sự không phù hợp rõ ràng.
Tôi đang cố gắng tìm ra các giải pháp văn bản tồn tại nhưng có một chút khó khăn. Tôi không cần phải dừng lời, tôi không cần phải bắt đầu, tôi không quan tâm đến thứ tự từ ngữ; Tôi không cần một số tính năng tồn tại. Tôi cần khả năng giữ vectơ từ, vì điều quan trọng là phải biết liệu "C" có xuất hiện 2 lần hay không 3.
Công cụ tìm kiếm văn bản nào phù hợp nhất với tôi? Có vẻ như Lucene, đặc biệt là với công việc ở Mahout. Bạn có thể đề xuất phần nào của tài liệu hướng dẫn hoặc các hướng dẫn có liên quan không? Những cái mà tôi đã tìm thấy có nghĩa là tìm kiếm toàn văn bản, với gốc và các tính năng khác mà tôi không cần.
"Sự giống nhau" có ý nghĩa gì đối với bạn? Ví dụ. nên "C = C" là "tương tự" thành "C-C"? là "N +" tương tự như "N"? "Cco" có tương tự như "c (c) o" không? Có lẽ nếu bạn đưa ra một vài ví dụ tìm kiếm và kết quả họ sẽ tìm thấy nó sẽ giúp chúng tôi biết thêm về những gì bạn muốn (vì chúng tôi không phải là nhà hóa học). – Xodarap
Tôi có từ W_i với số lần lặp lại n_i và i <~ 500. Tôi muốn làm tương tự cosine giữa chúng, theo định nghĩa liên kết. Tôi nghĩ rằng những gì tôi đang tìm kiếm là tiêu chuẩn trong thế giới tìm kiếm tài liệu và hóa học không quan trọng, nhưng tôi sẽ cập nhật với một ví dụ. –
Xem thêm http://stackoverflow.com/questions/2380394/simple-implementation-of-n-gram-tf-idf-and-cosine-similarity-in-python. –