簡體   English   中英

Apertium翻譯。 有沒有辦法獲得原始短語

[英]Apertium translator. Is there a way to get the original phrase

有沒有一種方法在apertium翻譯器中獲得翻譯的原始短語?

IE得到類似的東西:

phrase: {
  original: { Hola, buenos días},
  translated: {Hello, good morning}
}

我需要這樣做才能建立一種機制來改進翻譯。

如果您通過命令行界面發送語料庫,例如

xzcat corpus.sme.xz | sed 's/$/ ./' | apertium -f html-noent sme-nob > translated.nob.mt

那你就可以試試

xzcat corpus.sme.xz | paste - translated.nob.mt

然后獲取輸出旁邊的輸入。 這假設您想要在換行符上拆分。 sed用於確保單詞不會在換行符之間移動(規則往往不會跨越句子邊界)。

這將是快速的,但它有點hacky並且有許多邊緣情況。


如果您想要更多控制,一種方法是在本地安裝JSON API並一次發送一個請求。

如果你有一個最近的Debian / Ubuntu(或正在使用其中一個aperts repos ),你可以獲得API

sudo apt install apertium-apy
sudo systemctl start apertium-apy   # start it right now
sudo systemctl enable apertium-apy  # let it start on next boot

然后你可以像這樣翻譯:

$ echo 'Jeg liker ikke ansjos' | curl --data-urlencode 'q@-' 'localhost:2737/translate?langpair=nob|nno'
{"responseDetails": null, "responseData": {"translatedText": "Eg likar ikkje ansjos"}, "responseStatus": 200}

(或來自Javascript標准的ajax請求,一些文檔在http://wiki.apertium.org/wiki/Apertium-apy/Debianhttp://wiki.apertium.org/wiki/Apertium-apy#Usage

請注意,apertium-apy默認為/ usr / share / apertium / modes中的對提供服務; 如果您手動啟動它(而不是通過systemctl),您可以將其指向不同的路徑。


如果你想生成你的例子中的JSON格式,最簡單的方法是使用jqsudo apt install jq ),例如

$ orig="Jeg liker ikke ansjos"
$ echo "$orig" \
  | curl -Ss --data-urlencode 'q@-' 'localhost:2737/translate?langpair=nob|nno' \
  | jq "{phrase: {original:\"$orig\", translated:.responseData.translatedText }}"
{
  "phrase": {
    "original": "Jeg liker ikke ansjos",
    "translated": "Eg likar ikkje ansjos"
  }
}

或在語料庫上:

xzcat corpus.nob.xz | while read -r orig; do 
  echo "$orig" \
    | curl -Ss --data-urlencode 'q@-' 'localhost:2737/translate?langpair=nob|nno' \
    | jq "{phrase: {original:\"$orig\", translated:.responseData.translatedText}}";
done

(對500行的簡單測試表明,這需要23.7秒的掛鍾時間,而paste版本需要5.5秒。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM