GoVarnam:一个跨平台的音译库

224 阅读4分钟

[

](#varnam)瓦纳姆

Varnam是一个印度语言音译库。GoVarnam 是libvarnam的 Go 移植,其中有一些核心架构的变化。并非libvarnam的每个部分都被移植了。

它很稳定,可以每天作为输入法使用。在这里可以看到它的运行情况:https://varnam.subinsb.com/

通过IBus为Linux操作系统提供的输入法引擎在这里:https://github.com/varnamproject/govarnam-ibus

[

](#installation)安装

你需要在你的系统中安装GoVarnam库,以便任何应用程序使用Varnam。

  • 下载一个最新的GoVarnam版本
  • 解压缩文件
  • 打开终端,用这个命令进入解压后的文件夹。
cd
  • 现在运行这个命令来安装GoVarnam。
sudo ./install.sh install

它将要求你输入密码,请输入密码。

  • 安装完成

要检查安装是否成功,试试这个命令。

varnamcli -s ml enthaanu

如果安装成功,它应该给出马拉雅拉姆语的输出。

  • 为了使Varnam提供更好的建议,你需要导入一些词。从这里下载一个.vlf (Varnam Learnings File)文件[TODO LINK]。
  • 导入它。
varnamcli -s ml -import file.vlf

现在,你可以安装IBus引擎来使用Varnam系统: https://github.com/varnamproject/govarnam-ibus

[

](#usage)使用方法

测试一下吧。

varnamcli -s ml namaskaaram

学习一个词。

varnamcli -s ml -learn കുന്നംകുളം

用一个特定的模式训练一个词。

varnamcli -s ml -train college കോളേജ്

[

](#learning-words-from-a-file)从文件中学习单词

你可以从任何文本文件中导入所有语言的单词。Varnam会把英语单词和非英语单词分开并进行相应的学习。

varnamcli -s ml -learn-from-file file.html

你可以下载HTML格式的新闻文章或维基百科网页,从其中学习单词。

[

](#development)开发

[

](#build)构建

这个资源库有3个东西。

  1. GoVarnam库
  2. GoVarnam命令行工具(CLI)
  3. 用于GoVarnam的Go绑定

GoVarnam是用Go语言编写的,但为了成为一个标准的库,可以与任何其他编程语言一起使用,我们把它编译成一个C库。这可以通过.NET来完成。

go build -buildmode "c-shared" -o libgovarnam.so

(以上操作的快捷方式是make library)

输出的libgovarnam.so 是一个共享库,可以在任何其他编程语言中动态链接。一些例子。

  • GoVarnam的Go绑定。请参见本软件库中的govarnamgo文件夹。
  • GoVarnam的Java绑定:正在进行中

等等,这意味着我们需要再写一个Go文件来与GoVarnam库对接 !这是因为我们要对接的是一个共享库而不是Go库。

[

](#files--folders)文件和文件夹

  • govarnam - 库文件
  • main.go, c-shared* - 有助于使govarnam成为C共享库的文件
  • govarnamgo - 该库的 Go 绑定。与其他Go项目一起使用
  • cli - varnam的CLI工具。使用govarnamgo 来连接该库。
  • symbol-frequency-calculator - 用于填充VST文件中的weight 列。

[

](#cli-command-line-utility)CLI(命令行工具)

这个命令行工具(CLI)是用Go语言编写的,使用govarnamgo来与库对接。

你需要单独构建CLI。

cd cli

# Show the path to libgovarnam.so
export LD_LIBRARY_PATH=$(realpath ../):$LD_LIBRARY_PATH

go build -o varnamcli .

[

](#hacking)黑客攻击

本节是直接上手的。GoVarnam如何工作的解释在底部。

  • 克隆当然
  • go get
  • 你将需要一个.vst 文件。从schemes 文件夹中获取发布。将其粘贴到schemes 文件夹中。
  • make library 来编译

当你对govarnam的源代码进行修改时,你将需要做make library ,以便对修改进行编译,然后用CLI进行测试。

你可以用.NET来运行测试(以确保没有损坏)。

make 

[

](#govarnam-bts)GoVarnam BTS

阅读GoVarnam规范:https://docs.google.com/document/d/1l5cZAkly_-kl7UkfeGmObSam-niWCJo4wq-OvAEaDvQ/edit?usp=sharing

[

](#changes-from-libvarnam)来自libvarnam的变化

  • ml.vst 已经被修改,在symbols 表中增加了一个新的weight 列。在这里获得新的ml.vst 。权重最小的符号有更大的意义。这是根据语料库中的受欢迎程度来计算的。你可以通过一个Python脚本将权重值填充到ml.vst 。参见子文件夹中的内容。之前的Ruby脚本是用来制作VST的。来自libvarnam的ml.vst ,与govarnam不兼容

  • patterns_content 在GoVarnam中被重命名为patterns

  • patterns 学习数据库中的表不会存储马拉雅拉姆语模式。相反,对于每个输入,所有可能的马拉雅拉姆语都被计算出来(从symbols VARNAM_MATCH_ALL),并在words 。这些将作为建议返回。以前,pattern 会将每个模式存储为一个词。 english => malayalam.

  • govarnam中的patterns ,只用于英语单词。Computer => കമ്പ്യൂട്ടർ 。这些英语单词在我们的VST标记器中无法使用,因为这些单词在我们的语言中并不是真正可翻译的。这将是kambyoottar => Computer

[

](#miscellaneous)杂项

在没有SQLite的情况下进行构建。

go build -tags libsqlite3 -buildmode=c-shared -o libgovarnam.so

[

](#release-process)发布过程

  • git标签
  • make build release

打包ibus引擎。

  • make build-ubuntu18 release

GitHub

github.com/varnamproje…