5

问题特征选择和监督学习多语种数据+机器学习算法选择

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

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

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

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

实用的方法是值得欢迎的! (理论值了,但是那些可能会被保存供以后的乐趣。)

一些背景

我们正在努力的数千个网站语料库在3到5种语言进行分类(可能高达10 ,但我们不确定)。

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

现在我们必须决定上述问题。我已经与布朗语料库和Brill tagger做了一些工作,但由于多语言问题,这不起作用。

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

+1

那么,这是监督或无人监督? – rmalouf 2011-03-23 21:48:10

+0

我知道你的意思是_semantic_ classification/clustering,即按意义分组,而不是其他一些信息,如链接数量,情绪,提及公司名称等。 – ffriend 2011-03-24 17:12:51

+0

@rmalouf:问题已澄清! @ffriend:我不确定我是否会将它描述为_semantic_,因为这可能会使我们陷入相切的理论和技术领域......但是肯定! (再一次,这个词非常宽泛。)我们绝对不会试图去查看原始链接数量或具体名称数量等事情。 – arturomp 2011-03-24 18:09:49

回答

3

根据您提供的上下文,这是一个监督学习问题。 因此,你正在做分类,而不是集群。如果我误解了,请更新你的问题来说明。

我将从最简单的功能入手,即标记页面的Unicode文本,并使用字典将每个新标记转换为数字,并简单地将标记作为特征考虑。接下来,我将使用最简单的算法 - 我倾向于使用朴素贝叶斯,但如果您有一种简单的方法来运行SVM,这也很好。

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

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

+0

感谢您的回答!我已经更新了我的问题,以澄清我们没有使用我们的训练数据,因为我们不能100%确定它是最合适的分类(由于它不是直接来自我们的健康怀疑原因)。 也感谢数字翻译和基线提示。我们会牢记这些! – arturomp 2011-03-24 16:49:45

3

如果你去监督路线,那么网页是多语言的事实不应该有所作为。如果你愿意,比如说词汇特征(bag-o'-words),那么每种语言最终都会产生不相交的特征集合,但没关系。所有的标准算法都可能会得出相似的结果,所以只需选择一个并与之匹配。我同意尤瓦尔的观点,朴素贝叶斯是一个很好的开始,只有当它不能满足你的需求时,才会尝试像支持向量机或随机森林。

但是,如果你走了无人监督的路线,那么文本并不全都是相同语言的事实可能是一个大问题。任何合理的聚类算法将首先按照语言​​对文本进行分组,然后通过类似主题的内容(如果使用内容词作为特征)对每个语言聚类进行分组。无论这是一个错误还是一个功能,完全取决于您为什么要分类这些文本。如果重点是按主题分组文档,不管语言如何,那么它就不好。但是,如果你对每种语言都有不同的分类,那么是的,你有许多独立的分类问题,就像你有语言一样。

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

但是,说实话,如果没有清楚地了解类是什么(或者至少可以算作一个好的分类),那么进入分类问题似乎很奇怪。上课是困难的部分,它是决定项目是成功还是失败的部分。实际的算法部分相当死板。

1

主要答案是:尝试不同的方法。如果没有实际的测试,很难预测哪种方法会给出最好的结果。所以,我只会提出一些我会先尝试的方法,并描述他们的优缺点。

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

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

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

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

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

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

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