DAWG可以用于存储与单词相关的信息吗?
Can a DAWG be used to store word related information?
可以使用dawg来存储与每个路径有关的辅助信息,例如单词的频率在英语中?如果是,那我该怎么做?
通常,您不能像在TRIE或其他数据结构中一样以DAWG的方式存储每个字信息。这样做的原因是,dawg中的多个不同单词都可能共享节点,因此,一个单词"泄漏"的信息有风险。
作为一个简单的例子,假设我们对单词" is"," as"," i"answers" a"有dawg。在这种情况下,DAWG看起来像这样:
START
a / i
ACC ACC
s / s
ACC
请注意,表示单词" as"answers" is"单词的节点是完全相同的节点。因此,如果您试图用信息注释" as"一词,则保存该信息的节点也将与" IS"节点相同,这意味着" AS"answers" as"信息集。
您可以尝试通过在" as"answers" as"节点中存储一个映射来解决此问题道格。您现在正在将每个字符存储在单词中,因此您的内存使用情况将会上升(请记住,DAWG的全部要点是减少存储一组单词所需的内存使用情况)。您最好只存储一个从单词到信息的哈希表格。
您可能会尝试存储此信息的另一个选项是将通过DAWG的每个路径扩展到其自己的分支中,以便不同单词的节点总是不同的。但是,这种方法的问题在于,您正在有效地将DAWG转换为Trie,这大大增加了所涉及的内存使用。
简而言之,没有直接的方法可以在dawg中注释单词,而不会大大增加内存使用情况。如果您必须这样做,最好使用不同的数据结构。
希望这会有所帮助!
是的。从DAWG开始到单词结尾的每条路径都是唯一的,并且该路径可以作为整数索引。然后可以将该索引编号映射到辅助信息。
请参阅此处的论文:http://www.ic.unicamp.br/~reltech/1992/92-01.pdf请参阅此处的一个好实现:https://github.com/wojciechmula/pydawg/blob/master/master/dawg_mph.c#l37
- 正在查找文档以获得PS4平台的C++中的设备信息
- 文本文件中的单词链表
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 在指针的帮助下,文本文件中单词的频率
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何根据单词在文本中出现的概率输出单词
- 如何设置一个范围来提取我想要获得的信息
- 从字符串变量中逐字符读取单词
- 使用std::mt19937从字符串中返回一个随机单词
- 如何用for循环在c++中生成单词三角形
- 将数字转换为单词
- 使用if-else将数字转换为单词
- C++-字符串是否包含一个带有简单循环的单词
- 使用单词"not"作为C ++类的名称会导致VS2019错误
- 系统参数信息A 与 SPI_GETMOUSE 返回 0
- 为什么这个程序返回最后一个单词而不是最长的单词?
- 为什么 gcovr 会生成空覆盖率统计信息?
- 3-3. 编写一个程序来计算每个不同单词在其输入中出现的次数
- DAWG可以用于存储与单词相关的信息吗?
- 使用C在文本中搜索单词,并显示该单词后面的信息