机器学习、人工智能和计算语言学
machine-learning, artificial-intelligence and computational-linguistics
我很乐意与那些在机器学习、计算语言学或人工智能方面有经验的人交谈,但通过以下例子:
•你会使用哪种现有的软件来构建一个可管理的尝试,比如通过统计语言、机器学习来构建谷歌翻译?(不要误会我的意思,我并不想这么做,只是想为这个领域中最复杂的东西画一个概念框架,如果你有机会领导一个团队去实现这样的…)
•存在哪个数据库?当这些数据是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%将匹配正常的专业翻译和口译员。
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 类似枚举的计算常量
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 计算缩放多边形的比例,得到给定的多边形面积
- 在C++中如何在没有pow的情况下进行基础计算
- 计算平均值,不包括上次得分
- 机器学习、人工智能和计算语言学