机器从文本中找到的单词学习

时间:2012-08-09 07:45:06

标签: machine-learning

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

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

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

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

这让我想到了我的问题:

  • 如果我必须在训练数据集延长时从头开始重新训练一切,这实际上是一个问题吗?
  • 哪种算法更能体验机器学习用户建议用于此类问题?
  • 在选择算法时我应该使用什么标准? (除了实际尝试所有这些,并查看哪些表现更好,精确/召回指标)
  • 如果你已经解决了类似的问题,那么用2克扩展功能呢(如果存在特定的2克则为1,否则为0)? 3克?

1 个答案:

答案 0 :(得分:2)

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

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

更复杂,更复杂的方法是使用潜在的dirichlet分配(http://en.wikipedia.org/wiki/Latent_Dirichlet_allocation

只要你想重新培训,只需添加新功能(单词)即可。您还可以使用TF / IDF在表示矩阵时为该特定单词赋值(而不仅仅是1或0)。

我不知道您正在尝试使用哪种编程语言,但我知道Java中有库,Pythont会执行上述所有操作。