Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
Python 2.7 属性错误:在SpaCy NLP中培训POS标记时出现问题_Python 2.7_Nlp_Spacy - Fatal编程技术网

Python 2.7 属性错误:在SpaCy NLP中培训POS标记时出现问题

Python 2.7 属性错误:在SpaCy NLP中培训POS标记时出现问题,python-2.7,nlp,spacy,Python 2.7,Nlp,Spacy,输出返回以下错误信息:- from __future__ import unicode_literals from __future__ import print_function import plac from pathlib import Path from spacy.vocab import Vocab from spacy.tagger import Tagger from spacy.tokens import Doc from spacy.gold import GoldPa

输出返回以下错误信息:-

from __future__ import unicode_literals
from __future__ import print_function

import plac
from pathlib import Path

from spacy.vocab import Vocab
from spacy.tagger import Tagger
from spacy.tokens import Doc
from spacy.gold import GoldParse

import random


TAG_MAP = {
    'N': {"pos": "NOUN"},
    'V': {"pos": "VERB"},
    'J': {"pos": "ADJ"}
}

# Usually you'll read this in, of course. Data formats vary.
# Ensure your strings are unicode.
DATA = [
    (
        ["ids", "id's", "invoiceid", "invoice_id", "Ray"],
        ["N", "N", "N", "N", "N"]
    )
]


def ensure_dir(path):
    if not path.exists():
        path.mkdir()


def main(output_dir=None):
    output_dir = '/home/Ray/Tagger'
    if output_dir is not None:
        output_dir = Path(output_dir)
        ensure_dir(output_dir)
        ensure_dir(output_dir / "pos")
        ensure_dir(output_dir / "vocab")

    vocab = Vocab(tag_map=TAG_MAP)

    tagger = Tagger(vocab)
    for i in range(25):
        for words, tags in DATA:
            doc = Doc(vocab, words=words)
            gold = GoldParse(doc, tags=tags)
            tagger.update(doc, gold)
        random.shuffle(DATA)
    tagger.model.end_training()
    doc = Doc(vocab, orths_and_spaces=zip(
        ["ID", "Id", "iD", "IDs", "id", "ids", "id's", "ID's", "invoice id", "inv id", "ray"], [True] * 11))
    tagger(doc)
    for word in doc:
        print(word.text, word.tag_, word.pos_)
    if output_dir is not None:
        tagger.model.dump(str(output_dir / 'pos' / 'model'))
        with (output_dir / 'vocab' / 'strings.json').open('w') as file_:
            tagger.vocab.strings.dump(file_)


if __name__ == '__main__':
    plac.call(main)
ID N名词
Id N名词
iD N名词
名词
id N名词
名词
id是N个名词
ID是N个名词
发票id N名词
inv id N名词
名词
回溯(最近一次呼叫最后一次):
文件“/home/Ray/spaCy-2.0.0-alpha/examples/training/train_tagger.py”,第75行,in
位置呼叫(主)
文件“/usr/local/lib/python2.7/dist packages/plac_core.py”,第328行,在调用中
cmd,result=parser.consume(arglist)
文件“/usr/local/lib/python2.7/dist-packages/plac_-core.py”,第207行,共页
return cmd,self.func(*(args+varargs+extraopts),**kwargs)
文件“/home/Ray/spaCy-2.0.0-alpha/examples/training/train_tagger.py”,第71行,主文件
tagger.vocab.strings.dump(文件)
AttributeError:'spacy.strings.StringStore'对象没有属性'dump'
进程已完成,退出代码为1
如果我没有给出路径(即:Output_dir='/path'),那么它就可以正常工作。
如果我不给出任何路径,我将如何找到“pos”和“vocab”文件夹的生成位置。请帮助将StringStore.dump替换为StringStore.to_磁盘和StringStore.to_字节。
这已在新文档中更新。

在spacy v2中,所有序列化方法都已更新为使用一致的API

因此,StringStore.dump已替换为StringStore.to\磁盘和StringStore.to\字节


我认为这应该是可行的。

问题显然在于第71行:
tagger.vocab.strings.dump(file)
–您使用的对象没有
dump()
方法,就像错误消息告诉您的那样。如果未指定路径,则不会看到错误消息,原因很简单,即未执行整个最后一个块(因为如果
output\u dir
不是
None
,则只执行一次)。在这种情况下,根本不会生成“pos”和“vocab”文件夹,因此无法找到它们。但我必须从输出目录中获取数据。另外,它导入的文件有一个Dump()方法。
ID N NOUN
Id N NOUN
iD N NOUN
IDs N NOUN
id N NOUN
ids N NOUN
id's N NOUN
ID's N NOUN
invoice id N NOUN
inv id N NOUN
ray N NOUN
Traceback (most recent call last):
  File "/home/Ray/spaCy-2.0.0-alpha/examples/training/train_tagger.py", line 75, in <module>
    plac.call(main)
  File "/usr/local/lib/python2.7/dist-packages/plac_core.py", line 328, in call
    cmd, result = parser.consume(arglist)
  File "/usr/local/lib/python2.7/dist-packages/plac_core.py", line 207, in consume
    return cmd, self.func(*(args + varargs + extraopts), **kwargs)
  File "/home/Ray/spaCy-2.0.0-alpha/examples/training/train_tagger.py", line 71, in main
    tagger.vocab.strings.dump(file_)
AttributeError: 'spacy.strings.StringStore' object has no attribute 'dump'

Process finished with exit code 1