2017-03-16 32 views
1

说我有这个代码片段:如何将分类器最丰富的功能保存到变量中? (Python的NLTK)

classifier.show_most_informative_features(10) 

Python会显示10个功能与他们的正,负相随。 有什么方法可以将特征保存到变量中吗?

+0

'classifier'对象是否有一个方法来返回这些功能,而不是只显示它们,或一个实例变量持有它们?那就是我看的地方。你的问题实际上是如何获取方法所显示的内容,而不是仅仅显示它,有一个变量指的是“无”对你没有任何好处。 – timgeb

回答

0

方法show_most_informative_features()打印出请求的功能,并返回None。要返回功能名称列表和“信息量”,使用此:

features = classifier.most_informative_features(10) 

你会拿到可以显示像这样对的列表:

for f, w in features: 
    print(f, w) 
0

解决方案适用于python3,保存到output_string变量。

from io import StringIO 
import contextlib 
import sys 

@contextlib.contextmanager 
def stdout_redirect(where): 
    sys.stdout = where 
    try: 
     yield where 
    finally: 
     sys.stdout = sys.__stdout__ 

with stdout_redirect(StringIO()) as new_stdout: 
    classifier.show_most_informative_features(15) 

new_stdout.seek(0) 

# output assigned to variable 
output_string = new_stdout.read()