2008-12-02 7 views
16

क्या कोई भी एक अच्छा .NET शब्दकोश API जानता है? मुझे अर्थों में कोई दिलचस्पी नहीं है, बल्कि मुझे कई अलग-अलग तरीकों से शब्दों से पूछने में सक्षम होना चाहिए - एक्स लम्बाई के लौटने वाले शब्द, आंशिक मिलान लौटें और इतने पर ...शब्दकोश एपीआई (लेक्सिकल)

उत्तर

21

ले लो ASpell (http://aspell.net/) की तरह एक खुला स्रोत वर्तनी-जांचकर्ता से फ्लैट पाठ फ़ाइल और एक सूची या जो कुछ भी आप की तरह संरचना में इसे लोड।

उदाहरण के लिए

,

List<string> words = System.IO.File.ReadAllText("MyWords.txt").Split(new string[]{Environment.NewLine}).ToList(); 

// C# 3.0 (LINQ) example: 

    // get all words of length 5: 
    from word in words where word.length==5 select word 

    // get partial matches on "foo" 
    from word in words where word.Contains("foo") select word 

// C# 2.0 example: 

    // get all words of length 5: 
    words.FindAll(delegate(string s) { return s.Length == 5; }); 

    // get partial matches on "foo" 
    words.FindAll(delegate(string s) { return s.Contains("foo"); }); 
+0

मुझे विश्वास है कि कोड की आवश्यकता है सी # 3.0, और या तो .NET 3.5 या। LINQBridge के साथ नेट 2.0। .NET 3.0 इस संबंध में .NET 2.0 पर कुछ भी उपयोगी नहीं प्रदान करता है। –

+0

सच है, मैं थोड़ी देर के लिए 3.0 में काम कर रहा हूं, इसलिए मुझे लगता है कि मुझे इसकी आवश्यकता होने पर LINQ आसान होने के लिए बहुत उपयोग किया जा रहा है। गैर-3.0 नमूने रखने के लिए संपादित किया गया। –

+2

मैं केवल एक बार क्यों उभारा सकता हूं? ;) – GalacticCowboy

4

आप शायद एक देखना चाहते हैं Trie कार्यान्वयन। यह निश्चित रूप से "XYZ से शुरू होने वाले शब्दों" के साथ-साथ सटीक मिलानों में भी मदद करेगा। आप अपने डेटा को कई डेटा संरचनाओं में रखना चाहते हैं, प्रत्येक विशेष कार्य के लिए ट्यून किया गया है - उदा। एनाग्राम के लिए एक, "लंबाई से" के लिए एक। प्राकृतिक भाषा शब्दकोश इन दिनों रैम की तुलना में अपेक्षाकृत कम हैं, इसलिए यदि आप वास्तव में तेज़ी से लुकअप चाहते हैं, तो शायद यह जाने का तरीका है।

2

कैसे शामिल आपके प्रश्नों होने जा रहे हैं के आधार पर यह जांच कर WordNet है, जो मूल रूप से एक अर्थ शब्दकोश है लायक हो सकता है। इसमें शब्दों के बीच भाषण, समानार्थी, और अन्य प्रकार के संबंधों के कुछ भाग शामिल हैं।

2

नेटस्पेल (http://www.loresoft.com/netspell/) एक वर्तनी परीक्षक है जो .NET में लिखा गया है जिसमें कई भाषाओं में शब्द सूची है जिसका आप उपयोग कर सकते हैं।

2

मैं इस पर Barry Fandango के साथ हूं, लेकिन आप LINQ के बिना इसे कर सकते हैं। .NET 2.0 में सूची (टी) प्रकार पर कुछ अच्छी फ़िल्टरिंग विधियां हैं। एक मेरा सुझाव है

List(T).FindAll(Predicate(T)) : List(T) 

है इस विधि विधेय विधि माध्यम से सूची में प्रत्येक तत्व डाल दिया और शब्द की सूची वापसी 'सही' वापस आ जाएगी। तो, एक ओपन सोर्स डिक्शनरी से एक सूची (स्ट्रिंग) में सुझाए गए शब्दों को लोड करें। लंबाई 5 के सभी शब्द ढूंढ़ने के लिए ...

List(String) words = LoadFromDictionary(); 
List(String) fiveLetterWords = words.FindAll(delegate(String word) 
    { 
     return word.Length == 5; 
    }); 

या सभी शब्दों 'एबीसी' के साथ शुरू करने के लिए ...

List(String) words = LoadFromDictionary(); 
List(String) abcWords = words.FindAll(delegate(String word) 
    { 
     return word.StartsWith('abc'); 
    }); 
+0

ओह स्नैप, उन्होंने सी # 2.0 कोड भी लिखा ... ओउप्स। (स्वयं को नोट करें: जवाब पूरी तरह पढ़ें) –

संबंधित मुद्दे