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

machine-learning, artificial-intelligence and computational-linguistics

本文关键字:计算语言学 人工智能 机器学习      更新时间:2023-10-16

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

•你会使用哪种现有的软件来构建一个可管理的尝试,比如通过统计语言、机器学习来构建谷歌翻译?(不要误会我的意思,我并不想这么做,只是想为这个领域中最复杂的东西画一个概念框架,如果你有机会领导一个团队去实现这样的…)

•存在哪个数据库?当这些数据是tb级时,使用哪种数据库技术来存储结果

•除了c++还有哪些编程语言?

•阿帕奇追捕?

•这些软件组件如何协同工作以作为一个整体来为工作提供动力?

你会申请哪一种现有的软件来构建一个可管理的尝试,比如通过统计语言,机器学习来构建谷歌翻译

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

哪些数据库?

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

原始:


我不确定你可以使用什么数据库,但如果所有这些都失败了,你可以使用谷歌翻译来建立自己的数据库…然而,后者会给谷歌的翻译带来偏见,谷歌所做的任何错误都会导致你的软件(至少)有同样的错误。

除了c++还有哪些编程语言?

你觉得最舒服的……当然c++也是一种选择,但是使用Java或c#可能更容易。用Java和c#开发要快得多,因为从一开始这些语言就内置了很多功能。

Apache mahunt吗?

如果你有一个庞大的数据集…你可以。

更新:
一般来说,如果你的语料库的大小真的很大,那么我肯定会使用一个健壮的组合,如mahout/hadoop。它们都是为了这个目的而创建的,除非你有一个庞大的团队在你身后,否则你很难"复制"它们所有的工作。

并且,这些软件组件如何一起工作以作为一个整体来为工作提供动力?

看起来你实际上是在努力让自己熟悉机器学习…我会尝试一些更简单的方法:构建一个语言检测器而不是翻译器。我最近创建了一个,我发现你能做的最有用的事情就是创建字符n图(双格和三格结合起来效果最好)。然后,您将使用n-grams作为标准机器学习算法(如C45, GP, GA,贝叶斯模型等)的输入,并执行10倍交叉验证以最小化过拟合。


更新:

"……您使用什么软件组件来运行您的示例?"

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

在你的情况下,与tb的数据,似乎你应该使用hadoop的mahout。此外,您将要使用的组件在mahout/hadoop架构中已经很好地定义了,所以从那里开始它应该是非常自解释的。

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

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

  • NLTK,自然语言工具包

  • scikits。

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

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

哪个数据库存在?当这些数据是tb级时,使用哪种数据库技术来存储结果HBase, ElasticSearch, MongoDB

•除了c++还有哪些编程语言?其他流行语言Scala, Java, Python

•阿帕奇追捕?有时有用,更多的代码到纯Hadoop

•这些软件组件如何协同工作以作为一个整体来为工作提供动力?有许多统计机器学习算法可以与mapreduce并行,允许在NoSQl中进行优化

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

更多信息请访问:http://www.statmt.org/

关于数据库,MT解决方案不需要典型的数据库。一切都应该在内存中完成。

对于这个特定的任务,最好使用最快的语言。C语言是解决这个问题的理想选择,因为它既快速又易于控制内存访问。但是任何高级语言都可以使用,如Perl、c#、Java、Python等。

Google的Tensorflow是一个非常有用的基本翻译工具。然而,任何真正懂双语的人都知道,翻译不是一个统计过程。这是一个复杂得多的过程,只是被简化了,所以90%的过程似乎是正确的。巨大的并行性将产生巨大的影响,所以量子计算的出现,也许其中的一些想法,将使下一个8%成为可能。最后的2%将匹配正常的专业翻译和口译员。