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 回答