0

我正在尝试使用 TextBlob 在 Power BI 中执行情绪分析。我想使用 lamdba 表达式,因为它似乎比在 Power BI 中运行迭代循环要快得多。

例如,使用文本 Blob:

dataset['Polarity Score'] =dataset['Comment'].apply(lambda x: TextBlob(str(x).lower()).sentiment.polarity) 

创建一个名为“极性分数”的 Power BI 数据列,其中包含来自 TextBlob 的数值。

我想对 TextBlob.classify() 函数做类似的事情。但是,我不知道如何将分类器的第二个参数传递给它。

教程展示了如何创建和使用分类器:

from textblob.classifiers import NaiveBayesClassifier
from textblob import TextBlob

cl = NaiveBayesClassifier(train)
blob = TextBlob("The beer is good. But the hangover is horrible.", classifier=cl)
blob.classify()

我试过了

dataset['Polarity Class'] =dataset['Comment'].apply(lambda x: TextBlob(str(x).lower()).classify(), classifier=cl)

dataset['Polarity Class'] =dataset['Comment'].apply(lambda x,y: TextBlob(str(x).lower()).classify(), y=cl)

两者都不起作用并指出我通过分类器的方式。如何在 lambda 表达式中传递分类器参数?

4

1 回答 1

1

简单地

cl = NaiveBayesClassifier(train)
dataset['Polarity Class'] = dataset['Comment'].apply(
    lambda x: TextBlob(str(x).lower(), classifier=cl).classify()
)

或者,如果您想重构可能令人困惑的 lambda 表达式,

cl = NaiveBayesClassifier(train)

def classify(x):
    return TextBlob(str(x).lower(), classifier=cl).classify()

dataset['Polarity Class'] = dataset['Comment'].apply(classify)

是等价的。

于 2020-02-18T15:54:11.590 回答