Spacy 如何在跨度上设置情绪属性?
我正在尝试spacy的Keras示例,但不是像那样在Spacy 如何在跨度上设置情绪属性?,spacy,Spacy,我正在尝试spacy的Keras示例,但不是像那样在Doc中计算情绪分数 for sent, label in zip(sentences, ys): sent.doc.sentiment += label - 0.5 for sent, label in zip(sentences, ys): sent.sentiment = float(label) 我想把分数保持在句子的水平上 for sent, label in zip(sentences, ys): sent.doc.
Doc
中计算情绪分数
for sent, label in zip(sentences, ys):
sent.doc.sentiment += label - 0.5
for sent, label in zip(sentences, ys):
sent.sentiment = float(label)
我想把分数保持在句子的水平上
for sent, label in zip(sentences, ys):
sent.doc.sentiment += label - 0.5
for sent, label in zip(sentences, ys):
sent.sentiment = float(label)
这个代码给了我那个错误
AttributeError: attribute 'sentiment' of 'spacy.tokens.span.Span' objects is not writable
有一个setter来代替吗?我试着设置情绪,但没有成功。
我错过什么了吗?这是一个bug吗?您可以找到
Span.touction
的实现。您可以看到它确实是不可写的,因为它要么在self.doc.user\u span\u hooks
中查找值,要么对该范围内的令牌取token.touction
的平均值
[编辑如下]
但是,标记的情绪并不依赖于上下文。它使用基础文档中存在的信息。这意味着任何单词,如“爱”,在任何句子/上下文中都具有相同的情感价值
因此,你可以做两件事:要么像这样根据词素的情绪来写:
vocab["love"].sentiment = 3.0
或者实现一个自定义钩子,允许您定义任何想要的函数。您可以在span(doc.user\u span\u hooks
)或令牌(doc.user\u token\u hooks
)级别执行此操作:
我对Token
也有同样的问题:AttributeError:attribute'thiotation'的'spacy.tokens.Token.Token'对象是不可写的
你是对的,我最初的答案不是完全正确的。我更新了它<代码>用户链接
工作。使用user\u span\u hooks
而不是扩展属性
有什么好处?我认为在这种情况下,差别很小,但是如果使用带有键“touction”的用户hooks,则具有span.touction
和token.touction
的额外优势。