情感分析的最佳预处理技术有哪些?

我正在尝试将一组评论数据集分类为两个类别,假设为类别A和类别B。我使用LightGBM进行分类。

我多次更改了分类器的参数,但结果没有显著差异。

我认为问题出在预处理步骤上。我定义了一个函数来处理预处理,如下所示。我使用了Stemming并移除了stopwords。我不知道还缺少什么。我尝试过LancasterStemmerPorterStemmer

stops = set(stopwords.words("english"))def cleanData(text, lowercase = False, remove_stops = False, stemming = False, lemm = False):    txt = str(text)    txt = re.sub(r'[^A-Za-z0-9\s]',r'',txt)    txt = re.sub(r'\n',r' ',txt)    if lowercase:        txt = " ".join([w.lower() for w in txt.split()])    if remove_stops:        txt = " ".join([w for w in txt.split() if w not in stops])    if stemming:        st = PorterStemmer()        txt = " ".join([st.stem(w) for w in txt.split()])    if lemm:        wordnet_lemmatizer = WordNetLemmatizer()        txt = " ".join([wordnet_lemmatizer.lemmatize(w) for w in txt.split()])    return txt

还有哪些预处理步骤可以提高准确性?

数据集的URL:数据集

编辑:

我使用的参数如下所示。

params = {'task': 'train',    'boosting_type': 'gbdt',    'objective': 'binary',    'metric': 'binary_logloss',    'learning_rate': 0.01,     'max_depth': 22,     'num_leaves': 78,    'feature_fraction': 0.1,     'bagging_fraction': 0.4,     'bagging_freq': 1}

我调整了depthnum_leaves参数以及其他参数。但准确率似乎卡在某个水平上…


回答:

需要考虑几件事。首先,您的训练集不平衡 – 类别分布大约是70%/30%。您需要在训练时考虑到这一事实。您使用的是什么类型的特征?使用正确的特征集可能会提高您的性能。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注