字符串变量的NLTK函数不可调用

时间:2017-04-03 21:39:14

标签: python nltk

我有一个相关函数名列表,我想通过它来迭代,调用变量中保存的函数。但无论我如何尝试,我都会得到:" TypeError:' TweetTokenizer'对象不可调用"

遵循Calling a function of a module from a string with the function's name in Python中的解决方案(建议此问题是重复的),找到nltk模块中的函数并分配它们。但是我的结果" tok_alg"函数仍然失败,因为不可调用。关于为什么会发生这种情况的任何建议都将受到赞赏。

#!/usr/bin/env python

import nltk
import os
testTxt="I'll have a Bloomin' Onion."
Tokenizers = [ 'Tweet', 'MWE', 'TreebankWord' ]

for tokenizer in Tokenizers:
    tokz = tokenizer + 'Tokenizer'

    tok_alg = getattr(nltk, tokz)()
    result = tok_alg(testTxt)

    print(result)

列出函数确实有效,即

for tokenizer in [ TweetTokenizer(), MWETokenizer() ]:
    result = tokenizer.tokenize(testTxt)

但建议通过getattr()转换str变量对NLTK不起作用。虽然这是优雅和实用的,但我需要字符串变量用于其他目的。当然有一些方法可以将它们变成函数调用。我错过了什么?

0 个答案:

没有答案