それで、これはスターターとして私に非常に親切に与えられたスクリプトです:
#!/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()
でも、
講師と話したところ、
__ x __
「コースのこの時点での学生のニーズには高度すぎる」ためです。「チャンク」または「プロセス」フィールドに何を入力する必要があるかについて、私は完全に困惑しています。これまで、他の演習のほとんどを(いくつかのヒントで)理解することができましたが、これは単なる私をはるかに超えています。この部分は 20 点満点中 15 点で、ちょっと気分が悪くなります。それ以上の助けをいただければ幸いです。
元記事(長くてすいません!)
私は次のことをしようとしています: 英語以外の言語のテキストがあり、ハイフンを使用して形態素 (各単語の一部) に分割され、英語のグロス (各形態素の言語翻訳) と直訳が下にあります。例えば。
Itali-am fat-o profug-us Lavini-a-que ven-it
イタリア-Fem:Sg:Acc 運命-Neut:Sg:Abl 逃げる-Masc:Sg:Nom Lavinian-Neut:Pl:Acc come:Perf-3-Sg:Indic:Act
「運命に導かれて飛行中、イタリアとラヴィニアの[海岸]にやってきた」
上記のような複数のテキストを 1 つのファイルに格納します。
blank line
a line of latin broken up with hyphens
a line of gloss broken up with corresponding hyphens, using colons to join elements
a line of translation
blank line
latin
gloss
translation
ad infinitum.
私がする必要があるのは、次の出力を提供するファイルを作成することです。
Itali: 1 Italy
am: 1 Fem:Sg:Acc
fat: 1 fate
o: 1 Neut:Sg:Abl
profug: 1 fleeing
us: 1 Masc:Sg:Nom
Lavini: 1 Lavinian
a: 1 Neug:Pl:Acc
que: 1 come:Perf
ven: 1 3
it: 1 Sg:Indic:Act
ここで、最初の列はハイフンなしのテキストの最初の行を表します。2 列目は出現回数 (この例ではそれぞれ 1 つだけ) を示し、3 列目はテキストに書かれているように 1 列目の英訳です。
対応する英語のグロス/翻訳がないラテン語の形態素がある場合、ラテン語の列は通常どおりですが、英語の列は次のように [unknown] と出力されます。
a: 1 [unknown]
逆の場合、つまり対応するラテン語のない英語の形態素の場合は、
[unknown]: 1 kitten
最後に、prog は同音の形態素 (つまり、異なる意味を持つ 2 つの同じ綴りのラテン語の形態素) を処理できる必要があります。例えば
a: 16 Neuter:Plural
a: 28 Feminine:Singular