决定一篇文章是关于;专题A;或者不使用-NLP和Python

决定一篇文章是关于;专题A;或者不使用-NLP和Python,python,nlp,nltk,word2vec,Python,Nlp,Nltk,Word2vec,我正在尝试编写一个python程序,该程序将决定给定的帖子是否与志愿服务相关。我的数据集很小(只有帖子,需要逐个检查),所以像LDA这样的方法不会产生结果 我的最终目标是一个简单的对/错,一篇关于这个主题的帖子与否 我正在尝试这种方法: 使用谷歌的word2vec模型,我创建了一个类似于“志愿者”这个词的“集群” 获取帖子并使用谷歌翻译将其翻译成英语 使用NLTK清理翻译后的文章(删除停止词、标点符号并使文章语法化) 用翻译过的干净的帖子鞠躬 这个阶段对我来说很难。我想计算一个“距离”/“相似性

我正在尝试编写一个python程序,该程序将决定给定的帖子是否与志愿服务相关。我的数据集很小(只有帖子,需要逐个检查),所以像LDA这样的方法不会产生结果

我的最终目标是一个简单的对/错,一篇关于这个主题的帖子与否

我正在尝试这种方法:

  • 使用谷歌的word2vec模型,我创建了一个类似于“志愿者”这个词的“集群”
  • 获取帖子并使用谷歌翻译将其翻译成英语
  • 使用NLTK清理翻译后的文章(删除停止词、标点符号并使文章语法化)
  • 用翻译过的干净的帖子鞠躬
  • 这个阶段对我来说很难。我想计算一个“距离”/“相似性”/一些可以帮助我得到我想要的正确/错误答案的东西,但我想不出一个好方法来做到这一点

  • 提前感谢您的建议和帮助。

    您试图凭直觉即兴制定一套步骤,最终将这些帖子分为两类,“志愿服务”和“非志愿服务”

    您应该寻找与您的任务类似的在线“文本分类”示例,通过它们(使用原始演示数据)进行理解,然后逐步调整它们以使用您的数据

    在某种程度上,word2vec可能对您的任务有帮助,但我不会从它开始。类似地,消除停止词、执行柠檬化等最终可能会有所帮助,但在前面不必很重要

    您通常希望从获取(如有必要,通过手动标记)一组培训文本开始,您知道“自愿”或“非自愿”值(已知标签)

    然后,为文本创建一些特征向量——一个简单的开始方法是“单词袋”表示法,它为以后的改进提供了一个快速基线

    然后,将这些表示和已知的标签一起提供给一些现有的分类算法。Python中流行的
    scikit learn
    包提供了许多功能。也就是说:您还不必担心如何选择计算“距离”/“相似性”/(将指导您自己的特殊分类器的东西)的方法。只需将标记的数据输入一个(或多个)现有分类器,并检查它们的性能。许多人会在内部使用各种类型的相似性/距离计算-但这是自动和明确的选择和配置算法

    最后,当您有工作要做时,无论结果如何温和,请尝试其他预处理文本(停止单词删除、柠檬化等)、特征化文本和其他分类器/算法参数化的方法,以比较结果,从而发现在给定您的特定数据的情况下,哪些方法效果良好,目标和实际限制

    scikit学习
    值得回顾和研究,它们有助于了解替代技术和主要算法的广泛领域,以及不同的技术和算法适用于您的任务


    此外,
    scikit learn
    像Jake Vanderplas()和Olivier Grisel()这样的贡献者/教育者有许多在线笔记本/教程/归档视频演示文稿,它们逐步解决了所有基本问题,通常包括与您类似的文本分类问题。

    感谢您提供了信息丰富的答案。我将开始学习scikit learn和您提供的git回购。我有一个问题,如果我理解正确,特征向量可以类似于我创建的“集群”?只有一些潜在的分类器,你可以很容易地尝试,一旦你有了基本的管道,将字面上计算一个新的候选文本向量的摘要值“相似性”到一些“集群”。(而且,这些可能不是性能最好的分类器!)因此不要过分关注这种方法,即使它在直觉上很有吸引力。相反,一些可用的分类器基本上会学习专门的领域特定比较器,比您天真地计算输入文本向量之间的原始向量相似度更强大/更有利地加权。我最大的问题是无法获取大型数据集。我找不到好的数据来处理,手动标记数千个集合将花费太多时间。我从一个集群和一个弓开始,作为我的“过滤器”的测试版,因为我没有数据可以处理。在运行我的第一个过滤器之后,我希望获得数据,可能不太可靠,但数据不太可靠。在手工标注上述数据后,我将开始研究文本分类,但现在我不能这样做。这总是一个挑战,但任何分类工作都高度依赖于可收集的“基本事实”标注示例的数量。许多分类器不仅可以输出一个类,还可以输出一个置信度。因此,一旦你有了一个基线——这可能只是少数几个手工标注的强示例——你就可以将额外的标注注意力转移到“困难的”/“低置信度的示例上。一旦您可以将初始/测试系统部署到更多的受众,您就可以让他们标记/纠正错误,从而快速增加有效的培训数据。
        CLUSTER = [x[0] for x in MODEL.most_similar_cosmul("volunteer", topn=120)]