テキストファイルを操作するスクリプトプログラム(Perl、Shellなど)で、自然言語処理関連のプロジェクトを適切にバージョン管理するにはどうすればよいか考えています。スクリプトは通常、テキスト データ ファイルを入力として読み取り、何らかの処理を行い、結果をテキスト ファイルとして再度出力します。そのため、多くのコードとデータ ファイルがすべてテキスト形式で存在します。
データ ファイルはサイズが大きくなる可能性があるため、明らかに、バージョン管理コード ファイルのみを使用します。そして、さまざまな方法を試すために、コードのブランチを維持する必要があります。
(1) バージョン管理の現在の解決策は、単一のディレクトリ「proj」の同じレベルにコードとデータ ファイルを混在させることです。
code1, ..., codem, data1, ..., datan
ブランチで作業する場合、上記の「フラットな」ディレクトリ構造を維持するために、「branchi」サブフォルダーではなく、「proj」直下の「branchi」内のすべてのファイルをチェックアウトする必要があります。
私の現在のソリューションの長所は、ディレクトリ移行のオーバーヘッドが最小限であることです。コードとデータは同じディレクトリにあるため、スクリプトの呼び出しと結果の確認には、最小限の「cd」が必要です。
script1 データイン データアウト
vi データ出力
短所は、コードとデータ ファイルの数が増えると、"proj" フォルダー内のファイルの長いリストに直面すると、見た目が乱雑になることです。
(2) もう 1 つの方法は、コードとデータを別のディレクトリに置くことです。
「プロジェクト/ソース」と「プロジェクト/データ」。
長所と短所は、ソリューション (1) とは正反対です。長所は、よりクリーンなディレクトリ構造を取得できることです。短所は、スクリプトを呼び出したり結果を確認したりするときに、多くのディレクトリ遷移を行う必要があることです。
script1 ../data/data-in ../data/data-out
vi ../data/data-out または cd ../data; vi データ出力
src フォルダにある場合。そのため、データ ファイル "../data" の追加の親パスは、特に多くの簡単な実験と結果のチェックを行う必要がある場合に、多くのディレクトリ移行の手間をもたらします。
他に提案はありますか?ありがとう。