0

それで、これはスターターとして私に非常に親切に与えられたスクリプトです:

#!/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
4

1 に答える 1

1

発生をカウントする必要があるときはいつでも、辞書が必要です。

キーがzipによって生成されたタプルであり、値が[latin、amount、translation]を持つリストである辞書を作成します。同じタプルに遭遇するたびに、量を増やします。

辞書は関数よりも長持ちする必要があるため、おそらくパラメーターとして追加する必要があります。

完了したら、次のことができます。result = dict.keys(); result.sort()。

未知の部分を理解しているのかわかりません。これでその部分が解決しない場合は、関連する例を示す必要があります。

于 2012-05-06T13:36:58.293 に答える