多语言数据的特征选择和无监督学习+机器学习算法选择

时间:2011-03-23 19:23:54

标签: artificial-intelligence nlp machine-learning data-mining classification

问题

我想将一组数千个网站分类/分类/群集/组合在一起。有我们可以训练的数据,所以我们可以进行有监督的学习,但这不是我们收集的数据,我们也不会坚持使用它 - 所以我们也在考虑无监督学习。

  • 我可以在机器学习算法中使用哪些功能来处理多语言数据?请注意,其中一些语言可能尚未在自然语言处理字段中处理。

  • 如果我使用无监督学习算法,我应该按语言划分数据并以不同方式处理每种语言吗?不同的语言可能有不同的相关类别(或不是,取决于你的心理语言理论倾向),这可能会影响分区的决定。

  • 我正在考虑使用决策树,或者支持向量机(SVM)来允许更多功能(根据我对它们的理解)。 This post建议使用随机森林而不是SVM。有什么想法吗?

欢迎实用的方法! (理论上也是如此,但为了以后的乐趣,可能会保存这些。)

某些背景

我们正尝试用3到5种语言对数千个网站的语料库进行分类(可能最多10个,但我们不确定)。

我们以数百个已经分类的网站的形式提供培训数据。但是,我们可以选择是否使用该数据集 - 如果其他类别更有意义,我们愿意不使用我们拥有的培训数据,因为它不是我们首先收集的内容。我们正处于从网站上抓取数据/文本的最后阶段。

现在我们必须决定上述问题。我已经与Brown Corpus和Brill标记器做了一些工作,但由于多语言问题,这不起作用。

我们打算使用Orange机器学习包。

3 个答案:

答案 0 :(得分:3)

根据您提供的上下文,这是一个受监督的学习问题。 因此,您正在进行分类,而不是聚类。如果我误解了,请更新你的问题。

我将从最简单的功能开始,即标记页面的unicode文本,并使用字典将每个新标记转换为数字,并简单地将标记的存在视为特征。

接下来,我会使用最简单的算法 - 我倾向于使用朴素贝叶斯,但如果你有一个简单的方法来运行SVM,这也很不错。

将您的结果与某些基线进行比较 - 比如将最频繁的类别分配给所有页面。

最简单的方法是否足够好?如果没有,请开始迭代算法和功能。

答案 1 :(得分:3)

如果你去监督路线,那么网页使用多种语言的事实应该没有什么区别。如果你一起去,说词汇特征(bag-o'-words style),那么每种语言最终都会产生不相交的特征,但这没关系。所有标准算法都可能提供可比较的结果,因此只需选择一个并继续使用它。我同意Yuval的看法,Naive Bayes是一个很好的起点,只有当它不能满足您的需求时才能尝试SVM或随机森林。

但是,如果你采用无监督的路线,那么这些文本并非都是同一种语言的事实可能是个大问题。任何合理的聚类算法将首先按语言对文本进行分组,然后在每个语言聚类中通过类似主题的内容(如果您使用内容词作为特征)。这是一个错误还是一个功能将完全取决于您为什么要对这些文本进行分类。如果关键是按主题对文档进行分组,无论语言如何,那都没有用。但是,如果你对每种语言都有不同的类别,那么是的,你只有与语言一样多的单独分类问题。

如果您确实需要一组统一的类,那么您需要一些方法来跨语言链接类似的文档。是否有任何一种语言的文件?如果是这样,您可以将它们用作一种统计Rosetta Stone,以链接不同语言的单词。然后,使用潜在语义分析之类的东西,你可以将它扩展到二阶关系:不同语言中的单词不会出现在同一个文档中,但往往会与出现的单词共同出现。或者,您可以使用锚文本或URL属性之类的东西,以与语言无关的方式为文档分配粗略的分类,并将其用作入门的方式。

但是,老实说,如果没有清楚地知道这些类是什么(或者至少是一个好的分类),那么进入分类问题似乎很奇怪。提出课程是困难的部分,而这是确定项目是成功还是失败的部分。实际的算法部分相当死记硬背。

答案 2 :(得分:1)

主要答案是:尝试不同的方法。如果没有实际测试,很难预测哪种方法会产生最佳效果。所以,我只是建议一些方法,我会先尝试并描述它们的优点和缺点。

首先,我建议监督学习。即使数据分类不是很准确,它仍然可以提供比无监督聚类更好的结果。其中一个原因是在聚类期间使用了许多随机因素。例如,k-means算法在启动过程时依赖于随机选择的点,这可能导致不同程序运行的结果非常不同(尽管x-means修改似乎可以规范化这种行为)。仅当基础元素在特征空间中产生分离良好的区域时,聚类才会产生良好的结果。

处理多语言数据的方法之一是使用多语言资源作为支持点。例如,您可以索引一些维基百科的文章,并在不同语言的相同主题之间创建“桥梁”。或者,您可以创建像this paper描述的多语言关联字典。

至于方法,首先想到的是基于实例的语义方法,如 LSI 。它使用vector space model来计算单词和/或文档之间的距离。与其他方法相比,它可以有效地治疗同义词和多义词。该方法的缺点是计算效率低下并且实现泄漏。 LSI的一个阶段使用了一个非常大的共生矩阵,对于大型文档库,它需要分布式计算和其他特殊处理。 LSA的修改称为随机索引,它不构造完全共生矩阵,但您很难找到适当的实现。前段时间我在Clojure中为这个方法创建了库,但它现在是pre-alpha,所以我不推荐使用它。不过,如果您决定尝试一下,您可以在github上找到一个用户“不忠实的朋友”的项目“Clinch”(我不会发布直接链接以避免不必要的广告)。

除了特殊的语义方法,必须使用规则“简单优先”。从这一点来说,朴素贝叶斯是一个正确的起点。这里唯一的注意事项是Naive Bayes的多项式版本更可取:我的经验告诉我,单词的数量确实很重要。

SVM 是一种分类线性可分数据的技术,文本数据几乎总是不能线性分离(至少有几个常用词出现在任何一对文档中)。这并不意味着,SVM不能用于文本分类 - 您仍然应该尝试它,但结果可能比其他机器学习任务低得多。

我没有足够的经验决策树,但使用它进行有效的文本分类对我来说似乎很奇怪。我已经看到一些例子,他们给出了很好的结果,但是当我尝试使用C4.5算法完成这项任务时,结果非常糟糕。我相信你应该得到一些软件来实现决策树并自己测试它们。知道然后建议总是更好。

关于每个主题还有更多的话要说,所以随时可以就特定主题提出更多问题。