めずらしい野菜を求めてKleinmarkthalle
朝、ガールフレンドの出勤に合わせてKonstarblarwacheまで出る。思いつきでKleinmarkthalleへ出かける。ほうれん草(房)が手に入ればいいな、と思って。Kleinmarkthalleへ来るのは久しぶりだ。
ほうれん草は難なく手に入った。でも、一房でなく、6房で1セットだったけどね。

偶然にグアバと菜の花を手に入れる。葉の花の和物を作ると美味しいかな、と思って。店番のお姉ちゃんはアジアっぽい顔つきだった。でもドイツ語はネイティブの発音。マレーシアの国旗を置いていたから、きっとマレー系のドイツ人なんだろう。丁寧にも日本語で商品ポップアップまで置いてあった。おそらく日本人レストラン経営者が買い出しに来るのだろう。店番のお姉ちゃんが言うには、Kleinmarkthalleで販売する以外は、レストラン向けに野菜を卸しているのだという。

ところで、ほうれん草の房は帰りにKonstarblarwacheのトルコ人屋台でも見つけた。ほうれん草の束は思っているほど珍しい存在でもないらしい。単純にドイツ人が料理に使用しないだけで、中東系の人間は使うから、探せば見つかるのだろう。
魚のコーナーも一通り見て回った。良さそうなマグロの塊を見つけたが、きょうのところは止めておいた。また別の機会に買いに来ることにしよう。
グアバは果物というよりも、野菜のようだ。ガールフレンドが食べ方を教えてくれた。切ったグアバの上に塩をふり、赤トウガラシのペーストを振りかける。これが美味しい食べ方らしい。確かに美味しかった。またグアバを見つけたら買って帰ることにしよう。
フランクフルト市の週末の過ごし方は熱帯気候で決まり🌴

Frankfurt Plamen Gardenへと出かける。Botanical GardenとPalmen Gardenが別々の施設だと、きょう初めて知った。ちなみにBotanical Gardenは入場無料。Palmen Gardenは大人9€。9€は非常に安い値段だと感じる。
園内は3つの温室と巨大な庭園で構成されている。
Palmenhause, つまりヤシの温室は、その名の通りで、たくさんのヤシ類の植物が育っている。まるでジャングルの中を散策しているような気分になり、心が喜ばしい。小さい川を石を伝って渡れるようにデザインされており、子ども向けにも配慮されたデザインだと感心する。もっとも、子どもだけでなく、写真映えするので、たくさんの大人たちも写真撮影していたが。一組のカップルは川を渡る途中で足を滑らせて川に転落した。まさかこんな川で落ちるとは思っても見なかったので、心から驚いた。期待から外れた行動をする人間がいるもので、見ているだけでは非常に楽しい。
Palmenhauseでは、期間限定の展示でツバキ科植物の庭園展示があった。ツバキ科の花とは、こんなに存在していたのか、と驚く。中には、想い出深いツバキ科の花もあった。昔、通学路で花の採取し、裏返しては花の蜜を吸っていた。あの花もツバキ科の植物だったのか、とそんなことを感心する。
ツバキ科の植物はほとんどが東アジア原産であるが、近代になってからはヨーロッパ社会でも親しまれていたようだ。上品な香りと多産な花が庭園に良い彩りを与えてくれるだろう。
温室のうち2つは室内でつながっている。いくつかの温室は東南アジアのジャングルを再現しており、空気を肌で感じるだけで十分に楽しい。
こんなにもよく再現されたジャングルの景色を見ていると、水木しげるの従軍戦記を思い出す。水木しげるはおもしろおかしくも描写していたが、ジャングルでの行軍の過酷さがよくわかる。そもそも周囲の視界が極端に制限されている状況。敵は敵軍だけではなく、野生動物まで。
いまでは、そんな過酷な環境を人工的に再現できるまでになった。よい社会になったものだ。

ジャングルコーナーでオジギソウを見つける。触ると閉じるあの植物。オジギソウはミモザの1種と解説プレートに記載があった。ぼくにとってミモザというと、2月頃に黄色の花が咲くあのミモザのことだと思っていた。オジギソウのミモザは触ると閉じる特性から「ミモザのような繊細さ」という言葉が存在する。一方、黄色のミモザは過酷な環境でも育成することから「たくましい女性」を表現し、国際女性デーのシンボルにもなっている。ミモザ、ずいぶんと感慨深い植物だこと。
アジア出身のガールフレンドは空気に触れるだけでとてもはしゃいでいた。さらにミモザの葉を見て、触ってはしゃいでいた。彼女が言うには、ミモザの葉は子どもの頃からとても親しみがあるのだとか。
NLLB (No-Language-Left-Behind)翻訳モデルをTransformerパッケージで利用する
Facebook Researchは以前にFairSeqというPythonパッケージを開発していた。 いつの間にやら、プロジェクト名はNLLB (No-Language-Left-Behind)に変更されていたようだ。
FairSeqはPytorchをベースに独自実装されたパッケージであったが、NLLBではTransformerベースで利用できるらしい。 めっちゃ便利。
そこで、NLLBの facebook/nllb-200-distilled-600M モデルを利用してみる。
ぼくの興味は単に翻訳モデルを使うよりも 確率的なサンプリングと$\tau$ パラメタの変化と翻訳の挙動に興味がある。 確率的サンプリングの利用方法に関しては、あんまり解説されてなかったので、調べて書き残しておく。 利用法のドキュメントはHuggingFaceページに記載があった。
"""This script is checked with,
- transformers==4.50.0
- torch==2.0.0
"""
target_language_code = "fra_Latn" # French in Latin script
# The normal usage of the NLLB model (with the Beam Search).
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import torch
# Check if GPU is available and set device accordingly
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# Load the tokenizer and model
model_name = "facebook/nllb-200-distilled-600M"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
model = model.to(device)
article = "UN Chief says there is no military solution in Syria"
inputs = tokenizer(article, return_tensors="pt")
inputs = inputs.to(device)
translated_tokens = model.generate(
**inputs,
forced_bos_token_id=tokenizer.convert_tokens_to_ids(target_language_code),
max_length=30
)
output = tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0]
print(f"Translated text: {output}")
# ------------------------------------------------------------
# tau=0.5
translated_tokens_sampling = model.generate(
**inputs,
forced_bos_token_id=tokenizer.convert_tokens_to_ids(target_language_code),
max_length=30,
do_sample=True, # Enable stochastic sampling
num_beams=1, # Ensure only one beam is used (no beam search)
temperature=0.5, # Control the randomness (higher value = more random)
top_k=0, # Consider only the top K most likely next tokens
top_p=1.0, # Consider the top tokens with cumulative probability up to P
)
output_sampling = tokenizer.batch_decode(translated_tokens_sampling, skip_special_tokens=True)[0]
print(f"Translated text: {output_sampling}")
# tau=1.0
translated_tokens_sampling = model.generate(
**inputs,
forced_bos_token_id=tokenizer.convert_tokens_to_ids(target_language_code),
max_length=30,
do_sample=True, # Enable stochastic sampling
num_beams=1, # Ensure only one beam is used (no beam search)
temperature=1.0, # Control the randomness (higher value = more random)
top_k=0, # Consider only the top K most likely next tokens
top_p=1.0, # Consider the top tokens with cumulative probability up to P
)
output_sampling = tokenizer.batch_decode(translated_tokens_sampling, skip_special_tokens=True)[0]
print(f"Translated text: {output_sampling}")
# tau=2.0
translated_tokens_sampling = model.generate(
**inputs,
forced_bos_token_id=tokenizer.convert_tokens_to_ids(target_language_code),
max_length=30,
do_sample=True, # Enable stochastic sampling
num_beams=1, # Ensure only one beam is used (no beam search)
temperature=2.0, # Control the randomness (higher value = more random)
top_k=0, # Consider only the top K most likely next tokens
top_p=1.0, # Consider the top tokens with cumulative probability up to P
)
output_sampling = tokenizer.batch_decode(translated_tokens_sampling, skip_special_tokens=True)[0]
print(f"Translated text: {output_sampling}")
スクリプトを実行すると、こうなる
# Beam-Searchを使った翻訳 Translated text: Le chef de l'ONU dit qu'il n'y a pas de solution militaire en Syrie # 確率的サンプリング tau=0.5 Translated text: Le chef de l'ONU affirme qu'il n'y a pas de solution militaire en Syrie # 確率的サンプリング tau=1.0 Translated text: cya-paysdukan dwağiniz # 確率的サンプリング tau=2.0 Translated text: maiorρτα ninu honetanⵍⴰⵏ został lay bohl成功štis swoim sekundi 없었던 wosatha шляху čest-6 कठिन булгандабілі kuy ҷониби ನಿಯಂತ್ರ anaghịedie dans ganti kwistjonijiet
アメリカ発サービスからヨーロッパ発のサービスへの切り替えって、ものすごい高難易度ゲーなのではないだろうか
ガールフレンドの市民登録に付き添う。最近のフランクフルト市役所の職員は英語を話す職員も増えている。なので、おそらく彼女一人でも問題ないだろう。でも、こういうときに付き添ってあげておくと、ポイントアップ(だとぼくは思っている。)結局、ドイツ語をほとんど必要としなかった。
Konstablarwacheのカフェで朝食を取る。アメリカ経済とヨーロッパ経済の話をする。ヨーロッパ経済界はアメリカサービスから脱却したいと考えている。なので、コピーされたヨーロッパ発のサービスが存在はしている。しかし、なぜコピーされたヨーロッパ発サービスは人気がないのだろうか。
例えば、アマゾンの例を考えてみる。アマゾンが人気の理由は、以下の3点に集約されるかもしれない。
- 安い
- 配送の保証
- 返品システム
価格の安さならば別にアマゾンでなくとも良い。配送の保証もDHLが担保してくれるので、さほど問題にはならない。と、なると返品保証システムの要素は大きいかもしれない。
ヨーロッパのサービスはだいたいにおいて、カスタマーサービスのレベルが終わっている。つまり、売ったら売りっぱなしなのだ。ネットショッピングにおいても、同じ話。
しかし、アマゾンは返品システムがきちんと構築されている。では、なぜ返品システムが効率的に機能するのか?それは高度に自動化された倉庫と物流管理システムが大きいだろう(とぼくは思う)。つまり、アマゾンはすでに先行投資を完了しており、返品システムを満足できるレベルで顧客に提供している。
アマゾンの例をひとつ取っても、サービスのコピーは簡単にはいかないのだな、と改めて感じた。
きょうは気分転換に街中のコーヒー店ででかける。午前中はずっとそこで仕事をした。街の中心街はうるさい。しかし、多くの人々を眺めることができるので、暇しない。暇になったら、目を閉じて周りの人の会話を聴くのも楽しい。少なくともぼくのドイツ語学習の役に立つ。
コーヒー店で仕事していると若い女性が無印良品の紙袋を持ってやってきた。近隣に無印良品の店があるらしい。知らなかった。どうやら絵描き道具を買ってきたらしい。タブレットを片手に模写していた。楽しそう。ぼくも暇つぶしに模写してみようか。
マイン川沿いの桜が咲きはじめ
フランクフルトのマイン川沿いを歩く。いくつかの花はすでに咲いており、本格的に春を感じる。多くの人が桜の木の下で写真を撮影していた。人々のポーズのとり方を眺めていると、個性を感じる。
ガールフレンドは English Ivyを見つけて持って帰りたいと言う。なんでもIvyは湿度を吸収してくれるのだそうだ。なので、シャワー室に置くのだと言う。地面から引っこ抜いて、持って帰ることにした。日本語でこいつは何という名前だったか?なんだか可愛らしい商品名があった気がする。
昼はボートのケバブ店でケバブを楽しむ。イワシのケバブが非常に美味しい。しかし、油が多すぎたのかもしれない。体調が悪くなったので、そうそうに帰った。
Girls’Day und Boys’Day
きょうはドイツでGirls’Day und Boys’Dayという日らしい。説明を読むと、要するに男女で雇用の均等性を実現するために、子どもたちに性別の偏りがある仕事を体験させてあげる日、ということになる。ラジオを聞いていると、素人のような女の子の声が天気の案内と交通情報の読み上げをしていて、少し驚いた。ラジオのアナウンサーは性別の偏りがある職業なんだろうか。ぼくにはそう思えないけれど。いずれにせよ、ラジオアナウンスをした子どもたちにはよい体験になったことは間違いないだろう。
https://www.bafza.de/engagement-und-aktionen/girlsday-und-boysday
夕方、ガールフレンドと会話する。ガールフレンドの職場にも子どもたちが来ていたそうだ。IT開発とマネジメントの職場は子どもたちの目にはどのように映っていたのだろう。現代の子どもたちはデジタルネイティブなので、ソフトウェアを開発しているくらいの概念を理解できていると思うが。
とりあえず指摘しておきたいフランス人と自由すぎるドイツ人
一日だけWürzburgへ出かける。朝はやくのRegional Bahnに乗る。思ったよりも通勤客が多かった。しかし、席を取れたし、横の席も空いていたので、特に文句はない。
Würzburg到着前に丘を見上げると、人々が作業をしていた。きっとブドウ畑の整地作業をしているのだろう。
朝にアドバイザとミーティングする。きょうも実験条件の不備を指摘された。彼の指摘は正しい。注意をされると、恥ずかしいような気分にもなる。が、フランス人によくある「とりあえず言っておきたいだけ」だから、深刻に受け取ることもないだろう。
しばらくすると、フランス人の同僚がやってきた。彼はなんだか知らないが、ぼくに良くしてくれる。彼の性格ゆえなのか、ぼくの柔軟性ゆえなのか、どちらもあり得るだろう。彼は京都の八ツ橋を気に入ったようだ。アドバイザが日本出張いったときに、八ツ橋をお土産に持って帰ったのがきっかけなのだそうだ。ドイツで八ツ橋を購入できるネットショップを教えてあげた。同僚は喜んでいた。よかった。
昼食に出かける。途中でアドバイザのインターンの子に会う。彼女もまた親切にしてくれる。変わったイヤリングをしていた。イヤリングは電子基板を切り取った形状。どこかの製品なのかと思ったら、自分で作ったと言う。家に工作機械があるので、大学で破棄された基盤を拾って持って帰ったそうだ。いかにもドイツ人らしい。
インターンの子と暇つぶしに会話する。マリファナの話をする。インターンの子にはマリファナを育ててる友人がいるそうだ。冗談なのかと思ったら、本当らしい。そもそも実家でもマリファナを育てていて、祖母に文句を言われていたらしい。それで、ビニールハウスにマリファナを隔離したのだと。実にドイツ人らしい。
午後、指摘を受けた実験を修正し、数値を出す。ぼくはこう仮定した: そもそも参考文献の記述が間違っている。おそらく、40% と書くべき箇所を0.4%と記述している。この仮定に基づき、数値を計算すると、参考文献の実験結果と近くなった。アドバイザも納得した。よかった。このように、間違いの仮定を立てた数値計算したり、即日で実験結果の修正できるところは、ぼくの優れた点だろう。そう認識しておくことにする。
帰り道。雑貨屋に寄る。ガールフレンドにお土産を見つけて購入した。アボガドのスパイス。おもしろいものだ。友人にもお土産として購入すればよかったなぁ、と少し後悔。でも、ガールフレンドが喜んでくれればとりあえず良いか。