机器学习,人工智能和计算语言学

时间:2011-04-23 17:46:32

标签: c++ artificial-intelligence machine-learning linguistics nlp

我很乐意与那些在机器学习,计算语言学或人工智能方面有经验的人交谈,但是通过以下示例:

•您可以通过统计语言学,机器学习等方式申请哪些现有软件进行可管理的尝试? (不要误会我的意思我不想这样做,而只是试图为这个领域中最复杂的东西绘制一个概念框架,如果你有机会领导一个团队,你会怎么想?要实现这样的......)

•哪些现有数据库?当数据为TB时,哪种数据库技术可以存储结果

•除了C ++之外还有哪些编程语言?

•Apache mahunt?

•并且,这些软件组件如何协同工作以支持整体工作?

5 个答案:

答案 0 :(得分:3)

  

您将通过统计语言学,机器学习等适用于谷歌翻译等可管理尝试的现有软件

如果您的唯一目标是构建翻译软件,那么我只会使用Google语言API:它是免费的,为什么要重新发明轮子?如果您的目标是为了熟悉机器学习而建立一个类似于Google的翻译器,那么您就走错了道路......尝试一个更简单的问题。

  

哪个数据库?

<强>更新
取决于你的语料库的大小:如果它是巨大的,那么我会选择hadoop(因为你提到了mahout)...否则就选择标准数据库(SQL Server,MySQL等)。

原件:
我不确定您可以使用哪些数据库,但如果一切都失败了,您可以使用Google翻译来构建自己的数据库...但是,后者会对谷歌的翻译引入偏见,而谷歌会做的任何错误都会导致您的软件(至少)有相同的错误。

  

除了C ++之外还有哪些编程语言?

无论你最喜欢什么......当然C ++是一个选项,但你可能更容易使用Java或C#。使用Java和C#进行开发要快得多,因为从一开始就有很多内置于这些语言中的功能。

  

Apache mahunt?

如果你有庞大的数据集......你可以。

<强>更新
一般来说,如果你的语料库的大小非常大,那么我肯定会使用像mahout / hadoop这样的强大组合。它们都是为了这个目的而构建的,你将很难“复制”他们所有的工作,除非你有一个庞大的团队支持你。

  

而且,这些软件组件如何协同工作以支持整体工作?

事实上,你似乎正在尝试熟悉机器学习......我会尝试更简单的东西:构建语言检测器而不是翻译器。我最近建了一个,我发现你可以做的最有用的事情是建立字符n-gram(bigrams和trigrams结合起来效果最好)。然后,您将使用n-gram作为标准机器学习算法(如C45,GP,GA,贝叶斯模型等)的输入,并执行10次交叉验证,以最大限度地减少过度拟合。


更新:

  

“...您使用哪些软件组件来运行示例?”

我的例子非常简单:我有一个SQL Server数据库,其中的文档已经用语言标记,我加载了内存中的所有数据(几百个文档),我给每个文档算法(C45)。该算法使用自定义函数来提取文档特征(双字母和三字母字母),然后运行其标准学习过程并吐出模型。然后,我根据测试数据集测试模型,以验证准确性。

在你的情况下,有了数TB的数据,似乎你应该使用带有hadoop的mahout。此外,您将要使用的组件在mahout / hadoop体系结构中得到了很好的定义,因此它应该是非常自我解释的。

答案 1 :(得分:3)

关于语言选择,至少对于原型设计,我建议使用Python。它在自然语言处理方面取得了很大的成功,因为它拥有一个包含科学计算,文本分析和机器学习的大型工具库。最后但并非最不重要的是,如果您想从现有工具中受益,那么调用编译代码(C,C ++)非常容易。

具体来说,看一下以下模块:

Olivier Grisel使用这些工具进行文本挖掘的presentation可以派上用场。

免责声明:我是scikits.learn的核心开发人员之一。

答案 2 :(得分:2)

哪些现有数据库?当数据为TB时,哪种数据库技术可以存储结果 HBase,ElasticSearch,MongoDB

•除了C ++之外,还有哪些编程语言? 对于ML其他流行语言Scala,Java,Python

•Apache mahunt? 有时有用,更多地编写纯Hadoop

•并且,这些软件组件如何协同工作以支持整体工作? 有许多统计机器学习算法可以用mapreduce进行并行化,允许在NoSQl中使用sotrage

答案 3 :(得分:1)

可用于自动翻译的最佳技术基于统计方法。在计算机科学中,这被称为“机器翻译”或MT。想法是将信号(要翻译的文本)视为有噪信号,并使用纠错来“固定”信号。例如,假设您正在将英语翻译成法语。假设英语声明最初是法语,但是以英语形式出现。你必须修复它才能恢复它。可以为目标语言(法语)和错误构建统计语言模型。错误可能包括丢失的单词,移动的单词,拼写错误的单词和添加的单词。

更多信息可在以下网址找到:http://www.statmt.org/

关于db,MT解决方案不需要典型的db。一切都应该在记忆中完成。

用于此特定任务的最佳语言是最快的语言。 C将是这个问题的理想选择,因为它可以快速轻松地控制内存访问。但是可以使用任何高级语言,如Perl,C#,Java,Python等。

答案 4 :(得分:0)

Google的Tensorflow是基本翻译的实用工具。然而,任何真正双语的人都知道翻译不是一个统计过程。这是一个复杂得多的过程,刚刚被简化,因此90%的过程似乎都是正确的 巨大的并行性将产生巨大的差异,因此量子计算的出现,以及形成它的一些想法,将使下一个8%成为可能。
最后2%将与普通专业翻译和口译员匹配。