Lucene তে Scoring কি এবং কিভাবে কাজ করে?

Scoring এবং Ranking - লুসিন (Lucene) - Java Technologies

355

Lucene হল একটি উচ্চ পারফরম্যান্স, full-text search লাইব্রেরি যা Java প্রোগ্রামিং ভাষায় তৈরি করা হয়েছে। এটি ডকুমেন্ট ইনডেক্সিং এবং টেক্সট অনুসন্ধানের জন্য ব্যবহৃত হয়। Lucene Scoring এমন একটি প্রক্রিয়া যা অনুসন্ধান ফলাফলের জন্য প্রতিটি ডকুমেন্টের র‌্যাঙ্ক বা স্কোর নির্ধারণ করে, এবং এটি অনুসন্ধান ফলাফল প্রদর্শন করার ক্ষেত্রে গুরুত্বপূর্ণ ভূমিকা পালন করে। Scoring এর মাধ্যমে, Lucene অনুসন্ধানে সবচেয়ে প্রাসঙ্গিক ডকুমেন্টগুলোকে শীর্ষে তুলে আনে।

এই টিউটোরিয়ালে, আমরা Lucene Scoring এর ধারণা এবং কিভাবে এটি কাজ করে তা বিস্তারিতভাবে আলোচনা করব।


১. Lucene Scoring Overview

Lucene Scoring হল একটি প্রক্রিয়া যার মাধ্যমে Lucene অনুসন্ধান ফলাফলের জন্য একটি স্কোর গণনা করে। স্কোরটি ডকুমেন্টের প্রাসঙ্গিকতা বা relevance নির্দেশ করে, অর্থাৎ, একটি ডকুমেন্ট অনুসন্ধান কোয়েরি (query) এর সাথে কতটা সম্পর্কিত। Lucene Scoring সিস্টেমটি সাধারণত TF-IDF (Term Frequency - Inverse Document Frequency) এবং Normalization ব্যবহার করে স্কোর হিসাব করে।

২. Lucene Scoring এর মূল উপাদানসমূহ

Lucene তে Scoring গণনা করার জন্য প্রধানত দুটি মূল উপাদান ব্যবহার করা হয়:

  1. Term Frequency (TF):

    • এটি একটি নির্দিষ্ট টার্ম (শব্দ) এর কতবার উপস্থিতি একটি ডকুমেন্টে তা নির্দেশ করে।
    • টার্মের ফ্রিকোয়েন্সি যত বেশি হবে, ডকুমেন্টের স্কোর তত বেশি হবে।

    Formula:

    TF(t,d)=Number of occurrences of term t in document dTotal number of terms in document d\text{TF}(t, d) = \frac{\text{Number of occurrences of term t in document d}}{\text{Total number of terms in document d}}

  2. Inverse Document Frequency (IDF):

    • এটি একটি টার্মের গুরুত্ব নির্ধারণ করে, এবং প্রক্রিয়াটি টার্মের কমনেস বা রেয়ারনেস এর উপর ভিত্তি করে স্কোরের মান দেয়।
    • যদি কোনো টার্ম খুব বেশি ডকুমেন্টে থাকে, তার স্কোর কম হয়। আবার, যদি টার্মটি খুব কম ডকুমেন্টে থাকে, তার স্কোর বেশি হয়।

    Formula:

    IDF(t)=log(Ndf(t))\text{IDF}(t) = \log \left(\frac{N}{df(t)}\right)

    যেখানে, NN হল ডকুমেন্টের মোট সংখ্যা এবং df(t)df(t) হল টার্ম tt-এর উপস্থিতি সংখ্যা।

  3. Normalization:
    • এটি ডকুমেন্টের স্কোরকে সমন্বয় করে, যাতে খুব বড় বা ছোট ডকুমেন্টগুলির স্কোর সঠিকভাবে প্রতিফলিত হয়।

৩. Lucene Scoring Formula

Lucene সাধারণত TF-IDF মডেল ব্যবহার করে স্কোর গণনা করে, তবে এটি কাস্টম স্কোরিং মেকানিজম ব্যবহার করারও সুযোগ দেয়। একটি সাধারণ Lucene Scoring Formula হবে:

Score(d,q)=tqTF(t,d)×IDF(t)×Field Weight(t)\text{Score}(d, q) = \sum_{t \in q} \text{TF}(t, d) \times \text{IDF}(t) \times \text{Field Weight}(t)

এখানে:

  • Score(d, q): ডকুমেন্ট dd এবং কোয়েরি qq এর মধ্যে স্কোর।
  • TF(t, d): ডকুমেন্ট dd তে টার্ম tt-এর ফ্রিকোয়েন্সি।
  • IDF(t): টার্ম tt-এর ইনভার্স ডকুমেন্ট ফ্রিকোয়েন্সি।
  • Field Weight: যদি একটি ডকুমেন্টে বিভিন্ন ফিল্ড থাকে (যেমন, title, content), তবে Lucene স্কোর গণনা করার সময় প্রতিটি ফিল্ডের গুরুত্ব (weight) নির্ধারণ করে।

৪. Lucene Scoring Example

ধরা যাক, আপনার কাছে একটি ডকুমেন্ট এবং একটি কোয়েরি আছে:

Document:

Lucene is a powerful text search library. It is used for indexing and searching text in applications.

Query:

text search

এখন, Lucene এই কোয়েরি থেকে দুটি টার্ম (text এবং search) বের করবে এবং তার TF এবং IDF ব্যবহার করে স্কোর গণনা করবে। যদি text টার্ম ডকুমেন্টে 2 বার এবং search 1 বার উপস্থিত থাকে, তবে TF হিসাব করা হবে, এবং IDF এর মাধ্যমে তাদের গুরুত্ব বিবেচনা করা হবে।


৫. Lucene Scoring Algorithm

Lucene তে স্কোরিং সাধারণত BooleanQuery এবং PhraseQuery এর মতো বিভিন্ন কোয়েরি টাইপে আলাদা হতে পারে। তবে সাধারণত এটি TF-IDF ভিত্তিক স্কোরিং ব্যবহার করে।

Example: BooleanQuery Scoring

ধরা যাক, আপনি একটি BooleanQuery ব্যবহার করছেন, যেখানে দুটি টার্ম রয়েছে: lucene এবং search. যদি lucene ডকুমেন্টের মধ্যে 3 বার এবং search 1 বার উপস্থিত থাকে, তাহলে:

  • TF(lucene) = 3
  • TF(search) = 1

এখন IDF হিসাব করার পরে, স্কোর হবে:

Score=(TF(lucene)×IDF(lucene))+(TF(search)×IDF(search))\text{Score} = (\text{TF(lucene)} \times \text{IDF(lucene)}) + (\text{TF(search)} \times \text{IDF(search)})


৬. Lucene Scoring Customization

Lucene আপনাকে স্কোরিং কাস্টমাইজ করার জন্য একটি Custom Similarity ক্লাস তৈরি করার সুযোগ দেয়, যেখানে আপনি নিজস্ব scoring logic নির্ধারণ করতে পারেন।

Example: Custom Similarity

import org.apache.lucene.search.similarities.Similarity;
import org.apache.lucene.index.FieldInvertState;
import org.apache.lucene.search.similarities.DefaultSimilarity;

public class CustomSimilarity extends Similarity {
    private final Similarity delegate = new DefaultSimilarity();

    @Override
    public float tf(float freq) {
        return delegate.tf(freq) * 2; // Custom scaling factor
    }

    @Override
    public float idf(int docFreq, int docCount) {
        return delegate.idf(docFreq, docCount); // Custom IDF logic can be added here
    }

    @Override
    public float lengthNorm(FieldInvertState state) {
        return delegate.lengthNorm(state);
    }
}

এখানে, tf() এবং idf() মেথডে কাস্টম লজিক প্রয়োগ করা হয়েছে যা Lucene স্কোরিং এর বেসিক ফর্মুলাতে কিছু পরিবর্তন এনেছে।


৭. Lucene Scoring এবং Relevance

Lucene তে scoring এর মাধ্যমে ডকুমেন্টের relevance (প্রাসঙ্গিকতা) নির্ধারণ করা হয়। স্কোর যত বেশি হবে, ডকুমেন্টটি কোয়েরির সাথে তত বেশি সম্পর্কিত এবং সেটি অনুসন্ধান ফলাফলের শীর্ষে থাকবে। Lucene তে স্কোরিং numeric ভ্যালু দিয়ে রিটার্ন করা হয়, যা ডকুমেন্টের প্রাসঙ্গিকতার পরিমাপ।


সারাংশ

Lucene Scoring হল একটি গুরুত্বপূর্ণ প্রক্রিয়া যা অনুসন্ধান ফলাফলের জন্য ডকুমেন্টের প্রাসঙ্গিকতা নির্ধারণ করে। এটি TF-IDF এবং Normalization ভিত্তিক স্কোরিং মেকানিজম ব্যবহার করে এবং বিভিন্ন কোয়েরি টাইপের জন্য আলাদা স্কোরিং পদ্ধতি প্রয়োগ করা হয়। Lucene তে কাস্টম স্কোরিং সেটআপ করতে Custom Similarity ব্যবহার করা যায়, যা আপনার অনুসন্ধান ফলাফলকে আরও সূক্ষ্মভাবে নিয়ন্ত্রণ করতে সহায়তা করে।


Content added By
Promotion

Are you sure to start over?

Loading...