您将申请哪种现有软件进行可管理的尝试,通过统计语言、机器学习构建类似谷歌翻译的东西
如果您的唯一目标是构建翻译软件,那么我只会使用 Google 语言 API:它是免费的,那么为什么要重新发明轮子呢?如果您的目标是为了熟悉机器学习而构建类似于 Google 的翻译器,那么您就走错了路……尝试一个更简单的问题。
哪个数据库?
更新:
取决于你的语料库的大小:如果它是巨大的,那么我会使用 hadoop(因为你提到了 mahout)......否则使用标准数据库(SQL Server、MySQL 等)。
原文:
我不确定您可以为此使用哪些数据库,但如果所有其他方法都失败了,您可以使用 Google 翻译来构建您自己的数据库......但是,后者会引入对 Google 翻译的偏见,并且 Google 所做的任何错误都会导致您的软件(至少)有相同的错误。
除了 C++ 还有哪些编程语言?
无论您最喜欢什么……当然 C++ 是一种选择,但您可能会更轻松地使用 Java 或 C#。使用 Java 和 C# 进行开发要快得多,因为这些语言从一开始就内置了很多功能。
阿帕奇猎杀?
如果你有一个庞大的数据集......你可以。
更新:
一般来说,如果你的语料库真的很大,那么我肯定会使用像 mahout/hadoop 这样的强大组合。它们都是专门为此目的而构建的,除非您背后确实有一个庞大的团队,否则您将很难“复制”他们的所有工作。
而且,这些软件组件将如何协同工作来为整个工作提供动力?
看来您实际上是在尝试熟悉机器学习……我会尝试一些更简单的方法:构建语言检测器而不是翻译器。我最近构建了一个,我发现您可以做的最有用的事情是构建字符 n-gram(bigrams 和 trigrams 结合起来效果最好)。然后,您将使用 n-gram 作为标准机器学习算法(如 C45、GP、GA、贝叶斯模型等)的输入,并执行 10 倍交叉验证以最小化过度拟合。
更新:
“...您使用哪些软件组件来运行您的示例?”
我的示例非常简单:我有一个 SQL Server 数据库,其中包含已用语言标记的文档,我将所有数据加载到内存中(数百个文档),并为每个文档提供算法(C45)。该算法使用自定义函数来提取文档特征(二元和三元字母),然后运行其标准学习过程并生成模型。然后我根据测试数据集测试模型以验证准确性。
在您的情况下,对于 TB 的数据,您似乎应该将 mahout 与 hadoop 一起使用。此外,您将要使用的组件在 mahout/hadoop 体系结构中得到了很好的定义,因此从那里开始应该很容易解释。