如何为已实例化的Vader模型对象添加predict_proba方法?
解决Vader实例添加predict_proba方法的报错问题
报错原因
直接将普通函数赋值给实例属性时,Python不会自动把当前实例作为self参数传入,导致调用时缺少必要的位置参数。另外你代码里还有个小错误:Vader的polarity_scores返回的负面得分键是neg,不是negative,直接用get('negative')会返回None。
正确实现方法
方法1:使用types.MethodType绑定实例方法
通过types.MethodType可以把普通函数绑定为实例的方法,这样调用时self会自动传入:
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer import types # 实例化模型 vader = SentimentIntensityAnalyzer() # 定义predict_proba方法 def predict_proba(self, text): return self.polarity_scores(text).get('neg') # 将函数绑定为vader实例的方法 vader.predict_proba = types.MethodType(predict_proba, vader) # 测试调用 print(vader.predict_proba('This text is awful')) # 输出:0.5
方法2:使用lambda简化实现
如果逻辑简单,可以直接用lambda表达式绑定,不需要额外导入模块:
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer vader = SentimentIntensityAnalyzer() # 直接定义lambda作为实例方法 vader.predict_proba = lambda text: vader.polarity_scores(text).get('neg') # 测试调用 print(vader.predict_proba('This text is awful')) # 输出:0.5
内容的提问来源于stack exchange,提问作者Arturo Sbr
相关产品推荐
相关产品推荐

