在文本挖掘中使用嵌套词典

2024-06-16 11:24:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个嵌套字典,结构如下:

rules = 
 {'conjugation': {'v0': {'ending': 'cer'}},
 {'v1': {'ending': 'er'}},

...

} 

我要做的是获取一个单词列表,找到它的所有结尾,并获取与该结尾相关联的ruleID。你知道吗

我需要以最严格的结尾为例,一个像“déplacer”这样的词需要显示v0,即使v1也适合,因为v0的结尾更长。你知道吗

有什么想法吗?谢谢


Tags: 列表字典结尾ending单词结构rulesv1
1条回答
网友
1楼 · 发布于 2024-06-16 11:24:03

您可以使用trie对其进行评分,然后根据匹配键的长度对结果进行评分。你知道吗

首先使用后缀的反向字符串索引共轭

In [1]: import pygtrie

In [2]: trie = pygtrie.CharTrie()

In [3]: trie['re'] = 'v0'

In [4]: trie['rec'] = 'v1'

然后可以使用以下代码查询共轭:

In [22]: list(trie.prefixes(''.join(reversed('aimer'))))
Out[22]: [('re', 'v0')]

In [23]: list(trie.prefixes(''.join(reversed('balancer'))))
Out[23]: [('re', 'v0'), ('rec', 'v1')]

然后您可以使用如下简单函数对结果进行评分:

In [24]: best = lambda candidates: sorted(candidates, key=lambda x: len(x[0]), reverse=True)[0]

In [25]: best(trie.prefixes(''.join(reversed('balancer'))))
Out[25]: ('rec', 'v1')

相关问题 更多 >