我想使用nltk.containers.Trie来执行一些简单的操作,比如在Trie中插入一个单词,检索具有给定前缀的所有单词,查找具有大多数后代(即最常见前缀)的节点,以图形方式查看Trie等等。我找不到任何关于这个结构使用的文档。到目前为止,我只有这些:
from nltk.containers import Trie
t = Trie()
我现在有一个单词列表,需要添加到trie中。
最佳答案
很神秘,不是吗。它基本上是一个字典,但您还可以检查字符串是否是已知键的前缀:
>>> t = Trie()
>>> t['they'] = 15
>>> 'the' in t
True
>>> print t['the']
None
还有一个
find_prefix
,它将尽可能多地匹配它的参数,并返回它在那里找到的值(如果有的话)加上参数的其余部分:>>> t.find_prefix("theirs")
(None, 'irs') # Prefix "the" has no value
您可以查看
nltk/containers.py
中的源代码。神奇之处在于处理__setitem__
形式表达式的__getitem__
和t[key]
方法。还有一点需要知道:
keys()
方法只返回实数项,而不返回前缀。您可以将其与subtrie
方法一起使用来检索以给定前缀开头的所有单词:>>> t.subtrie('th').keys()
['ey']
注意,
containers.py
大约六个月前从NLTK中删除了!在更新nltk发行版(您应该这样做)之前,请用其他名称保存nltk/containers.py
。更好的是,保存Trie
类。(文件的其余部分已过时)。关于python - 如何使用nltk.containers.Trie?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10879994/