machine-learning - 从文本中找到的单词进行机器学习

标签 machine-learning

我想使用监督机器学习算法根据句子中是否存在单词来预测一组句子的二元函数(真或假)。

理想情况下,我希望避免对用于决定输出的单词集进行硬编码,以便算法自动学习哪些单词(一起?)最有可能触发特定输出。

http://shop.oreilly.com/product/9780596529321.do (编程集体智能)在第 4 章中有一个很好的部分,标题为“从点击中学习”,它描述了如何通过在神经网络中使用 1 层隐藏节点来实现这一点,并为每个新的输入单词组合一个新的隐藏节点。

类似地,可以为训练数据集中的每个单词创建一个特征,并使用这些特征训练几乎任何经典的机器学习算法。添加新的训练数据将生成新的功能,这将需要我从头开始重新训练算法。

这让我想到了我的问题:

  • 如果每当扩展训练数据集时我都必须从头开始重新训练所有内容,这实际上是一个问题吗?
  • 对于此类问题,更有经验的机器学习用户会推荐使用哪种算法?
  • 我应该使用什么标准来选择一种算法而不是另一种算法? (除了实际尝试所有这些方法并看看哪个在精确度/召回率指标上表现更好)
  • 如果您曾经解决过类似的问题,那么用 2-gram 扩展功能怎么样(如果存在特定的 2-gram,则为 1,如果不存在,则为 0)? 3克?

最佳答案

如果您想查找通常一起出现的单词,您可以查看主题建模的一般领域。

最简单的方法是使用潜在语义分析 ( http://en.wikipedia.org/wiki/Latent_semantic_analysis ),这只是将 SVD 应用于术语文档矩阵。然后,您需要进行一些额外的事后分​​析,以使其适合您的特定结果。

更复杂、更复杂的方法是使用潜在狄利克雷分配 ( http://en.wikipedia.org/wiki/Latent_Dirichlet_allocation )

就添加新功能(单词)而言,只要您要重新训练就可以了。您还可以在表示矩阵时使用 TF/IDF 为该特定单词赋予一个值(而不仅仅是 1 或 0)。

我不知道你想用什么编程语言来做到这一点,但我知道 Java 和 Python 中有一些库可以完成上述所有操作。

关于machine-learning - 从文本中找到的单词进行机器学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11878872/

相关文章:

python - Tensorflow机器之间损失的主要差异

python - TensorFlow 训练 - "Batch size"和 tf.unpack - 解包非 "batch sized"动态值?

python-3.x - XGBoost 模型树值(value)洞察

R 的随机森林无法分配大小为 7.5 Gb 的向量

machine-learning - ValueError : The name "Sequential" is used 4 times in the model. 所有图层名称都应该是唯一的吗?

machine-learning - CART算法使用的离散化方法是什么?

machine-learning - 使用分类特征构建回归

python - 如何使用 scikit learn 向量化标记的二元组?

machine-learning - 属性的特征缩放

numpy - 数据集中模式的随机化