首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用nltk.containers.Trie?

如何使用nltk.containers.Trie?
EN

Stack Overflow用户
提问于 2012-06-04 18:43:48
回答 1查看 968关注 0票数 2

我想使用nltk.containers.Trie来执行一些简单的操作,比如在trie中插入一个单词,检索具有给定前缀的所有单词,查找具有最多后代(即最常见的前缀)的节点,以图形方式查看trie等等。我找不到任何关于这个结构使用的文档。这是我到目前为止所知道的一切:

代码语言:javascript
复制
from nltk.containers import Trie
t = Trie()

我现在有了一个需要添加到trie中的单词列表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-04 20:43:41

很神秘,不是吗。它基本上是一个字典,但您还可以检查字符串是否为已知键的前缀:

代码语言:javascript
复制
>>> t = Trie()
>>> t['they'] = 15
>>> 'the' in t
True
>>> print t['the']
None

还有find_prefix,它将尽可能多地匹配它的参数,并返回找到的值(如果有)加上参数的其余部分:

代码语言:javascript
复制
>>> t.find_prefix("theirs")
(None, 'irs')                 # Prefix "the" has no value

您可以查看nltk/containers.py中的源代码。神奇之处在于__setitem____getitem__方法,它们处理t[key]形式的表达式。

同样值得注意的是:keys()方法将只返回真正的条目,而不是前缀。您可以将它与方法subtrie一起使用,以检索以给定前缀开头的所有单词:

代码语言:javascript
复制
>>> t.subtrie('th').keys()
['ey']

PS。请注意,containers.py在大约六个月前就从NLTK中删除了!在更新您的nltk发行版之前(您应该这样做),以不同的名称保存nltk/containers.py。更好的做法是,只保存Trie类。(文件的其余部分已过时)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10879994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档