ल्यूसिन एनालाइजर की तुलना


104

क्या कोई कृपया ल्यूसीन के भीतर के विभिन्न विश्लेषणों के बीच अंतर बता सकता है? मुझे एक अधिकतम क्लॉउंटकाउंट अपवाद मिल रहा है और मैं समझता हूं कि मैं KeywordAnalyzer का उपयोग करके इससे बच सकता हूं, लेकिन मैं StandardAnalyzer से आसपास के मुद्दों को समझे बिना इसे बदलना नहीं चाहता। बहुत बहुत धन्यवाद।

जवाबों:


209

सामान्य तौर पर, Lucene में कोई भी विश्लेषक tokenizer + स्टेमर + स्टॉप-वर्ड फ़िल्टर है।

टोकनर आपके पाठ को विखंडू में विभाजित करता है, और चूंकि विभिन्न विश्लेषक अलग-अलग टोकन का उपयोग कर सकते हैं, इसलिए आप अलग-अलग आउटपुट टोकन स्ट्रीम प्राप्त कर सकते हैं , अर्थात पाठ के विखंडन के क्रम। उदाहरण के लिए, KeywordAnalyzerआपने उल्लेख किया है कि पाठ को बिल्कुल विभाजित नहीं किया गया है और सभी फ़ील्ड को एकल टोकन के रूप में लिया गया है। एक ही समय में, StandardAnalyzer(और अधिकांश अन्य विश्लेषक) विभाजन बिंदुओं के रूप में रिक्त स्थान और विराम चिह्न का उपयोग करते हैं। उदाहरण के लिए, वाक्यांश "मैं बहुत खुश हूं" यह सूची ["i", "am", "very", "happy"] (या ऐसा कुछ) का उत्पादन करेगा। विशिष्ट विश्लेषक / टोकनधारकों के बारे में अधिक जानकारी के लिए इसके जावा डॉक्स देखें ।

स्टेमर्स का उपयोग प्रश्न में किसी शब्द के आधार को प्राप्त करने के लिए किया जाता है। यह भारी रूप से प्रयुक्त भाषा पर निर्भर करता है। उदाहरण के लिए, अंग्रेजी में पिछले वाक्यांश के लिए कुछ ऐसा होगा जैसे ["i", "be", "veri", "happi"] का उत्पादन किया, और फ्रेंच "Je suis très heureux" के लिए कुछ प्रकार के फ्रेंच विश्लेषक (जैसे SnowballAnalyzer, आरंभीकृत) "फ्रेंच") के साथ ["जेई", "ऑर्ट्रे", "ट्रे", "हेअर"] का उत्पादन होगा। बेशक, यदि आप एक भाषा के विश्लेषक का उपयोग दूसरे में पाठ स्टेम करने के लिए करेंगे, तो दूसरी भाषा के नियमों का उपयोग किया जाएगा और स्टेमर गलत परिणाम दे सकता है। यह सभी प्रणाली में विफल नहीं है, लेकिन खोज परिणाम तब कम सटीक हो सकते हैं।

KeywordAnalyzerकिसी भी स्टेमर्स का उपयोग नहीं करता है, यह सभी क्षेत्र को बिना लाइसेंस के पास करता है। इसलिए, यदि आप अंग्रेजी पाठ में कुछ शब्द खोजने जा रहे हैं, तो इस विश्लेषक का उपयोग करना अच्छा नहीं है।

स्टॉप शब्द सबसे लगातार और लगभग बेकार शब्द हैं। फिर, यह बहुत हद तक भाषा पर निर्भर करता है। अंग्रेजी के लिए ये शब्द "a", "the", "I", "be", "have", इत्यादि हैं। स्टॉप-वर्ड फिल्टर उन्हें टोकन स्ट्रीम से खोज परिणामों में कम शोर तक निकाल देते हैं, इसलिए अंत में हमारा वाक्यांश "I" "मी बहुत खुश" के साथ StandardAnalyzerसूची में बदल जाएगा ["वेरी", "हैप्पी"]।

और KeywordAnalyzerफिर कुछ नहीं करता। तो, KeywordAnalyzerआईडी या फोन नंबर जैसी चीजों के लिए उपयोग किया जाता है, लेकिन सामान्य पाठ के लिए नहीं।

और आपके maxClauseCountअपवाद के रूप में, मेरा मानना ​​है कि आप इसे खोजते हैं। इस मामले में संभवत: यह बहुत जटिल खोज क्वेरी के कारण है। इसे कई प्रश्नों में विभाजित करने या अधिक निम्न स्तर के कार्यों का उपयोग करने का प्रयास करें।


1
@ लाभ: मुझे नहीं लगता कि स्टीमर (स्नोबॉल या अन्य एल्गोरिदम का उपयोग करके) में परिवर्तित हो सकता है -> क्योंकि यह लेम्मेटाइज़र का काम है। आप इसे यहाँ
थो

तो टीका इसमें कहाँ फिट होती है? क्या यह तकनीकी रूप से एक विश्लेषक नहीं है?
आनन

1
@anon: कई महत्वपूर्ण विशेषताओं के साथ टीका एक अलग परियोजना है। यह मानते हुए कि आपका मतलब है कि टीका पार्सर, मैं कहूंगा कि टीका बाइट स्ट्रीम लेता है और टेक्स्ट + मेटाडेटा आउटपुट करता है, जबकि ल्यूसिन एनालाइजर टेक्स्ट और आउटपुट संसाधित टोकन स्ट्रीम लेते हैं। उदाहरण के लिए, आप पहले टाइका के साथ पीडीएफ या एक्सएमएल फ़ाइल को पार्स कर सकते हैं, "शीर्षक", "लेखक" और "पाठ" जैसे क्षेत्रों के साथ दस्तावेज़ का निर्माण कर सकते हैं, और फिर ल्यूसिन विश्लेषक के साथ इनमें से कुछ या सभी क्षेत्रों का विश्लेषण कर सकते हैं।
ffriend

बस सोच, "बहुत" और "खुश" शब्दों को अस्वीकार नहीं किया जाता है, वे "वेरी" और "हैप्पी" में क्यों बदल जाते हैं? जब से वे समान ध्वनि करते हैं, क्या मुझे <-> y अंतर से मेल खाना है?
ओगुज़ाल्ब

0

मेरे परिप्रेक्ष्य में, मैंने उपयोग किया है StandAnalyzerऔर SmartCNAnalyzer। जैसा कि मुझे चीनी में पाठ खोजना है। जाहिर है, SmartCnAnalyzerचीनी से निपटने में बेहतर है। विघटित प्रयोजनों के लिए, आपको उचित विश्लेषक का चयन करना होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.