python - 主题或标签建议算法

标签 python machine-learning nlp topic-modeling

问题是:当给定一段文本时,我想建议可能的主题。例如,有关科比·布莱恩特的新闻文章会建议使用以下标签:“篮球”、“nba”、“体育”。

我有一个相当大的训练数据集(350k+),其中包括文本正文和用户分配给文本的标签。大约有 40k 个预先存在的主题;然而,许多主题中没有太多条目。我想说只有大约 5k 的主题包含超过 10 个条目。用户无法分配系统中尚不存在的主题。我还想包括这一点

有人对可以使用的算法有什么建议吗?

如果有人对 python 库有任何建议,那就太棒了。

最佳答案

已经有人尝试解决类似的问题 - 一个例子就在这里 - stackoverflow。当你写下你的问题时,stackoverflow 本身会在没有你干预的情况下建议一些标签,尽管你可以手动添加或删除它们。

由于标签数量非常巨大,开箱即用的分类将会失败。您可以通过两个方向来解决此问题。

  1. 最近邻居 简单、快速、有效。您有一个带标签的训练集。当新文档出现时,您会寻找最接近的匹配项,例如“标签”、“训练”、“数据集”、“标签”等词可以帮助您找到 StackOverflow 上其他类似问题的问题图。在这些问题中,存在机器学习标签 - 所以建议使用这个标签。最好的实现方法是对训练数据建立索引(搜索引擎策略)。你可以使用 Lucene、Elastic Search 或类似的东西。当出现新文档时,将其用作查询并搜索之前存储的前 10 个匹配文档。轮询他们的标签。对标签进行排序并使用文档的分数来确定标签的重要性。完毕。

  2. 概率模型 想法是分类的,但现成的工具无法帮助你。检查类似 Clayton Stanley, Predicting Tags for StackOverflow Posts 的作品, Darren Kuo, On Word Prediction MethodsSchuster's report on Predicting Tags for StackOverflow Questions

如果您在长期学术项目或研究中遇到了这个问题,那么采用方法 2 会更好。但是,如果您需要现成的解决方案,请使用方法 1。Lucene 是一种出色的索引工具,即使在生产中也可以使用。它最初是用 Java 编写的,但您可以轻松找到 Python 的包装器。其他替代方案是 Elastic SearchKatta 等等。

附:使用标签分数时需要进行大量实验。

关于python - 主题或标签建议算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30812466/

相关文章:

python - 有没有什么方法可以改变多类分类问题中目标类的数量?

python - 多用户和 Django

Python用win32print打印pdf文件

python - python中有getch()模拟吗?

python - scikit learn 中特征缩放的使用

python - Tensorflow 2.0如何从Keras模型导出预测和训练模式

deep-learning - 非连续标记的 NER 标记模式

java - 我如何学习*实用的*自然语言处理?

python - Mypy:帮助装饰者注释多重分派(dispatch)的泛型

r - 为什么较小的树上的 RMSE 值会增加 (RPART)