我目前正在学习 Go 并且取得了很大的进步。我这样做的一种方法是将过去的项目和原型从先前的语言移植到新的语言中。
现在我正忙于一个“语言检测器”,我不久前用 Python 制作了原型。在这个模块中,我生成了一个 ngram 频率表,然后在其中计算给定文本和已知语料库之间的差异。
这允许通过返回给定 ngram 表的两个向量表示的余弦来有效地确定哪个语料库是最佳匹配。耶。数学。
我有一个用 Go 编写的原型,它可以完美地处理纯 ascii 字符,但我非常希望它能够与 unicode 多字节支持一起使用。这就是我在做我的头的地方。
这是我正在处理的一个快速示例:http : //play.golang.org/p/2bnAjZX3r0
我只发布了表格生成逻辑,因为一切都已经很好了。
正如您通过运行代码段所看到的,第一个文本运行良好并构建了一个准确的表格。第二个文本是德语,其中包含一些双字节字符。由于我构建 ngram 序列的方式,并且由于这些特定符文由两个字节组成,因此出现 2 个 ngram,其中第一个字节被截断。
有人可以发布更有效的解决方案,或者至少指导我完成修复吗?我几乎可以肯定我已经结束了对这个问题的分析。
我计划开源这个包并使用 Martini 将其作为服务实现,从而提供一个简单的 API,人们可以使用它来进行简单的语言计算。
相关分类