如何编码TaggedCorpusReader?默认参数处理

时间:2013-02-14 08:20:57

标签: python nltk

我正在使用Python的NLTK中的TaggedCorpusReader。我想读一个utf8编码的文件。为此,我想将默认编码'none'(关于文档)转换为'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 ...语句。这是错误的原因吗?那是什么表达方式? google <很难。

1 个答案:

答案 0 :(得分:1)

在:

<function read_blankline_block at 0x5b731b8>

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

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

所以,既然你不想使用不同的功能,那就单独吧。

您可以使用keywords参数:

以这种方式实例化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)