animatediff-cli-prompt-travel の create-config を行うと以下のように各フレームに対してプロンプトを返してくれます。
"0": "(blonde_hair:0.83),(long_hair:0.83),(looking_at_viewer:0.61),(blue_shirt:0.50),(denim:0.35),(pants:0.68),(teeth:0.41),(solo:0.92),(1girl:0.99),(print_shirt:0.43),(railing:0.55),(smile:0.86),(grin:0.41)", "1": "(blonde_hair:0.86),(long_hair:0.84),(looking_at_viewer:0.72),(outdoors:0.37),(blue_shirt:0.38),(clothes_writing:0.39),(pants:0.65),(teeth:0.41),(solo:0.91),(1girl:0.98),(shirt:0.86),(print_shirt:0.41),(t-shirt:0.57),(smile:0.88),(grin:0.50)", "2": "(blonde_hair:0.83),(long_hair:0.85),(looking_at_viewer:0.70),(outdoors:0.46),(blurry_background:0.37),(short_sleeves:0.50),(clothes_writing:0.37),(pants:0.70),(teeth:0.41),(solo:0.92),(1girl:0.98),(shirt:0.86),(print_shirt:0.42),(t-shirt:0.58),(smile:0.84),(grin:0.39)", "3": "(blonde_hair:0.85),(long_hair:0.84),(looking_at_viewer:0.69),(outdoors:0.50),(blurry_background:0.36),(short_sleeves:0.49),(pants:0.64),(teeth:0.44),(solo:0.93),(1girl:0.98),(shirt:0.85),(brown_eyes:0.39),(print_shirt:0.35),(t-shirt:0.62),(smile:0.91),(grin:0.55)", "4": "(blonde_hair:0.86),(long_hair:0.84),(looking_at_viewer:0.71),(outdoors:0.54),(blurry_background:0.40),(short_sleeves:0.45),(pants:0.63),(teeth:0.43),(solo:0.92),(1girl:0.98),(shirt:0.86),(brown_eyes:0.36),(print_shirt:0.36),(shorts:0.39),(t-shirt:0.63),(smile:0.93),(grin:0.53)", "5": "(blonde_hair:0.87),(long_hair:0.84),(looking_at_viewer:0.74),(outdoors:0.45),(blurry_background:0.48),(short_sleeves:0.44),(pants:0.57),(teeth:0.40),(solo:0.92),(1girl:0.99),(shirt:0.86),(print_shirt:0.39),(shorts:0.45),(t-shirt:0.62),(smile:0.91),(grin:0.48)", "6": "(blonde_hair:0.87),(long_hair:0.82),(looking_at_viewer:0.73),(outdoors:0.42),(blurry_background:0.48),(short_sleeves:0.47),(pants:0.65),(teeth:0.44),(solo:0.90),(1girl:0.98),(shirt:0.85),(brown_eyes:0.38),(t-shirt:0.58),(smile:0.89),(grin:0.48)", "7": "(blonde_hair:0.83),(long_hair:0.81),(looking_at_viewer:0.72),(outdoors:0.46),(denim:0.45),(blurry_background:0.41),(short_sleeves:0.47),(pants:0.63),(teeth:0.40),(solo:0.91),(1girl:0.98),(shirt:0.83),(brown_eyes:0.39),(t-shirt:0.58),(smile:0.92),(grin:0.52)", "8": "(blonde_hair:0.84),(long_hair:0.84),(looking_at_viewer:0.73),(outdoors:0.55),(denim:0.43),(blurry_background:0.51),(short_sleeves:0.52),(pants:0.61),(teeth:0.39),(solo:0.91),(1girl:0.98),(shirt:0.83),(brown_eyes:0.40),(print_shirt:0.35),(t-shirt:0.55),(smile:0.88),(grin:0.41)",
不必要と思われる単語も入っています。
消そうにも単語のうしろに数字がくっついているので一筋縄ではいきません。
一括で消すには正規表現を使うのがよいと思います。自分の中ではこういった用途にはPerlが最も適していると考えています。
my @lines = ( "black_shirt", "blonde_hair", "blue_eyes", "blue_shirt", "blurry_background", "brown_eyes", "brown_hair", "building", "cellphone", "clothes_writing", "day", "denim", "english_text", "jeans", "long_hair", "meme", "mustache", "outdoors", "pants", "parody", "phone", "print_shirt", "railing", "red_pants", "red_skirt", "shirt", "shorts", "short_sleeves", "skirt", "smartphone", "soccer", "soccer_uniform", "solo", "sportswear", "t-shirt", "1girl" ); while(<>){ foreach my $var(@lines){ s/"\(${var}:[\d|\.]+\),/"/ig; s/,\(${var}:[\d|\.]+\),/,/ig; s/,\(${var}:[\d|\.]+\)"/"/ig; } print; }
実行
perl remove.pl prompt.json > new_prompt.json
結果
"0": "(denim:0.35),(pants:0.68),(teeth:0.41),(print_shirt:0.43),(railing:0.55),(smile:0.86),(grin:0.41)", "1": "(outdoors:0.37),(clothes_writing:0.39),(pants:0.65),(teeth:0.41),(shirt:0.86),(print_shirt:0.41),(smile:0.88),(grin:0.50)", "2": "(outdoors:0.46),(short_sleeves:0.50),(clothes_writing:0.37),(pants:0.70),(teeth:0.41),(shirt:0.86),(print_shirt:0.42),(smile:0.84),(grin:0.39)", "3": "(outdoors:0.50),(short_sleeves:0.49),(pants:0.64),(teeth:0.44),(shirt:0.85),(print_shirt:0.35),(smile:0.91),(grin:0.55)", "4": "(outdoors:0.54),(short_sleeves:0.45),(pants:0.63),(teeth:0.43),(shirt:0.86),(print_shirt:0.36),(shorts:0.39),(smile:0.93),(grin:0.53)", "5": "(outdoors:0.45),(short_sleeves:0.44),(pants:0.57),(teeth:0.40),(shirt:0.86),(print_shirt:0.39),(shorts:0.45),(smile:0.91),(grin:0.48)", "6": "(outdoors:0.42),(short_sleeves:0.47),(pants:0.65),(teeth:0.44),(shirt:0.85),(smile:0.89),(grin:0.48)", "7": "(outdoors:0.46),(denim:0.45),(short_sleeves:0.47),(pants:0.63),(teeth:0.40),(shirt:0.83),(smile:0.92),(grin:0.52)", "8": "(outdoors:0.55),(denim:0.43),(short_sleeves:0.52),(pants:0.61),(teeth:0.39),(shirt:0.83),(print_shirt:0.35),(smile:0.88),(grin:0.41)",
補足(ワードを抽出する)
my @words = (); while (my $line = <>) { my @match_array = $line =~ /\(([^:]+):[\d|\.]+\)/ig; push @words, @match_array; } my %seen; my @unique = grep { !$seen{$_}++ } @words; my @sorted = sort @unique; foreach my $element (@sorted) { print "$element\n"; }
perl extract_words.pl prompt.json