2

nltk.containers.Trieを使用して、トライへの単語の挿入、特定のプレフィックスを持つすべての単語の取得、最も子孫(つまり最も一般的なプレフィックス)を持つノードの検索、トライのグラフィカルな表示などの簡単な操作を実行したいと思います。この構造の使用に関するドキュメントはまったく見つかりませんでした。これが私がこれまでに持っているすべてです:

from nltk.containers import Trie
t = Trie()

これで、トライに追加する必要のある単語のリストができました。

4

1 に答える 1

4

かなり謎めいたですね。これは基本的に辞書ですが、文字列が既知のキーのプレフィックスであるかどうかをさらに確認できます。

>>> 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']

PS。containers.py約6か月前にNLTKから削除されたことに注意してください。nltkディストリビューションを更新する前に(必要です)、nltk/containers.py別の名前で保存してください。Trieさらに良いことに、クラスを保存するだけです。(ファイルの残りの部分は廃止されました)。

于 2012-06-04T12:43:40.603 に答える