DAWG可以用于存储与单词相关的信息吗?

Can a DAWG be used to store word related information?

本文关键字:信息 单词相 用于 存储 DAWG      更新时间:2023-10-16

可以使用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