あなたはこのようなあなたのminibatchソースインスタンス化した場合:
data_source = (CTFDeserializer("mydata.ctf", ...), randomize=False, ...)
あなたは、あなたは、PythonでCTFDeserializerに渡された入力ファイルを開き、minibatchことによってそれをminibatch解析することができます。 非常に重要を設定するrandomize=False
これ以外の場合、以下の読者とあなたの手動での解析は同期しません。たとえば、ファイルオブジェクトがstream
でミニバッチサイズがbatch_size
の場合、次のコードは、各列のコメント付き列を、前の列名(S0、S1またはS0)をコメント列にある文字列のシーケンスにマッピングする辞書として出力します。コレクションからitertoolsインポートGROUPBY から
は、それが生成する上記の例の入力についてdefaultdict
stream = open("mydata.ctf")
lines = [stream.readline() for i in range(batch_size)]
for seqid, sequence in groupby(lines, lambda s:s.split()[0]):
mapping = defaultdict(list)
for sample in sequence:
parts = sample.split('|')
unused = [mapping[parts[i-1].split(' ')[0].strip()].append(p.strip()) for i, p in enumerate(parts) if p.startswith('#')]
print(seqid, mapping)
インポート:
19 defaultdict(<class 'list'>, {'S0': ['# BOS', '# show', '# flights'], 'S2': ['# O', '# O', '# O'], 'S1': ['# flight']})
この例では、上記入力フォーマットのために動作します。実際のフォーマットが異なる場合、これをあなたの目的に合わせて調整しなければなりません。