そのような行を含むテキストファイルがあり(以下を参照)、英語の文の後にスペイン語の文が続き、同等の翻訳テーブルが「{##}
」で区切られています。(あなたがそれを知っているなら、それはの出力ですgiza-pp
)
あなたは、このパートセッションの間に、次の数日の間にこの主題についての討論を要求しました。{##}susseñoríashansolicitadoundebatesobre el tema paralospróximosdías、en elcursodeesteperíododesesions。{##} 0-0 0-1 1-2 2-3 3-4 4-5 5-6 6-7 7-8 8-9 12-10 13-11 14-11 15-12 16-13 17 -14 9-15 10-16 11-17 18-18 17-19 19-21 20-22
翻訳表は0-0 0-1
、英語の0番目の単語(つまり)がスペイン語の0番目と1番目の単語(つまり)と一致することを意味しますyou
。sus señorías
文からスペイン語の翻訳が何であるか知りたいとしましょうcourse
、通常私はそれをこのようにします:
from collections import defaultdict
eng, spa, trans = x.split(" {##} ")
tt = defaultdict(set)
for s,t in [i.split("-") for i in trans.split(" ")]:
tt[s].add(t)
query = 'course'
for i in spa.split(" ")[tt[eng.index(query)]]:
print i
上記を行う簡単な方法はありますか?かもしれませregex
んか?line.find()
?
いくつかの試みの後、MWEや欠落している翻訳のような他の多くの問題をカバーするためにこれをしなければなりません:
def getTranslation(gizaline,query):
src, trg, trans = gizaline.split(" {##} ")
tt = defaultdict(set)
for s,t in [i.split("-") for i in trans.split(" ")]:
tt[int(s)].add(int(t))
try:
query_translated =[trg.split(" ")[i] for i in tt[src.split(" ").index(query)]]
except ValueError:
for i in src.split(" "):
if "-"+query or query+"-" in i:
query = i
break
query_translated =[trg.split(" ")[i] for i in tt[src.split(" ").index(query)]]
if len(query_translated) > 0:
return ":".join(query_translated)
else:
return "#NULL"