TF-IDF এবং BM25 এর মাধ্যমে Document Ranking

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

258

Lucene হল একটি শক্তিশালী ওপেন সোর্স টেক্সট সার্চ ইঞ্জিন লাইব্রেরি যা Java প্রোগ্রামিং ভাষায় লেখা হয়েছে। এটি ব্যবহৃত হয় তথ্য খোঁজার (searching) জন্য এবং ডকুমেন্ট র‌্যাঙ্কিংয়ের জন্য বিশেষভাবে ডিজাইন করা হয়েছে। TF-IDF (Term Frequency-Inverse Document Frequency) এবং BM25 হল দুটি জনপ্রিয় র‌্যাঙ্কিং অ্যালগরিদম, যেগুলি লুসিনের মাধ্যমে ডকুমেন্ট র‌্যাঙ্কিং করতে ব্যবহৃত হয়।

এই টিউটোরিয়ালে, আমরা LuceneTF-IDF এবং BM25 এর মাধ্যমে ডকুমেন্ট র‌্যাঙ্কিং কিভাবে কাজ করে তা আলোচনা করব।


১. TF-IDF (Term Frequency-Inverse Document Frequency) এর ধারণা

TF-IDF হল একটি টেক্সট মিনিং টেকনিক যা একটি শব্দের গুরুত্ব নির্ধারণে ব্যবহৃত হয়। এটি দুটি অংশে বিভক্ত:

  1. Term Frequency (TF): এটি একটি নির্দিষ্ট ডকুমেন্টে একটি শব্দ কতবার এসেছে তা পরিমাপ করে। সাধারণত, এটি ওই শব্দটির রূপান্তরিত সংখ্যা হিসেবে গণনা করা হয়।

    TF=শব্দের উপস্থিতি সংখ্যাডকুমেন্টের মোট শব্দ সংখ্যা\text{TF} = \frac{\text{শব্দের উপস্থিতি সংখ্যা}}{\text{ডকুমেন্টের মোট শব্দ সংখ্যা}}

  2. Inverse Document Frequency (IDF): এটি একটি শব্দের গুরুত্ব নির্দেশ করে, যা প্রতিটি ডকুমেন্টে শব্দটির উপস্থিতির উপর ভিত্তি করে। যদি একটি শব্দ সমস্ত ডকুমেন্টে উপস্থিত থাকে, তাহলে তার IDF কম হবে, এবং যদি এটি খুব কম ডকুমেন্টে উপস্থিত থাকে, তাহলে তার IDF বেশি হবে।

    IDF=log(মোট ডকুমেন্ট সংখ্যাডকুমেন্ট সংখ্যা যেখানে শব্দটি রয়েছে)\text{IDF} = \log\left(\frac{\text{মোট ডকুমেন্ট সংখ্যা}}{\text{ডকুমেন্ট সংখ্যা যেখানে শব্দটি রয়েছে}}\right)

TF-IDF হল TF এবং IDF এর গুণফল। এটি একটি শব্দের গুরুত্ব পরিমাপ করতে ব্যবহৃত হয়, এবং এটি একাধিক ডকুমেন্টের মধ্যে শব্দের অনন্যতা এবং গুরুত্ব নির্ধারণ করে।

TF-IDF=TF×IDF\text{TF-IDF} = \text{TF} \times \text{IDF}


২. BM25 এর ধারণা

BM25 হল একটি উন্নত র‌্যাঙ্কিং ফাংশন যা TF-IDF এর একটি উন্নত সংস্করণ। এটি একটি ** probabilistic information retrieval model**, যা ডকুমেন্টের র‌্যাঙ্কিং নির্ধারণে ব্যবহৃত হয়। BM25 মূলত term frequency (TF) এবং document length normalization এর একটি ভার্সন। BM25 অ্যালগরিদমে কিছু অতিরিক্ত ফ্যাক্টর ব্যবহৃত হয়, যেমন k1 (term frequency tuning parameter) এবং b (document length normalization).

BM25 এর মূল সমীকরণ হল:

Score(d,q)=i=1nIDF(wi)×f(wi,d)×(k1+1)f(wi,d)+k1×(1b+b×davgdoclen)\text{Score}(d, q) = \sum_{i=1}^{n} \text{IDF}(w_i) \times \frac{f(w_i, d) \times (k_1 + 1)}{f(w_i, d) + k_1 \times (1 - b + b \times \frac{|d|}{\text{avgdoclen}})}

এখানে:

  • IDF(w_i): শব্দের ইনভার্স ডকুমেন্ট ফ্রিকোয়েন্সি।
  • f(w_i, d): ডকুমেন্ট d তে শব্দ w_i এর ফ্রিকোয়েন্সি।
  • k_1: শব্দের পুনরাবৃত্তির প্রভাব কন্ট্রোল করার জন্য একটি কনস্ট্যান্ট (সাধারণত 1.2 থেকে 2 এর মধ্যে থাকে)।
  • b: ডকুমেন্টের দৈর্ঘ্য নির্ধারণকারী ফ্যাক্টর।
  • |d|: ডকুমেন্ট d এর শব্দ সংখ্যা।
  • avgdoclen: সমস্ত ডকুমেন্টের গড় দৈর্ঘ্য।

৩. Lucene তে TF-IDF এবং BM25 ব্যবহার

Lucene ডিফল্টভাবে TF-IDF ব্যবহার করে র‌্যাঙ্কিং করার জন্য, তবে Lucene 7.0 থেকে BM25 র‌্যাঙ্কিং ফাংশনটিও অন্তর্ভুক্ত করা হয়েছে। আপনি LuceneTF-IDF বা BM25 ব্যবহার করতে পারেন, এবং এটি ডকুমেন্ট অনুসন্ধানে ব্যবহৃত হয়।

৩.১ Lucene তে TF-IDF ব্যবহার

Lucene এ TF-IDF এর মাধ্যমে ডকুমেন্ট র‌্যাঙ্কিং করতে, এটি স্বয়ংক্রিয়ভাবে ব্যবহৃত হয়। আপনি IndexSearcher এবং Query ব্যবহার করে টেক্সট অনুসন্ধান এবং র‌্যাঙ্কিং করতে পারবেন।

উদাহরণ:

// Create an index and searcher
IndexReader reader = DirectoryReader.open(FSDirectory.open(Paths.get("indexPath")));
IndexSearcher searcher = new IndexSearcher(reader);

// Define the query
Query query = new TermQuery(new Term("content", "lucene"));

// Perform the search
TopDocs topDocs = searcher.search(query, 10); // Top 10 results

// Display results
for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
    Document doc = searcher.doc(scoreDoc.doc);
    System.out.println("Document: " + doc.get("filename") + " Score: " + scoreDoc.score);
}

এই উদাহরণে, Lucene ডিফল্টভাবে TF-IDF ব্যবহার করে TermQuery এর মাধ্যমে র‌্যাঙ্কিং করবে।

৩.২ Lucene তে BM25 ব্যবহার

Lucene এ BM25 র‌্যাঙ্কিং ব্যবহার করতে, আপনাকে BM25Similarity ক্লাসটি ব্যবহার করতে হবে। এটি Lucene 7.0 এর পর থেকে সমর্থিত।

উদাহরণ:

// Set BM25 as the similarity model
IndexWriterConfig config = new IndexWriterConfig(new StandardAnalyzer());
config.setSimilarity(new BM25Similarity(1.2f, 0.75f));

// Create an index and writer
IndexWriter writer = new IndexWriter(directory, config);

// Add documents to the index
Document doc = new Document();
doc.add(new TextField("content", "Lucene search engine", Field.Store.YES));
writer.addDocument(doc);
writer.close();

// Search using BM25 similarity
IndexReader reader = DirectoryReader.open(directory);
IndexSearcher searcher = new IndexSearcher(reader);
searcher.setSimilarity(new BM25Similarity(1.2f, 0.75f));

// Define the query
Query query = new TermQuery(new Term("content", "lucene"));
TopDocs topDocs = searcher.search(query, 10);

// Display results
for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
    Document docResult = searcher.doc(scoreDoc.doc);
    System.out.println("Document: " + docResult.get("content") + " Score: " + scoreDoc.score);
}

এখানে, BM25Similarity ক্লাসের মাধ্যমে BM25 র‌্যাঙ্কিং ব্যবহার করা হয়েছে এবং একটি কাস্টম কনফিগারেশন তৈরি করা হয়েছে।


৪. TF-IDF এবং BM25 এর মধ্যে পার্থক্য

বৈশিষ্ট্যTF-IDFBM25
প্রতিবন্ধকতাসাধারণত frequency-based মডেলprobabilistic মডেল
অপ্টিমাইজেশনশুধুমাত্র টার্ম ফ্রিকোয়েন্সির উপর নির্ভর করেটার্ম ফ্রিকোয়েন্সি এবং ডকুমেন্ট দৈর্ঘ্য ভিত্তিক
শব্দের গুরুত্বএকটি নির্দিষ্ট ডকুমেন্টের মধ্যে শব্দের গুরুত্ব বেশিশব্দের গুরুত্বপূর্ণতা ডকুমেন্টের গড় দৈর্ঘ্যের সাথে সামঞ্জস্যপূর্ণ
ফাংশনালিটিসহজ এবং বেসিক র‌্যাঙ্কিং মডেলউন্নত র‌্যাঙ্কিং এবং প্রাসঙ্গিকতা সনাক্তকরণ

সারাংশ

LuceneTF-IDF এবং BM25 দুটি জনপ্রিয় র‌্যাঙ্কিং অ্যালগরিদম যা ডকুমেন্ট র‌্যাঙ্কিংয়ের জন্য ব্যবহৃত হয়। TF-IDF একটি সিম্পল মডেল যা টার্ম ফ্রিকোয়েন্সি এবং ডকুমেন্টের উপস্থিতির উপর ভিত্তি করে র‌্যাঙ্কিং করে, তবে BM25 একটি উন্নত এবং প্রোবাবিলিস্টিক মডেল যা ডকুমেন্টের দৈর্ঘ্য ও শব্দের পুনরাবৃত্তি কম্পিউট করে এবং পারফরম্যান্সে উন্নতি আনে। Lucene এ এই দুটি র‌্যাঙ্কিং মডেল ব্যবহার করা সহজ এবং তা আপনার অনুসন্ধান প্রক্রিয়া আরও দক্ষ করে তোলে।


Content added By
Promotion

Are you sure to start over?

Loading...