c# - 可查询语言词典和单词搜索功能

标签 c# dictionary

在未来的项目中,我将需要实现用于搜索单词的功能(按长度或给定一组字符及其在单词中的位置),这将返回满足特定条件的所有单词。

为此,我需要可以在 LINQ 中轻松查询的语言词典。我想问的第一件事是,是否有人知道在这种应用程序和环境中使用的好的词典。

而且我还想问一下在上述词典中搜索单词的好方法。哈希表是否有助于加快查询速度?问题是语言词典可能非常庞大,并且知道我会有很多搜索条件,为了避免阻碍搜索速度,实现此类功能的好方法是什么?

最佳答案

如果不知道您可能需要优化的确切内容集,则很难说。为快速检索高效组织大量单词的标准数据结构是“trie”数据结构,或者,如果空间效率很重要(因为假设您正在为手机或其他内存受限的环境编写程序)然后是 DAWG——有向无环字图。 (DAWG 本质上是一种将公共(public)路径合并到叶子的 trie。)

在设计数据结构之前我想知道答案的其他有趣问题是:字典会改变吗?如果它确实发生了变化,那么新数据需要以多快的速度集成到结构中是否存在性能限制?该结构将仅用作快速查找设备,还是您想在其中存储有关单词的摘要信息? (如果是后者,则 DAWG 不合适,因为两个词可能共享相同的前缀和后缀节点。)等等。

我会在文献中搜索有关尝试、DAWG 和优化拼字游戏程序的方法的信息;显然,Scrabble 需要对字符串语料库进行各种巧妙的搜索,因此 Scrabble 爱好者在 DAWG 数据结构上建立了一些非常快速的变体。

我最近用 C# 编写了一个不可变的 trie 数据结构,我计划在某个时候写博客。如果我最终这样做了,我会在接下来的几个月里更新这个答案。

关于c# - 可查询语言词典和单词搜索功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5346072/

相关文章:

dictionary - 名词、动词、形容词等的单独单词列表

c# - 返回一个 List<String> 以便调用者不能修改它

c# - Unity - 解决依赖失败(没有注册)

c# - 一个艰难的表格转换成 XML

c# - GetProperties() 返回接口(interface)继承层次结构的所有属性

python - python字典中keys()和values()的顺序是否保证相同?

c# - 如何使用远程数据将超链接配置到我的 Kendo UI TreeView 中?

jQuery | .css()多个参数 '-'错误

dictionary - 嵌套字典 Golang 的麻烦

java - 关于 ConcurrentHashMap javadoc 的说明