0

我正在使用 Python 的 NLTK 中的 TaggedCorpusReader。我想读取一个 utf8 编码的文件。为此,我想将默认编码“无”(关于文档)设置为“utf8”。因此,我需要交出到达编码参数的默认参数。

__init__(self, root, fileids, sep='/', 
        word_tokenizer=WhitespaceTokenizer(pattern='\\s+',
                   gaps=True, discard_empty=T..., 
        sent_tokenizer=RegexpTokenizer(pattern='\n', 
        gaps=True, discard_empty=True, f..., 
        para_block_reader=<function read_blankline_block at 0x132be70>, 
        encoding=None, tag_mapping_function=None)

这是来自googlecode的定义。

我现在所做的,我这样调用构造函数:

TaggedCorpusReader('.' ,  filelist, '/', 
        WhitespaceTokenizer(u'\s+', True, True, 56), 
        RegexpTokenizer('n', True, True, 56), 
        <function read_blankline_block at 0x5b731b8>, 
        'utf8', None)

然后我得到这个错误

Traceback (most recent call last):
  File "nlpenhg.py", line 2, in <module>
    from BonnerCorpus import *
  File "path/code/BonnerCorpus.py", line 27
    self.corpus = TaggedCorpusReader('.' ,  filelist, '/', WhitespaceTokenizer(u'\s+', True, True, 56), RegexpTokenizer('n', True, True, 56), <function read_blankline_block at 0x5b731b8>, 'utf8', None)

我猜这个错误来自这个<function ...声明。这是错误的原因吗?那是怎样的一种表达方式?谷歌很难<

4

1 回答 1

1

这:

<function read_blankline_block at 0x5b731b8>

不是表达式,它只是 python 如何将函数表示为字符串

>>> def my_function(): pass
... 
>>> my_function
<function my_function at 0x12c05f0>

所以,既然你不想使用不同的功能,那就别管它了。

TaggedCorpusReader您可以使用关键字参数以这种方式实例化:

TaggedCorpusReader('.' ,  filelist, '/', 
        WhitespaceTokenizer(ur'\s+', True, True, 56), 
        RegexpTokenizer('n', True, True, 56), 
        encoding='utf8')

如果您想将函数作为参数传递,只需使用标识符:

TaggedCorpusReader('.' ,  filelist, '/', 
        WhitespaceTokenizer(u'\s+', True, True, 56), 
        RegexpTokenizer('n', True, True, 56), 
        some_function_name, 
        'utf8', None)
于 2013-02-14T08:51:10.197 回答