2

私はnltkとpythonの初心者です。最近問題が発生しました。ターミナルに表示されるtext.similar()を変数に保存したいのですが、何度も失敗しました。どうすれば保存できますか?

text = nltk.Text(word.lower() for word in nltk.corpus.brown.words())
save = []
for word in nltk.word_tokenize("i want to slove this problem"):
    save.append(text.similar(word))

悲しいことに、save []に​​は何も含まれていないことがわかりました。次に、コード「word = text.similar('women')」をテストしました。また、「word」にも何も含まれていないことがわかりました。text.similar()を保存できなかった継ぎ目であることに気づきました。それを保存するにはどうすればよいですか?

4

2 に答える 2

7

のインスタンスはnltk.Text、インタラクティブな探索のみを目的としています。多くのものをコンソールにダンプしますが、実際には関数から構築されたオブジェクトを返しません。

この場合に必要なのはnltk.ContextIndexクラスです。このクラスを使用して...

import nltk
import nltk.text
import nltk.corpus

idx = nltk.text.ContextIndex([word.lower( ) for word in nltk.corpus.brown.words( )])
save = [ ]
for word in nltk.word_tokenize("i want to solve this problem"):
    save.append(idx.similar_words(word))

完了saveすると、「i」、「want」、「to」などのコンテキストで最も頻繁に使用される単語のネスト リストになります。

オンラインの nltk.text.Textドキュメント、具体的にはsimilarメソッドを参照してください。nltk.text.ContextIndex

于 2012-05-10T19:41:06.980 に答える
1

@parselmouth から提供された回答が気に入っていますが、別の方法も紹介したいと思います。これは、リダイレクトによって行われstdoutます。その後、保存された値storable_outputを他の操作に使用できます。

コード

import sys
import io

orig_stdout = sys.stdout

out = io.StringIO()
sys.stdout = out

text1.similar("monstrous")

storable_output = out.getvalue()

sys.stdout = orig_stdout

print(storable_output)

出力

true contemptible christian abundant few part mean careful puzzled
mystifying passing curious loving wise doleful gamesome singular
delightfully perilous fearless

注:text1を使用してインポートされますfrom nltk.book import *

于 2020-02-22T05:05:09.247 に答える