Python 查找文本的相似程度-一类分类器(NLP)

Python 查找文本的相似程度-一类分类器(NLP),python,twitter,nlp,classification,text-classification,Python,Twitter,Nlp,Classification,Text Classification,我有一个很大的数据集,包含了近5亿条推文。我正在做一些关于公司如何参与激进主义的研究,到目前为止,我已经给推文贴上了标签,根据推文中某些标签的存在,这些推文可以归类为激进主义类别 现在,让我们假设公司在推特上发布关于激进主义主题的信息,而没有在推特中插入任何标签。我的代码不会对它进行分类,我的想法是只使用一个类运行SVM分类器 这导致了以下问题: 这个解决方案在科学上可行吗 是否存在其他任何一个类分类器 (最重要的是)有没有其他方法可以找到一条tweet是否与包含激进主义标签的tweet类似

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

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

这导致了以下问题:

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

提前感谢您的帮助

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

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

将numpy导入为np
从sklearn.model_选择导入GridSearchCV,StratifiedKFold
从sklearn.utils.estimator\u checks导入检查\u estimator
来自pywsl.pul进口pumil_先生
从pywsl.utils.syndata导入gen\u twoonorm\u pumil
从pywsl.utils.com导入bin\u clf\u err
def main():
先验=.5
x、 y,x\u t,y\u t=gen\u twoonorm\u pumil(n\u p=30,n\u=200,
优先权=优先权,n\u t=100)
参数网格={'prior':[prior],
“lam”:np.logspace(-3,1,5),
'基础':['minimax']}
lambda_list=np.logspace(-3,1,5)
clf=GridSearchCV(估计器=pumil_先生pumil_SL(),
参数网格=参数网格,
cv=5,n_作业=-1)
clf.配合(x,y)
y_h=clf.predict(x_t)
err=100*bin\u clf\u err(是,是,之前)
打印(“MR:{}%.”格式(err))
如果名称=“\uuuuu main\uuuuuuuu”:
main()

另外,请参阅这个可能重复的问题,

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

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

将numpy导入为np
从sklearn.model_选择导入GridSearchCV,StratifiedKFold
从sklearn.utils.estimator\u checks导入检查\u estimator
来自pywsl.pul进口pumil_先生
从pywsl.utils.syndata导入gen\u twoonorm\u pumil
从pywsl.utils.com导入bin\u clf\u err
def main():
先验=.5
x、 y,x\u t,y\u t=gen\u twoonorm\u pumil(n\u p=30,n\u=200,
优先权=优先权,n\u t=100)
参数网格={'prior':[prior],
“lam”:np.logspace(-3,1,5),
'基础':['minimax']}
lambda_list=np.logspace(-3,1,5)
clf=GridSearchCV(估计器=pumil_先生pumil_SL(),
参数网格=参数网格,
cv=5,n_作业=-1)
clf.配合(x,y)
y_h=clf.predict(x_t)
err=100*bin\u clf\u err(是,是,之前)
打印(“MR:{}%.”格式(err))
如果名称=“\uuuuu main\uuuuuuuu”:
main()

另外,请看这个可能重复的问题,

Sam H对如何按原样使用数据集有一个很好的答案,但我强烈建议对数据进行注释,这样您就有几百个负面示例,这应该需要不到一个小时的时间。根据你对“行动主义”的定义有多宽泛,这对于使用标准方法制作一个好的分类器来说应该足够了。

Sam H对如何使用数据集有一个很好的答案,但我强烈建议对数据进行注释,这样你就有几百个负面示例,这应该需要不到一个小时的时间。这取决于你对“行动主义”的定义有多宽泛,这对于使用标准方法制作一个好的分类器来说应该足够了。

SamH同意这一点。我试着回答这个问题,但这是一个很好的建议,Samh同意这一点。我试图回答这个问题,但这是一个很好的建议