എന്തെങ്കിലും എഴുത്തിലെ കഥാപാത്രങ്ങളുടെ ഫ്രീക്വൻസി വിതരണത്തെ വിശകലനം ചെയ്യാനും ദൃശ്യവൽക്കരിക്കാനും. നിങ്ങളുടെ ഉള്ളടക്കം പേസ്റ്റ് ചെയ്യുക, കഥാപാത്രങ്ങളുടെ സംഭവനാ മാതൃകകൾ കാണിക്കുന്ന ഒരു ഇന്ററാക്ടീവ് ബാർ ചാർട്ട് സൃഷ്ടിക്കാൻ.
वर्ण आवृत्ति विश्लेषण एक मौलिक तकनीक है जो पाठ विश्लेषण में उपयोग की जाती है, जो यह गिनती करती है और यह दर्शाती है कि किसी दिए गए पाठ में प्रत्येक वर्ण कितनी बार प्रकट होता है। यह शक्तिशाली विधि भाषा उपयोग में पैटर्न को प्रकट करती है, क्रिप्टानालिसिस, डेटा संपीड़न, और भाषाई अध्ययन में मदद करती है। हमारा वर्ण आवृत्ति विश्लेषण उपकरण किसी भी पाठ इनपुट का विश्लेषण करने और वर्ण वितरण का स्पष्ट दृश्य प्रतिनिधित्व उत्पन्न करने का एक सरल लेकिन प्रभावी तरीका प्रदान करता है। वर्ण आवृत्तियों को समझकर, आप पाठ संरचना में अंतर्दृष्टि प्राप्त कर सकते हैं, संभावित एन्कोडिंग समस्याओं की पहचान कर सकते हैं, या यहां तक कि ऐसे पैटर्न का पता लगा सकते हैं जो सामान्य पढ़ाई के माध्यम से तुरंत स्पष्ट नहीं होते।
यह उपकरण एक उपयोगकर्ता के अनुकूल इंटरफ़ेस के साथ आता है जिसमें एक पाठ इनपुट क्षेत्र है जहां आप कोई भी सामग्री चिपका या टाइप कर सकते हैं, और यह स्वचालित रूप से प्रत्येक वर्ण की आवृत्ति दिखाने वाला एक बार चार्ट दृश्य उत्पन्न करता है। यह तात्कालिक दृश्य प्रतिक्रिया यह पहचानना आसान बनाती है कि कौन से वर्ण सबसे अधिक बार प्रकट होते हैं और आपके पाठ की समग्र संरचना को समझने में मदद करती है।
वर्ण आवृत्ति विश्लेषण एक सरल सिद्धांत पर काम करता है: पाठ में प्रत्येक वर्ण की हर उपस्थिति की गिनती करें और परिणामों को प्रदर्शित करें। जबकि यह अवधारणा सरल है, कार्यान्वयन में कई प्रमुख चरण शामिल होते हैं:
वर्ण आवृत्ति का गणितीय प्रतिनिधित्व इस प्रकार व्यक्त किया जा सकता है:
जहां:
कार्यान्वयन आमतौर पर वर्णों की उपस्थिति की गिनती के लिए एक हैश मैप (शब्दकोश) डेटा संरचना का उपयोग करता है:
11. एक खाली हैश मैप/शब्दकोश प्रारंभ करें
22. इनपुट पाठ में प्रत्येक वर्ण के लिए:
3 क. यदि वर्ण हैश मैप में मौजूद है, तो उसकी गिनती बढ़ाएँ
4 ख. यदि नहीं, तो उस वर्ण को हैश मैप में 1 की गिनती के साथ जोड़ें
53. हैश मैप को वर्ण-गिनती जोड़ों की एक सूची में परिवर्तित करें
64. आवश्यकतानुसार (वर्णानुक्रम में या आवृत्ति के अनुसार) सूची को सॉर्ट करें
75. सॉर्ट की गई सूची के आधार पर दृश्यता उत्पन्न करें
8
यह दृष्टिकोण O(n) की समय जटिलता के साथ कार्य करता है, जहां n इनपुट पाठ की लंबाई है, जिससे यह बड़े पाठ नमूनों के लिए भी प्रभावी होता है।
हमारा वर्ण आवृत्ति विश्लेषण उपकरण सहज और उपयोग में आसान है। अपने पाठ का विश्लेषण करने के लिए इन सरल चरणों का पालन करें:
इनपुट क्षेत्र में अपना पाठ दर्ज करने या चिपकाने से शुरू करें। उपकरण किसी भी पाठ सामग्री को स्वीकार करता है, जिसमें शामिल हैं:
आप जितना चाहें उतना पाठ दर्ज कर सकते हैं - एक वाक्य से लेकर पूरे दस्तावेज़ तक।
अन्य कई उपकरणों के विपरीत, हमारा वर्ण आवृत्ति विश्लेषण उपकरण आपके पाठ को स्वचालित रूप से संसाधित करता है जैसे ही आप टाइप या चिपकाते हैं। अलग से "गणना करें" बटन पर क्लिक करने की आवश्यकता नहीं है - परिणाम आपके इनपुट को संशोधित करते ही वास्तविक समय में अपडेट होते हैं।
जब आपका पाठ संसाधित हो जाता है, तो उपकरण प्रदर्शित करता है:
बार चार्ट यह पहचानना आसान बनाता है:
यदि आपको अपने विश्लेषण परिणामों को सहेजने या साझा करने की आवश्यकता है:
यह फीचर शोधकर्ताओं, छात्रों, और पेशेवरों के लिए विशेष रूप से उपयोगी है जिन्हें अपने काम में आवृत्ति विश्लेषण शामिल करने की आवश्यकता होती है।
वर्ण आवृत्ति विश्लेषण के कई व्यावहारिक अनुप्रयोग विभिन्न क्षेत्रों में हैं:
वर्ण आवृत्ति विश्लेषण क्रिप्टानालिसिस में सबसे पुराने और सबसे मौलिक तकनीकों में से एक है। कई प्रतिस्थापन सिफरों में, मूल भाषा के आवृत्ति पैटर्न पहचानने योग्य रहते हैं, जिससे एन्क्रिप्टेड संदेशों को तोड़ना संभव हो जाता है।
उदाहरण: अंग्रेजी पाठ में, 'E', 'T', 'A', और 'O' आमतौर पर सबसे अधिक आवर्ती होते हैं। यदि एक एन्क्रिप्टेड पाठ में विभिन्न वर्णों के लिए उच्च आवृत्तियाँ दिखाई देती हैं, तो एक क्रिप्टानालिस्ट प्रतिस्थापन पैटर्न के बारे में शिक्षित अनुमान लगा सकता है।
कई संपीड़न एल्गोरिदम वर्ण आवृत्ति की जानकारी का उपयोग करते हैं ताकि अधिक प्रभावी एन्कोडिंग बनाई जा सके। हफमैन कोडिंग, उदाहरण के लिए, अधिक आवर्ती वर्णों को छोटे बिट अनुक्रम और कम सामान्य वाले को लंबे अनुक्रम सौंपती है।
उदाहरण: एक पाठ में जहां 'E' 15% समय प्रकट होता है जबकि 'Z' केवल 0.07% प्रकट होता है, एक संपीड़न एल्गोरिदम 'E' को 2-बिट कोड और 'Z' को 8-बिट कोड सौंप सकता है, जिससे महत्वपूर्ण स्थान की बचत होती है।
भाषाविद् वर्ण आवृत्ति विश्लेषण का उपयोग भाषा पैटर्न का अध्ययन करने, लेखकता की पहचान करने, और विभिन्न भाषाओं या बोलियों की तुलना करने के लिए करते हैं।
उदाहरण: एक लेखक के पास विशिष्ट आवृत्ति पैटर्न हो सकते हैं जो उनके लेखन शैली का "फिंगरप्रिंट" होते हैं। यह गुमनाम पाठों को श्रेय देने या साहित्यिक चोरी का पता लगाने में मदद कर सकता है।
अपेक्षित आवृत्ति पैटर्न स्थापित करके, वर्ण विश्लेषण संचारित डेटा में संभावित त्रुटियों या भ्रष्टाचार की पहचान करने में मदद कर सकता है।
उदाहरण: यदि एक पाठ जो अंग्रेजी में होना चाहिए, मानक अंग्रेजी से काफी भिन्न आवृत्ति पैटर्न दिखाता है, तो यह संचरण त्रुटियों या एन्कोडिंग समस्याओं का संकेत दे सकता है।
NLP प्रणाली अक्सर भाषा पहचान, भावना विश्लेषण, और अन्य पाठ प्रसंस्करण कार्यों में एक विशेषता के रूप में वर्ण आवृत्ति का उपयोग करती हैं।
उदाहरण: विभिन्न भाषाओं में विशिष्ट वर्ण आवृत्ति वितरण होते हैं। एक प्रणाली इस जानकारी का उपयोग करके स्वचालित रूप से पहचान सकती है कि पाठ किस भाषा में लिखा गया है।
वर्ण आवृत्ति विश्लेषण सांख्यिकी, भाषाशास्त्र, और प्रोग्रामिंग अवधारणाओं को सिखाने के लिए एक मूल्यवान शैक्षिक उपकरण हो सकता है।
उदाहरण: छात्र विभिन्न कालों या लेखकों के पाठों का विश्लेषण कर सकते हैं ताकि यह देख सकें कि समय के साथ भाषा का उपयोग कैसे विकसित हुआ है।
हालांकि वर्ण आवृत्ति विश्लेषण शक्तिशाली है, पाठ विश्लेषण के लिए वैकल्पिक दृष्टिकोण हैं जो आपकी विशिष्ट आवश्यकताओं के आधार पर अधिक उपयुक्त हो सकते हैं:
व्यक्तिगत वर्णों का विश्लेषण करने के बजाय, शब्द आवृत्ति विश्लेषण यह देखता है कि प्रत्येक शब्द पाठ में कितनी बार प्रकट होता है। यह दृष्टिकोण अधिक अर्थपूर्ण जानकारी प्रदान करता है और सामग्री विश्लेषण, कीवर्ड पहचान, और विषय मॉडलिंग के लिए उपयोगी है।
कब उपयोग करें: जब आप पाठ के अर्थ और विषयों में अधिक रुचि रखते हैं, तो शब्द आवृत्ति विश्लेषण चुनें न कि इसके वर्ण-स्तरीय संघटन में।
एन-ग्राम विश्लेषण वर्णों या शब्दों के अनुक्रम (बिग्राम, ट्रिग्राम, आदि) को देखता है न कि व्यक्तिगत तत्वों को। यह संदर्भात्मक पैटर्न को कैप्चर करता है और भाषा मॉडलिंग और पूर्वानुमानित पाठ प्रणालियों के लिए मूल्यवान है।
कब उपयोग करें: जब आपको अनुक्रमिक पैटर्न को समझने की आवश्यकता होती है या पूर्वानुमानित मॉडल बनाने की आवश्यकता होती है, तो एन-ग्राम विश्लेषण को प्राथमिकता दें।
आवृत्तियों की गिनती करने के बजाय, भावना विश्लेषण पाठ के भावनात्मक स्वरूप का निर्धारण करने का प्रयास करता है। यह प्राकृतिक भाषा प्रसंस्करण तकनीकों का उपयोग करके पाठ को सकारात्मक, नकारात्मक, या तटस्थ के रूप में वर्गीकृत करता है।
कब उपयोग करें: जब आप किसी पाठ में व्यक्त भावनात्मक सामग्री या राय में रुचि रखते हैं, तो भावना विश्लेषण चुनें।
पठनीयता विश्लेषण यह मूल्यांकन करता है कि किसी पाठ को पढ़ना कितना आसान या कठिन है, जैसे कि फ्लेश-किंकेड या स्मॉग इंडेक्स जैसे मेट्रिक्स का उपयोग करके। ये वाक्य की लंबाई और अक्षर की संख्या जैसे कारकों पर विचार करते हैं।
कब उपयोग करें: जब आपको किसी पाठ की जटिलता या लक्षित दर्शकों के लिए उसकी पहुंच का आकलन करने की आवश्यकता होती है, तो पठनीयता विश्लेषण सबसे अच्छा है।
वर्ण आवृत्ति विश्लेषण का एक समृद्ध इतिहास है जो सदियों से चला आ रहा है:
क्रिप्टोग्राफी में वर्ण आवृत्ति विश्लेषण के लिए सबसे पहले ज्ञात अनुप्रयोग 9वीं शताब्दी में अरब बहुज्ञानी अल-किंदी द्वारा था। अपनी पांडुलिपि "क्रिप्टोग्राफिक संदेशों के डिकोडिंग पर" में, उन्होंने सरल प्रतिस्थापन सिफरों को तोड़ने के लिए वर्ण आवृत्तियों का उपयोग करने का वर्णन किया।
यूरोपीय पुनर्जागरण के दौरान, क्रिप्टोग्राफर्स जैसे कि जियोवन्नी बैटिस्ता बेलासो और ब्लेज़ डे विगेनेरे ने अधिक जटिल सिफर विकसित किए जो विशेष रूप से आवृत्ति विश्लेषण का विरोध करने के लिए डिज़ाइन किए गए थे। इससे एन्क्रिप्शन और डिक्रिप्शन तकनीकों के बीच एक निरंतर संघर्ष उत्पन्न हुआ।
20वीं सदी में, वर्ण आवृत्ति विश्लेषण युद्धकालीन क्रिप्टोग्राफी में एक महत्वपूर्ण भूमिका निभाई, सबसे प्रसिद्ध जर्मन एनिग्मा कोड को तोड़ने में। बलेट्चली पार्क में ब्रिटिश क्रिप्टानालिस्ट, जिसमें ऐलन ट्यूरिंग शामिल थे, ने अपने डिक्रिप्शन प्रयासों के हिस्से के रूप में आवृत्ति विश्लेषण का उपयोग किया।
कंप्यूटरों के आगमन के साथ, वर्ण आवृत्ति विश्लेषण स्वचालित और अधिक जटिल हो गया। आधुनिक अनुप्रयोग क्रिप्टोग्राफी से परे विस्तारित होते हैं, जिसमें डेटा संपीड़न, जानकारी पुनर्प्राप्ति, और मशीन लर्निंग शामिल हैं।
आज, शोधकर्ता बड़े डेटा, साइबर सुरक्षा, और कृत्रिम बुद्धिमत्ता में अनुप्रयोगों के लिए आवृत्ति विश्लेषण तकनीकों को परिष्कृत करना जारी रखते हैं। मौलिक सिद्धांत वही रहते हैं, लेकिन कार्यप्रणाली और उपकरण नाटकीय रूप से विकसित हुए हैं।
यहां विभिन्न प्रोग्रामिंग भाषाओं में वर्ण आवृत्ति विश्लेषण के कार्यान्वयन हैं:
1def analyze_character_frequency(text):
2 # एक खाली शब्दकोश प्रारंभ करें
3 frequency = {}
4
5 # प्रत्येक वर्ण की गिनती करें
6 for char in text:
7 if char in frequency:
8 frequency[char] += 1
9 else:
10 frequency[char] = 1
11
12 # टुपल की सूची में परिवर्तित करें और वर्णानुक्रम में सॉर्ट करें
13 result = sorted(frequency.items())
14
15 return result
16
17# उदाहरण उपयोग
18text = "Hello, World!"
19frequencies = analyze_character_frequency(text)
20for char, count in frequencies:
21 print(f"'{char}': {count}")
22
1function analyzeCharacterFrequency(text) {
2 // एक खाली ऑब्जेक्ट प्रारंभ करें
3 const frequency = {};
4
5 // प्रत्येक वर्ण की गिनती करें
6 for (let i = 0; i < text.length; i++) {
7 const char = text[i];
8 if (frequency[char]) {
9 frequency[char]++;
10 } else {
11 frequency[char] = 1;
12 }
13 }
14
15 // ऑब्जेक्ट को ऑब्जेक्ट्स की सूची में परिवर्तित करें और वर्णानुक्रम में सॉर्ट करें
16 const result = Object.entries(frequency)
17 .map(([char, count]) => ({ char, count }))
18 .sort((a, b) => a.char.localeCompare(b.char));
19
20 return result;
21}
22
23// उदाहरण उपयोग
24const text = "Hello, World!";
25const frequencies = analyzeCharacterFrequency(text);
26frequencies.forEach(item => {
27 console.log(`'${item.char}': ${item.count}`);
28});
29
1import java.util.*;
2
3public class CharacterFrequencyAnalyzer {
4 public static List<Map.Entry<Character, Integer>> analyzeCharacterFrequency(String text) {
5 // एक हैशमैप प्रारंभ करें
6 Map<Character, Integer> frequency = new HashMap<>();
7
8 // प्रत्येक वर्ण की गिनती करें
9 for (int i = 0; i < text.length(); i++) {
10 char c = text.charAt(i);
11 frequency.put(c, frequency.getOrDefault(c, 0) + 1);
12 }
13
14 // सूची में परिवर्तित करें और वर्णानुक्रम में सॉर्ट करें
15 List<Map.Entry<Character, Integer>> result = new ArrayList<>(frequency.entrySet());
16 result.sort(Map.Entry.comparingByKey());
17
18 return result;
19 }
20
21 public static void main(String[] args) {
22 String text = "Hello, World!";
23 List<Map.Entry<Character, Integer>> frequencies = analyzeCharacterFrequency(text);
24
25 for (Map.Entry<Character, Integer> entry : frequencies) {
26 System.out.println("'" + entry.getKey() + "': " + entry.getValue());
27 }
28 }
29}
30
1#include <iostream>
2#include <string>
3#include <map>
4#include <vector>
5#include <algorithm>
6
7std::vector<std::pair<char, int>> analyzeCharacterFrequency(const std::string& text) {
8 // एक मैप प्रारंभ करें
9 std::map<char, int> frequency;
10
11 // प्रत्येक वर्ण की गिनती करें
12 for (char c : text) {
13 frequency[c]++;
14 }
15
16 // जोड़े की सूची में परिवर्तित करें
17 std::vector<std::pair<char, int>> result(frequency.begin(), frequency.end());
18
19 // मैप पहले से ही कुंजी (वर्ण) के अनुसार सॉर्ट है
20 return result;
21}
22
23int main() {
24 std::string text = "Hello, World!";
25 auto frequencies = analyzeCharacterFrequency(text);
26
27 for (const auto& pair : frequencies) {
28 std::cout << "'" << pair.first << "': " << pair.second << std::endl;
29 }
30
31 return 0;
32}
33
1def analyze_character_frequency(text)
2 # एक खाली हैश प्रारंभ करें
3 frequency = Hash.new(0)
4
5 # प्रत्येक वर्ण की गिनती करें
6 text.each_char do |char|
7 frequency[char] += 1
8 end
9
10 # जोड़े की सूची में परिवर्तित करें और वर्णानुक्रम में सॉर्ट करें
11 result = frequency.to_a.sort_by { |char, _| char }
12
13 return result
14end
15
16# उदाहरण उपयोग
17text = "Hello, World!"
18frequencies = analyze_character_frequency(text)
19frequencies.each do |char, count|
20 puts "'#{char}': #{count}"
21end
22
वर्ण आवृत्ति विश्लेषण एक तकनीक है जो यह गिनती करती है कि किसी पाठ में प्रत्येक वर्ण कितनी बार प्रकट होता है। यह वर्णों के वितरण और पैटर्नों के बारे में अंतर्दृष्टि प्रदान करती है, जो क्रिप्टोग्राफी, डेटा संपीड़न, भाषाई अध्ययन, और अन्य पाठ विश्लेषण अनुप्रयोगों के लिए उपयोगी हो सकती है।
वर्ण आवृत्ति विश्लेषण की सटीकता नमूने के आकार पर निर्भर करती है। छोटे पाठों के लिए, आवृत्ति वितरण सामान्यतः भाषा के पैटर्न से मेल नहीं खा सकता है। हालांकि, बड़े पाठों (कई पैराग्राफ या अधिक) के लिए, विश्लेषण आमतौर पर वर्ण वितरण का एक विश्वसनीय प्रतिनिधित्व प्रदान करता है।
नहीं, केवल वर्ण आवृत्ति विश्लेषण आधुनिक एन्क्रिप्शन एल्गोरिदम जैसे AES या RSA को नहीं तोड़ सकता है। यह मुख्य रूप से सरल प्रतिस्थापन सिफरों और कुछ शास्त्रीय एन्क्रिप्शन विधियों के खिलाफ प्रभावी है। आधुनिक क्रिप्टोग्राफी जटिल गणितीय संचालन और कुंजी-आधारित प्रणालियों का उपयोग करती है जो आवृत्ति पैटर्न को बनाए नहीं रखती हैं।
प्रत्येक भाषा की एक विशिष्ट वर्ण आवृत्ति प्रोफ़ाइल होती है। उदाहरण के लिए, अंग्रेजी में, 'E' आमतौर पर सबसे सामान्य वर्ण होता है, जबकि स्पेनिश में, 'E' और 'A' सबसे अधिक आवर्ती होते हैं। जर्मन में 'E', 'N', और 'I' की अधिक उपस्थिति होती है, और इसमें 'ß' और उमाॅलट जैसे वर्ण होते हैं जो अंग्रेजी में नहीं होते।
वर्ण आवृत्ति विश्लेषण व्यक्तिगत वर्णों (अक्षर, संख्याएँ, विराम चिह्न) की गिनती करता है, जबकि शब्द आवृत्ति विश्लेषण पूर्ण शब्दों की गिनती करता है। वर्ण विश्लेषण अधिक मौलिक है और सभी पाठ प्रकारों में काम करता है, जबकि शब्द विश्लेषण अधिक अर्थपूर्ण जानकारी प्रदान करता है लेकिन इसके लिए भाषा-विशिष्ट प्रसंस्करण की आवश्यकता होती है।
हमारा वर्ण आवृत्ति विश्लेषण उपकरण सभी वर्णों, जिसमें Spaces, विराम चिह्न, और विशेष वर्ण शामिल हैं, की गिनती करता है। प्रत्येक अद्वितीय वर्ण को आवृत्ति गिनती में एक अलग इकाई के रूप में माना जाता है, जिससे पाठ की संरचना का एक संपूर्ण चित्र प्राप्त होता है।
यह उपकरण विभिन्न लंबाई के पाठों को संभालने के लिए डिज़ाइन किया गया है, छोटे वाक्यों से लेकर लंबे दस्तावेज़ों तक। हालांकि, बहुत बड़े पाठ (सैकड़ों हजारों वर्ण) में ब्राउज़र में कुछ प्रदर्शन धीमा हो सकता है। अत्यधिक बड़े डेटा सेट के लिए, एक समर्पित डेस्कटॉप एप्लिकेशन या प्रोग्रामिंग पुस्तकालय का उपयोग करने पर विचार करें।
सिंह, एस. (1999). कोड पुस्तक: प्राचीन मिस्र से क्वांटम क्रिप्टोग्राफी तक गुप्तता का विज्ञान. एंकर पुस्तकें।
शैनन, सी. ई. (1951). "प्रिंटेड इंग्लिश की भविष्यवाणी और एंट्रोपी।" द बेल सिस्टम टेक्निकल जर्नल, 30(1), 50-64।
बेकर, एच., & पाइपर, एफ. (1982). सिफर सिस्टम: संचार की सुरक्षा। नॉर्थवुड बुक्स।
अल-कज़ाज़, एन. आर., टेहान, डब्ल्यू. जे., & इर्विन, एस. ए. (2018). "संपीड़न का उपयोग करके सरल प्रतिस्थापन सिफरों का एक स्वचालित क्रिप्टानालिसिस।" सूचना विज्ञान, 474, 18-28।
हफमैन, डी. ए. (1952). "न्यूनतम-रेडंडेंसी कोड के निर्माण के लिए एक विधि।" IRE के कार्यवाही, 40(9), 1098-1101।
कॉनहाइम, ए. जी. (2010). कंप्यूटर सुरक्षा और क्रिप्टोग्राफी। जॉन विली एंड संस।
जूला, पी. (2006). "लेखकता निर्धारण।" जानकारी पुनर्प्राप्ति में नींव और रुझान, 1(3), 233-334।
स्टालिंग्स, डब्ल्यू. (2017). क्रिप्टोग्राफी और नेटवर्क सुरक्षा: सिद्धांत और प्रथा (7वां संस्करण)। पियर्सन।
हमारे वर्ण आवृत्ति विश्लेषण उपकरण के साथ किसी भी पाठ का विश्लेषण करें ताकि पैटर्न का पता लगाया जा सके, संपीड़न का अनुकूलन किया जा सके, या बस अपनी सामग्री की संरचना का पता लगाया जा सके। विभिन्न नमूनों का प्रयास करें ताकि यह देखा जा सके कि विभिन्न भाषाओं, लेखकों, और पाठ प्रकारों के बीच वर्ण वितरण कैसे भिन्न होता है!
നിങ്ങളുടെ പ്രവർത്തനത്തിന് ഉപയോഗപ്പെടുന്ന കൂടുതൽ ഉപകരണങ്ങൾ കണ്ടെത്തുക.