我正在使用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 <
很难。
答案 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)