gpt4 book ai didi

python - 用 spaCy 标记一个已经标记化的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:11 24 4
gpt4 key购买 nike

为了进行比较研究,我正在处理已经标记化的数据(不是 spacy)。我需要使用这些标记作为输入,以确保我在所有方面都使用相同的数据。我希望将这些标记输入 spaCy 的标记器,但以下操作失败了:

import spacy

nlp = spacy.load('en', disable=['tokenizer', 'parser', 'ner', 'textcat'])
sent = ['I', 'like', 'yellow', 'bananas']

doc = nlp(sent)

for i in doc:
print(i)

有以下踪迹

Traceback (most recent call last):
File "C:/Users/bmvroy/.PyCharm2018.2/config/scratches/scratch_6.py", line 6, in <module>
doc = nlp(sent)
File "C:\Users\bmvroy\venv\lib\site-packages\spacy\language.py", line 346, in __call__
doc = self.make_doc(text)
File "C:\Users\bmvroy\venv\lib\site-packages\spacy\language.py", line 378, in make_doc
return self.tokenizer(text)
TypeError: Argument 'string' has incorrect type (expected str, got list)

首先,我不确定为什么 spaCy 会尝试标记输入,因为我在 load() 语句中禁用了标记器。其次,显然这不是要走的路。

我正在寻找一种方法来为标记器提供标记列表。 spaCy 可以吗?


我尝试了@aab 结合来自the documentation 的信息提供的解决方案但无济于事:

from spacy.tokens import Doc
from spacy.lang.en import English
from spacy.pipeline import Tagger

nlp = English()
tagger = Tagger(nlp.vocab)

words = ['Listen', 'up', '.']
spaces = [True, False, False]

doc = Doc(nlp.vocab, words=words, spaces=spaces)
processed = tagger(doc)
print(processed)

此代码没有运行,并给出了以下错误:

    processed = tagger(doc)
File "pipeline.pyx", line 426, in spacy.pipeline.Tagger.__call__
File "pipeline.pyx", line 438, in spacy.pipeline.Tagger.predict
AttributeError: 'bool' object has no attribute 'tok2vec'

最佳答案

您需要使用替代方法直接使用 Doc 类构建文档。这是他们的文档 ( https://spacy.io/api/doc ) 中的示例:

from spacy.tokens import Doc
doc = Doc(nlp.vocab, words=[u'hello', u'world', u'!'], spaces=[True, False, False])

spaces 参数(每个标记后是否跟一个空格)是可选的。

然后你可以运行你需要的组件,所以整个事情看起来像:

import spacy
from spacy.tokens import Doc

nlp = spacy.load('en')
doc = Doc(nlp.vocab, words=[u'hello', u'world', u'!'], spaces=[True, False, False])

nlp.tagger(doc)
nlp.parser(doc)

for t in doc:
print(t.text, t.pos_, t.tag_, t.dep_, t.head)

关于python - 用 spaCy 标记一个已经标记化的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52609382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com