':type root: PathPointer or str
:param root: A path pointer identifying the root directory for
this corpus.  If a string is specified, then it will be
converted to a ``PathPointer`` automatically.
:param fileids: A list of the files that make up this corpus.
This list can either be specified explicitly, as a list of
strings; or implicitly, as a regular expression over file
paths.  The absolute path for each file will be constructed
by joining the reader\'s root to each file name.
:param encoding: The default unicode encoding for the files
that make up the corpus.  The value of ``encoding`` can be any
of the following:
- A string: ``encoding`` is the encoding name for all files.
- A dictionary: ``encoding[file_id]`` is the encoding
name for the file whose identifier is ``file_id``.  If
``file_id`` is not in ``encoding``, then the file
contents will be processed using non-unicode byte strings.
- A list: ``encoding`` should be a list of ``(regexp, encoding)``
tuples.  The encoding for a file whose identifier is ``file_id``
will be the ``encoding`` value for the first tuple whose
``regexp`` matches the ``file_id``.  If no tuple\'s ``regexp``
matches the ``file_id``, the file contents will be processed
using non-unicode byte strings.
- None: the file contents of all files will be
processed using non-unicode byte strings.
:param tagset: The name of the tagset used by this corpus, to be used
for normalizing or converting the POS tags returned by the
tagged_...() methods.'

def __init__(self, root, fileids, encoding=u'utf8', tagset=None):

    if (isinstance(root, string_types) and (not isinstance(root, PathPointer))):
        m = re.match(u'(.*\\.zip)/?(.*)$|', root)
        (zipfile, zipentry) = m.groups()
        if zipfile:
            root = ZipFilePathPointer(zipfile, zipentry)
        else:
            root = FileSystemPathPointer(root)
    elif (not isinstance(root, PathPointer)):
        raise TypeError(u'CorpusReader:    expected    a    string    or    a    PathPointer')
    if isinstance(fileids, string_types):
        fileids = find_corpus_fileids(root, fileids)
    self._fileids = fileids
    u'A    list    of    the    relative    paths    for    the    fileids    that    make    up\n                                this    corpus.'
    self._root = root
    u'The    root    directory    for    this    corpus.'
    if isinstance(encoding, list):
        encoding_dict = {}
        for fileid in self._fileids:
            for x in encoding:
                (regexp, enc) = x
                if re.match(regexp, fileid):
                    encoding_dict[fileid] = enc
                    break
        encoding = encoding_dict
    self._encoding = encoding
    u'The    default    unicode    encoding    for    the    fileids    that    make    up\n                                            this    corpus.        If    ``encoding``    is    None,    then    the    file\n                                            contents    are    processed    using    byte    strings.'
    self._tagset = tagset
