C# 字典API(词汇)

C# 字典API(词汇),c#,.net,api,C#,.net,Api,有人知道一个好的.NET字典API吗?我对含义不感兴趣,而是需要能够以多种不同的方式查询单词-返回x长度的单词,返回部分匹配,等等…您可能需要寻找一个实现。这对于以XYZ开头的单词以及精确匹配肯定会有所帮助。您可能希望将所有数据放在多个数据结构中,每个数据结构都针对特定任务进行了调整-例如,一个用于字谜,一个用于长度等。与RAM相比,如今的自然语言词典相对较小,因此如果您真的希望快速查找,这可能就是方法。从ASpell这样的开源拼写检查器中获取平面文本文件,并将其加载到列表或任何您喜欢的结构中

有人知道一个好的.NET字典API吗?我对含义不感兴趣,而是需要能够以多种不同的方式查询单词-返回x长度的单词,返回部分匹配,等等…

您可能需要寻找一个实现。这对于以XYZ开头的单词以及精确匹配肯定会有所帮助。您可能希望将所有数据放在多个数据结构中,每个数据结构都针对特定任务进行了调整-例如,一个用于字谜,一个用于长度等。与RAM相比,如今的自然语言词典相对较小,因此如果您真的希望快速查找,这可能就是方法。

从ASpell这样的开源拼写检查器中获取平面文本文件,并将其加载到列表或任何您喜欢的结构中

比如说,

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"); });

根据您的查询涉及的程度,它可能值得研究,这基本上是一个语义词典。它包括词性、同义词和其他类型的单词之间的关系。

NetSpell是一种拼写检查工具,它是用.NET编写的,有几种语言的单词列表,您可以使用。

我同意这一点,但您可以不用LINQ来完成。NET2.0在ListT类型上有一些很好的过滤方法。我建议的是

List(T).FindAll(Predicate(T)) : List(T)
此方法将通过谓词方法放置列表中的每个元素,并返回返回“true”的单词列表。因此,按照开源词典的建议将单词加载到ListString中。要查找所有长度为5的单词

List(String) words = LoadFromDictionary();
List(String) fiveLetterWords = words.FindAll(delegate(String word)
    {
        return word.Length == 5;
    });
或者对于所有以“abc”开头的单词

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

我相信代码需要C 3.0,以及带有LINQBridge的.NET 3.5或.NET 2.0。NET3.0在这方面没有提供任何比.NET2.0有用的东西。没错,我已经在3.0中工作了一段时间,所以我想我已经非常习惯在需要的时候使用LINQ。编辑为包含非3.0样本。为什么我只能向上投票一次;我浏览了一下,但找不到平面文本文件。如何获取平面文本文件?我必须安装Aspell并在安装目录中搜索该文件吗?@kiltek这个命令Aspell-d en dump master | Aspell-l en expand>my.dict将使用Aspell生成一个简单的文本文件,正如这里回答的那样->但是,我用en代替了pl for Englishoh snap,他还编写了C2.0代码。。。哎呀。自我提示:充分阅读答案