これは、スターターとして非常に親切に私に与えられたスクリプトです。
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import with_statement # needed for Python 2.5
from itertools import chain
def chunk(s):
"""Split a string on whitespace or hyphens"""
return chain(*(c.split("-") for c in s.split()))
def process(latin, gloss, trans):
chunks = zip(chunk(latin), chunk(gloss))
# now you have to DO SOMETHING with the chunks!
def main():
with open("examples.txt") as inf:
try:
while True:
latin = inf.next().strip()
gloss = inf.next().strip()
trans = inf.next().strip()
process(latin, gloss, trans)
inf.next() # skip blank line
except StopIteration:
# reached end of file
pass
if __name__=="__main__":
main()
何かが足りないかどうかはわかりませんが、出力が空白になり、$に戻ります。
私は次のことをしようとしています:
英語以外の言語のテキストがあり、ハイフンを使用して形態素(各単語の一部)に分割され、英語の光沢(各形態素の言語翻訳)と以下の直接翻訳があります。
例えば。
Itali-am fat-o profug-us Lavini-a-que ven-it
イタリア-Fem:Sg:Acc fate-Neut:Sg:Abl fleeing-Masc:Sg:Nom Lavinian-Neut:Pl:Acc come:Perf-3-Sg:Indic:Act
「運命によって[運転された]飛行中はイタリアとラヴィニア人[海岸]にやってきた」
上記のようないくつかのテキストを1つのファイルに入れます-つまり
空白行
ハイフンで分割されたラテン語の行
コロンを使用して要素を結合し、対応するハイフンで分割された光沢の線
翻訳の行
空白行
ラテン
光沢
翻訳
広告無限。
私がする必要があるのは、次の出力を与えるファイルを書くことです。
イタリア:1イタリア am:1 Fem:Sg:Acc 脂肪:1運命 o:1 Neut:Sg:Abl 逃亡者:1人の逃亡者 us:1 Masc:Sg:Nom ラウィーニア:1ラウィーニア a:1 Neug:Pl:Acc que:1来る:パフォーマンス ven:1 3 it:1 Sg:Indic:Act
ここで、最初の列はハイフンなしのテキストの最初の行を表します。2番目の列は出現回数を示し(この例ではそれぞれ1つだけです)、3番目の列はテキストに書かれているように最初の列の英語訳です。
対応する英語の光沢/翻訳がないラテン語の形態素がある場合、ラテン語の列は通常どおりになりますが、英語の列は次のように[不明]と出力されます。
a: 1 [unknown]
反対の場合、つまり対応するラテン語がない英語の形態素の場合は、次のように出力されます。
[unknown]: 1 kitten
最後に、progは、同音の形態素(つまり、異なる意味を持つ2つの同じスペルのラテン語の形態素)を処理できる必要があります。例えば
a: 16 Neuter:Plural
a: 28 Feminine:Singular
繰り返しになりますが、それは宿題であり、どんなポインタも素晴らしいでしょう。批評のためにここにアップロードするために、今いくつかのスクリプトをまとめることに取り組んでいます!