找出一个文本与一个类分类器(NLP)有多相似

2024-09-28 05:25:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的数据集,包含了将近5亿条推文。我正在做一些关于公司如何参与激进主义的研究,到目前为止,我已经给tweets贴上了标签,根据tweets中某些标签的存在,这些tweets可以被归为激进主义类别。你知道吗

现在,让我们假设公司在tweet上发布一个关于激进主义的话题,而没有在tweet中插入任何标签。我的代码不会对它进行分类,我的想法是只运行一个类的SVM分类器。你知道吗

这导致了以下问题:

  • 这个解决方案在科学上可行吗?你知道吗
  • 是否存在其他任何一个类分类器?你知道吗
  • (最重要的是)有没有其他方法可以找到一条tweet是否与包含激进主义标签的tweet相似?你知道吗

提前感谢您的帮助!你知道吗


Tags: 数据方法代码分类器分类公司科学标签
2条回答

您已经描述了一类称为“积极无标签学习”的问题的设置。这个名字来源于这样一个事实:你有两种类型的数据:阳性(“激进主义”标签)和未标记(可能是“激进主义”,可能不是)。你的想法,使用支持向量机,是常见的,因为是随机森林。然而,就像所有的ML问题一样,神经网络正变得越来越普遍。你知道吗

pywsl是一个“弱监督”库,其中包含一些PUL实现(PUL是一种弱监督)。下面是一个在一些合成数据上使用它的示例

import numpy as np

from sklearn.model_selection import GridSearchCV, StratifiedKFold
from sklearn.utils.estimator_checks import check_estimator

from pywsl.pul import pumil_mr
from pywsl.utils.syndata import gen_twonorm_pumil
from pywsl.utils.comcalc import bin_clf_err


def main():
    prior = .5
    x, y, x_t, y_t = gen_twonorm_pumil(n_p=30, n_u=200, 
                                       prior_u=prior, n_t=100)
    param_grid = {'prior': [prior], 
                  'lam': np.logspace(-3, 1, 5), 
                  'basis': ['minimax']}
    lambda_list = np.logspace(-3, 1, 5)
    clf = GridSearchCV(estimator=pumil_mr.PUMIL_SL(), 
                       param_grid=param_grid,
                       cv=5, n_jobs=-1)
    clf.fit(x, y)
    y_h = clf.predict(x_t)
    err = 100*bin_clf_err(y_h, y_t, prior)
    print("MR: {}%".format(err))


if __name__ == "__main__":
    main()

另外,请看这个可能重复的问题Binary semi-supervised classification with positive only and unlabeled data set

samh对如何使用数据集有一个很好的答案,但我强烈建议对数据进行注释,这样你就有几百个否定的例子,这应该不到一个小时。根据你对“能动性”的定义有多宽泛,用标准方法来做一个好的分类器应该足够了。你知道吗

相关问题 更多 >

    热门问题