Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows/Python错误WindowsError:[错误3]系统找不到指定的路径_Python_Django_Windows_Numpy - Fatal编程技术网

Windows/Python错误WindowsError:[错误3]系统找不到指定的路径

Windows/Python错误WindowsError:[错误3]系统找不到指定的路径,python,django,windows,numpy,Python,Django,Windows,Numpy,嗨,我是python新手,我需要一些帮助。我试图在Windows10操作系统上运行一个文件,使用python 2.7 import os import re import codecs import numpy as np import theano models_path = "./models" eval_path = "./evaluation" eval_temp = os.path.join(eval_path, "temp") eval_script = os.path.join

嗨,我是python新手,我需要一些帮助。我试图在Windows10操作系统上运行一个文件,使用python 2.7

import os
import re
import codecs
import numpy as np
import theano


models_path = "./models"
eval_path = "./evaluation"
eval_temp = os.path.join(eval_path, "temp")
eval_script = os.path.join(eval_path, "conlleval")


def get_name(parameters):
    """
    Generate a model name from its parameters.
    """
    l = []
    for k, v in parameters.items():
        if type(v) is str and "/" in v:
            l.append((k, v[::-1][:v[::-1].index('/')][::-1]))
        else:
            l.append((k, v))
    name = ",".join(["%s=%s" % (k, str(v).replace(',', '')) for k, v in l])
    return "".join(i for i in name if i not in "\/:*?<>|")


def set_values(name, param, pretrained):
    """
    Initialize a network parameter with pretrained values.
    We check that sizes are compatible.
    """
    param_value = param.get_value()
    if pretrained.size != param_value.size:
        raise Exception(
            "Size mismatch for parameter %s. Expected %i, found %i."
            % (name, param_value.size, pretrained.size)
        )
    param.set_value(np.reshape(
        pretrained, param_value.shape
    ).astype(np.float32))


def shared(shape, name):
    """
    Create a shared object of a numpy array.
    """
    if len(shape) == 1:
        value = np.zeros(shape)  # bias are initialized with zeros
    else:
        drange = np.sqrt(6. / (np.sum(shape)))
        value = drange * np.random.uniform(low=-1.0, high=1.0, size=shape)
    return theano.shared(value=value.astype(theano.config.floatX), name=name)


def create_dico(item_list):
    """
    Create a dictionary of items from a list of list of items.
    """
    assert type(item_list) is list
    dico = {}
    for items in item_list:
        for item in items:
            if item not in dico:
                dico[item] = 1
            else:
                dico[item] += 1
    return dico


def create_mapping(dico):
    """
    Create a mapping (item to ID / ID to item) from a dictionary.
    Items are ordered by decreasing frequency.
    """
    sorted_items = sorted(dico.items(), key=lambda x: (-x[1], x[0]))
    id_to_item = {i: v[0] for i, v in enumerate(sorted_items)}
    item_to_id = {v: k for k, v in id_to_item.items()}
    return item_to_id, id_to_item


def zero_digits(s):
    """
    Replace every digit in a string by a zero.
    """
    return re.sub('\d', '0', s)


def iob2(tags):
    """
    Check that tags have a valid IOB format.
    Tags in IOB1 format are converted to IOB2.
    """
    for i, tag in enumerate(tags):
        if tag == 'O':
            continue
        split = tag.split('-')
        if len(split) != 2 or split[0] not in ['I', 'B']:
            return False
        if split[0] == 'B':
            continue
        elif i == 0 or tags[i - 1] == 'O':  # conversion IOB1 to IOB2
            tags[i] = 'B' + tag[1:]
        elif tags[i - 1][1:] == tag[1:]:
            continue
        else:  # conversion IOB1 to IOB2
            tags[i] = 'B' + tag[1:]
    return True


def iob_iobes(tags):
    """
    IOB -> IOBES
    """
    new_tags = []
    for i, tag in enumerate(tags):
        if tag == 'O':
            new_tags.append(tag)
        elif tag.split('-')[0] == 'B':
            if i + 1 != len(tags) and \
               tags[i + 1].split('-')[0] == 'I':
                new_tags.append(tag)
            else:
                new_tags.append(tag.replace('B-', 'S-'))
        elif tag.split('-')[0] == 'I':
            if i + 1 < len(tags) and \
                    tags[i + 1].split('-')[0] == 'I':
                new_tags.append(tag)
            else:
                new_tags.append(tag.replace('I-', 'E-'))
        else:
            raise Exception('Invalid IOB format!')
    return new_tags


def iobes_iob(tags):
    """
    IOBES -> IOB
    """
    new_tags = []
    for i, tag in enumerate(tags):
        if tag.split('-')[0] == 'B':
            new_tags.append(tag)
        elif tag.split('-')[0] == 'I':
            new_tags.append(tag)
        elif tag.split('-')[0] == 'S':
            new_tags.append(tag.replace('S-', 'B-'))
        elif tag.split('-')[0] == 'E':
            new_tags.append(tag.replace('E-', 'I-'))
        elif tag.split('-')[0] == 'O':
            new_tags.append(tag)
        else:
            raise Exception('Invalid format!')
    return new_tags


def insert_singletons(words, singletons, p=0.5):
    """
    Replace singletons by the unknown word with a probability p.
    """
    new_words = []
    for word in words:
        if word in singletons and np.random.uniform() < p:
            new_words.append(0)
        else:
            new_words.append(word)
    return new_words


def pad_word_chars(words):
    """
    Pad the characters of the words in a sentence.
    Input:
        - list of lists of ints (list of words, a word being a list of char indexes)
    Output:
        - padded list of lists of ints
        - padded list of lists of ints (where chars are reversed)
        - list of ints corresponding to the index of the last character of each word
    """
    max_length = max([len(word) for word in words])
    char_for = []
    char_rev = []
    char_pos = []
    for word in words:
        padding = [0] * (max_length - len(word))
        char_for.append(word + padding)
        char_rev.append(word[::-1] + padding)
        char_pos.append(len(word) - 1)
    return char_for, char_rev, char_pos


def create_input(data, parameters, add_label, singletons=None):
    """
    Take sentence data and return an input for
    the training or the evaluation function.
    """
    words = data['words']
    chars = data['chars']
    if singletons is not None:
        words = insert_singletons(words, singletons)
    if parameters['cap_dim']:
        caps = data['caps']
    char_for, char_rev, char_pos = pad_word_chars(chars)
    input = []
    if parameters['word_dim']:
        input.append(words)
    if parameters['char_dim']:
        input.append(char_for)
        if parameters['char_bidirect']:
            input.append(char_rev)
        input.append(char_pos)
    if parameters['cap_dim']:
        input.append(caps)
    if add_label:
        input.append(data['tags'])
    return input


def evaluate(parameters, f_eval, raw_sentences, parsed_sentences,
             id_to_tag, dictionary_tags, eval_id):
    """
    Evaluate current model using CoNLL script.
    """
    n_tags = len(id_to_tag)
    predictions = []
    count = np.zeros((n_tags, n_tags), dtype=np.int32)

    for raw_sentence, data in zip(raw_sentences, parsed_sentences):
        input = create_input(data, parameters, False)
        if parameters['crf']:
            y_preds = np.array(f_eval(*input))[1:-1]
        else:
            y_preds = f_eval(*input).argmax(axis=1)
        y_reals = np.array(data['tags']).astype(np.int32)
        assert len(y_preds) == len(y_reals)
        p_tags = [id_to_tag[y_pred] for y_pred in y_preds]
        r_tags = [id_to_tag[y_real] for y_real in y_reals]
        if parameters['tag_scheme'] == 'iobes':
            p_tags = iobes_iob(p_tags)
            r_tags = iobes_iob(r_tags)
        for i, (y_pred, y_real) in enumerate(zip(y_preds, y_reals)):
            new_line = " ".join(raw_sentence[i][:-1] + [r_tags[i], p_tags[i]])
            predictions.append(new_line)
            count[y_real, y_pred] += 1
        predictions.append("")

    # Write predictions to disk and run CoNLL script externally
    #eval_id = np.random.randint(1000000, 2000000)
    output_path = os.path.join(eval_temp, "eval.%i.output" % eval_id)
    scores_path = os.path.join(eval_temp, "eval.%i.scores" % eval_id)
    with codecs.open(output_path, 'w', 'utf8') as f:
        f.write("\n".join(predictions))
    os.system("%s < %s > %s" % (eval_script, output_path, scores_path))

    # CoNLL evaluation results
    eval_lines = [l.rstrip() for l in codecs.open(scores_path, 'r', 'utf8')]
    #trainLog = open('train.log', 'w')
    for line in eval_lines:
        print line
        #trainLog.write("%s\n" % line)


    # Remove temp files
    # os.remove(output_path)
    # os.remove(scores_path)

    # Confusion matrix with accuracy for each tag
    print ("{: >2}{: >7}{: >7}%s{: >9}" % ("{: >7}" * n_tags)).format(
        "ID", "NE", "Total",
        *([id_to_tag[i] for i in xrange(n_tags)] + ["Percent"])
    )
    for i in xrange(n_tags):
        print ("{: >2}{: >7}{: >7}%s{: >9}" % ("{: >7}" * n_tags)).format(
            str(i), id_to_tag[i], str(count[i].sum()),
            *([count[i][j] for j in xrange(n_tags)] +
              ["%.3f" % (count[i][i] * 100. / max(1, count[i].sum()))])
        )

    # Global accuracy
    print "%i/%i (%.5f%%)" % (
        count.trace(), count.sum(), 100. * count.trace() / max(1, count.sum())
    )

    # F1 on all entities
    return float(eval_lines[1].strip().split()[-1])

在windows中,路径由反斜杠
\
给出,而不是linux/unix中使用的正斜杠
/

如果文件返回1个文件夹,请尝试像吹一样吹:

models_path = "..\models"
eval_path = "..\evaluation"

在windows中,路径由反斜杠
\
给出,而不是linux/unix中使用的正斜杠
/

如果文件返回1个文件夹,请尝试像吹一样吹:

models_path = "..\models"
eval_path = "..\evaluation"

这个“tag_scheme…”目录名异常长,只有212个字符。最大DOS路径长度为260个字符,相对于“\models”,您可能超过了该长度。您可以尝试使用
models\u path=u“\\\\?\\”+os.path.abspath(u“\\models”)
。“\\?\”前缀最多支持32760个字符的路径,但路径必须是Unicode、完全限定的,并且使用反斜杠而不是正斜杠。如果库不能正确处理Unicode路径,这可能会导致另一个错误。为Python2编写的代码往往很幼稚,在这方面失败了。Python 3通常更好。在这种情况下,Windows 10中的Python 3.6会更好,因为它允许长路径,而不需要“\\?\”前缀。感谢您通过设置eval\\\?\”path=u“\\\\?\”+os.path.abspath(u“\\evaluation”)解决了同一文件中的另一个错误@根据中的注释,该变量仍存在一些与路径相关的问题。你能再看一下吗?这个“标签方案…”目录名异常长,只有212个字符。最大DOS路径长度为260个字符,相对于“\models”,您可能超过了该长度。您可以尝试使用
models\u path=u“\\\\?\\”+os.path.abspath(u“\\models”)
。“\\?\”前缀最多支持32760个字符的路径,但路径必须是Unicode、完全限定的,并且使用反斜杠而不是正斜杠。如果库不能正确处理Unicode路径,这可能会导致另一个错误。为Python2编写的代码往往很幼稚,在这方面失败了。Python 3通常更好。在这种情况下,Windows 10中的Python 3.6会更好,因为它允许长路径,而不需要“\\?\”前缀。感谢您通过设置eval\\\?\”path=u“\\\\?\”+os.path.abspath(u“\\evaluation”)解决了同一文件中的另一个错误@根据中的注释,该变量仍存在一些与路径相关的问题。你能再检查一下吗?谢谢你解决了这个错误,但我在同一个项目的另一个文件中发现了另一个错误。例外:在“.\evaluation\conlleval”中找不到CoNLL评估脚本。我应该为它创建一个不同的问题吗?@RabiaNoureen,是的,你可以为此创建一个新问题。如果此解决方案有帮助,您可以选择答案。感谢大家的合作。我替换了两行模型\u path=u“\\\\?\”+os.path.abspath(u“\\models”)eval\u path=u“\\\\?\”+os.path.abspath(u“\\evaluation”)并运行脚本,现在我得到了文件“E:\New Code\tagger master\tagger master\train.py”,第221行,在dev\u数据中,id\u to\u标记,dico\u标记,历元)文件“utils.py”,第284行,在evaluate return float(eval_lines[1].strip().split()[-1])索引器中:列表索引超出范围如果您能帮助我解决这个问题,我将不胜感激,因为在过去的1.5个月里,我一直在使用这个脚本。@RabiaNoureen,我当然会帮助您,但我需要访问您的代码。我们可以通过Teamviewer进行连接,以便我可以访问您的代码吗?谢谢您解决了此错误,但我在同一项目的其他文件中遇到了其他错误。例外:在“.\evaluation\conlleval”中找不到CoNLL评估脚本。我是否应该为此创建其他问题?@RabiaNoureen,是的,您可以为此创建新问题。如果此解决方案有帮助,您可以选择答案。感谢大家的合作。我替换了两行模型\u path=u“\\\\?\”+os.path.abspath(u“\\models”)eval\u path=u“\\\\?\”+os.path.abspath(u“\\evaluation”)并运行脚本,现在我得到了文件“E:\New Code\tagger master\tagger master\train.py”,第221行,在dev\u数据中,id\u to\u标记,dico\u标记,历元)文件“utils.py”,第284行,在evaluate return float(eval_lines[1].strip().split()[-1])索引器中:列表索引超出范围如果您能帮助我解决这个问题,我将不胜感激,因为在过去的1.5个月里,我一直在使用这个脚本。@RabiaNoureen,我当然会帮助您,但我需要访问您的代码。我们可以通过Teamviewer进行连接,以便我可以访问您的代码吗?