冷戦から深層学習までの機械翻訳の歴史

UnsplashのAnt Rozetskyによる写真

Google翻訳はFacebookの2倍の頻度で開いていますが、価格タグの即時翻訳はサイバーパンクではありません。それが現実です。これが機械翻訳のアルゴリズムを構築するための百年にわたる戦いの結果であり、その期間の半分の間に目に見える成功がなかったことを想像するのは難しいです。

この記事で説明する正確な開発は、検索エンジンから音声制御マイクロ波まで、すべての最新の言語処理システムの基礎を設定します。今日、オンライン翻訳の進化と構造について話している。

P. P. Troyanskiiの翻訳機(説明から作られたイラスト。残念ながら写真はありません。)

はじめに

ソビエトの科学者ピーター・トロヤンスキーは、「ある言語から別の言語に翻訳する際の単語の選択と印刷のための機械」をソ連科学アカデミーに提示しました。発明は非常に簡単でした。4種類の言語のカード、タイプライター、古い学校のカメラがありました。

オペレーターは、テキストから最初の単語を取り出し、対応するカードを見つけ、写真を撮り、タイプライターでその形態的特徴(名詞、複数、属格)を入力しました。タイプライターのキーは機能の1つをエンコードしました。テープとカメラのフィルムを同時に使用して、言葉とその形態を含む一連のフレームを作成しました。

これらすべてにもかかわらず、ソ連でよく起こるように、この発明は「役に立たない」と考えられていました。 Troyanskiiは、20年間発明を完成させようとした後、Stenocardiaで亡くなりました。 1956年にソビエトの2人の科学者が彼の特許を発見するまで、世界中の誰もこの機械について知りませんでした。

それは冷戦の始まりでした。 1954年1月7日、ニューヨークのIBM本社で、ジョージタウンとIBMの実験が始まりました。 IBM 701コンピューターは、史上初めて60のロシア語の文章を自動的に英語に翻訳しました。

「ソビエトの言語の単語を理解しなかった少女は、IBMカードにロシア語のメッセージを打ち抜いた。 「頭脳」は、毎秒2行半の速さで自動プリンターで英語の翻訳を打ち切りました」とIBMのプレスリリースを報告しました。
IBM 701

しかし、勝利の見出しは少し詳細を隠しました。翻訳された例が曖昧さを排除するために慎重に選択され、テストされたことについては誰も言及していません。日常的に使用する場合、そのシステムはポケットフレーズブックに勝るものはありませんでした。それにもかかわらず、この種の軍拡競争が始まりました。カナダ、ドイツ、フランス、特に日本がすべて機械翻訳の競争に参加しました。

機械翻訳の競争

機械翻訳を改善するための無駄な努力は40年間続いた。 1966年、米国のALPAC委員会は、有名な報告書で、機械翻訳を高価で、不正確で、将来性がないと呼びました。その代わりに、彼らは辞書の開発に焦点を当てることを推奨しました。これにより、ほぼ10年間、米国の研究者がレースから除外されました。

それでも、現代の自然言語処理の基礎は、科学者とその試み、研究、および開発によってのみ作成されました。今日の検索エンジン、スパムフィルター、パーソナルアシスタントはすべて、互いにスパイしている国々のおかげで登場しました。

ルールベースの機械翻訳(RBMT)

ルールベースの機械翻訳に関する最初のアイデアは、70年代に登場しました。科学者たちは通訳者の仕事をじっと見つめ、途方もなく遅いコンピューターにそれらの行動を繰り返させようとしました。これらのシステムは以下で構成されていました。

  • バイリンガル辞書(RU-> EN)
  • 各言語の言語規則のセット(たとえば、-heit、-keit、-ungなどの特定の接尾辞で終わる名詞は女性です)

それでおしまい。必要に応じて、システムに名前のリスト、スペル修正プログラム、翻字などのハッキングを追加できます。

PROMPTとSystranは、RBMTシステムの最も有名な例です。この黄金時代の柔らかな息吹を感じるために、Aliexpressをご覧ください。

しかし、彼らにもいくつかのニュアンスと亜種がありました。

直接機械翻訳

これは最も簡単なタイプの機械翻訳です。テキストを単語に分割し、それらを翻訳し、形態をわずかに修正し、構文を調和させて、全体を多かれ少なかれ正しく聞こえるようにします。日が暮れると、訓練された言語学者が各単語の規則を書きます。

出力はある種の翻訳を返します。通常、それはかなり安っぽいです。言語学者は時間を無駄に費やしているようです。

現代のシステムはこのアプローチをまったく使用しておらず、現代の言語学者は感謝しています。

転送ベースの機械翻訳

直接翻訳とは対照的に、学校で教えられたように、文の文法構造を決定することで最初に準備します。その後、単語ではなく構造全体を操作します。これにより、翻訳中の単語の順序をかなり適切に変換できます。理論的には。

実際には、それはまだ逐語的な翻訳と疲れ果てた言語学者をもたらしました。一方で、単純化された一般的な文法規則をもたらしました。しかし、他方では、単一の単語と比較して単語の構成の数が増えたため、より複雑になりました。

言語間機械翻訳

この方法では、ソーステキストは中間表現に変換され、すべての世界の言語(interlingua)に統一されます。デカルトが夢見ていた同じ言語であるメタ言語。これは普遍的なルールに従い、翻訳を単純な「前後」のタスクに変換します。次に、interlinguaは任意のターゲット言語に変換します。これが特異点です。

変換のため、Interlinguaはしばしば転送ベースのシステムと混同されます。違いは、言語ペアではなく、すべての単一言語およびインターリングアに固有の言語規則です。つまり、第3言語をinterlinguaシステムに追加し、3つの言語間で翻訳することができます。転送ベースのシステムではこれを実行できません。

完璧に見えますが、実際にはそうではありません。このような普遍的なインターリングアを作成することは非常に困難でした。多くの科学者が一生懸命取り組んできました。それらは成功していませんが、それらのおかげで、形態学的、構文的、さらに意味レベルの表現さえ可能になりました。しかし、唯一の意味テキスト理論には大金がかかります!

中間言語の考え方が復活します。しばらく待ちましょう。

ご覧のとおり、すべてのRBMTは愚かで恐ろしいため、特定のケース(天気予報の翻訳など)を除いて、まれに使用されることはほとんどありません。 RBMTの利点の中で、しばしば言及されるのは、その形態学的な正確さ(言葉を混同しない)、結果の再現性(すべての翻訳者が同じ結果を得る)、および対象分野に合わせて調整する能力(経済学者や用語を教えるため)ですたとえば、プログラマーに固有です)。

誰かが理想的なRBMTの作成に成功し、言語学者がすべてのスペルルールでそれを強化したとしても、常にいくつかの例外があります。英語のすべての不規則動詞、ドイツ語の分離可能な接頭辞、ロシア語の接尾辞、違う言い方をします。すべてのニュアンスを考慮に入れようとすると、何百万時間も無駄になります。

そして同音異義語を忘れないでください。同じ単語が異なるコンテキストで異なる意味を持つことがあり、さまざまな翻訳につながります。ここでいくつの意味をつかむことができますか:望遠鏡で丘の上の男を見ましたか?

言語は、固定された一連の規則に基づいて開発されませんでした。これは、言語学者が好む事実です。彼らは、過去300年の侵略の歴史により大きな影響を受けました。どうやって機械に説明できますか?

冷戦の40年は、明確な解決策を見つける助けにはなりませんでした。 RBMTは死んでいました。

例ベースの機械翻訳(EBMT)

日本は、機械翻訳のために戦うことに特に興味がありました。冷戦はありませんでしたが、理由がありました。国のほとんどの人が英語を知っていませんでした。今後のグローバリゼーションパーティーでは、かなりの問題になると約束しました。そのため、日本人は機械翻訳の実用的な方法を見つけることに非常に意欲的でした。

ルールベースの英日翻訳は非常に複雑です。言語構造は完全に異なっており、ほとんどすべての単語を再配置し、新しい単語を追加する必要があります。 1984年、京都大学の長尾誠氏は、繰り返し翻訳する代わりに既成のフレーズを使用するというアイデアを思いつきました。

「映画に行く」という簡単な文章を翻訳しなければならないことを想像してみましょう。また、「劇場に行く」という別の同様の文章をすでに翻訳しているとしましょう。辞書で映画」。

必要なのは、2つの文の違いを把握し、不足している単語を翻訳して、それを台無しにしないことです。サンプルが多ければ多いほど、より良い翻訳になります。

私は、なじみのない言語でもまったく同じ方法でフレーズを作成します!

EBMTは世界中の科学者に日の目を見せました。結局のところ、ルールや例外を作成するのに何年も費やさずに、既存の翻訳を機械に与えることができます。まだ革命ではありませんが、明らかにそれへの第一歩です。統計翻訳の革新的な発明はわずか5年で起こります。

統計的機械翻訳(SMT)

1990年の初め、IBM Research Centerで、機械翻訳システムが最初に公開されました。機械翻訳システムは、全体としての規則と言語学について何も知りませんでした。 2つの言語で同様のテキストを分析し、パターンを理解しようとしました。

アイデアはシンプルでありながら美しいものでした。 2つの言語の同一の文が単語に分割され、その後で一致しました。この操作は約5億回繰り返され、たとえば、「Das Haus」という単語が「家」対「建物」対「建設」と訳された回数などがカウントされます。

ほとんどの場合、ソースワードが「house」と翻訳された場合、マシンはこれを使用しました。ルールを設定せず、辞書も使用しなかったことに注意してください。すべての結論は、統計と「人々がそのように翻訳すれば、私もそうする」という論理に導かれ、機械によって行われました。

この方法は、以前のすべての方法よりもはるかに効率的かつ正確でした。そして、言語学者は必要ありませんでした。使用するテキストが多いほど、より良い翻訳が得られます。

内部からのGoogleの統計翻訳。確率だけでなく、逆統計もカウントします。

まだ1つの質問がありました。「ダスハウス」という言葉と「建物」という言葉を機械がどのように相関させるのか、そしてこれらが正しい翻訳であることがどのようにわかるのでしょうか。

答えはわからないということでした。開始時に、機械は単語「Das Haus」が翻訳された文の任意の単語と同等に相関していると仮定しました。次に、「Das Haus」が他の文に現れると、「house」との相関の数が増加します。それが「ワードアライメントアルゴリズム」であり、大学レベルの機械学習の典型的なタスクです。

マシンは、各単語に関連する統計を収集するために、2つの言語で数百万の文を必要としました。どうやって手に入れたの?さて、私たちは欧州議会と国連安全保障理事会の会議の要約を取り上げることに決めました。それらはすべての加盟国の言語で利用可能で、現在は国連コーポラとユーロパールコーポラでダウンロードできます。

単語ベースのSMT

最初は、このアプローチは簡単で論理的だったため、最初の統計翻訳システムは文を単語に分割することで機能しました。 IBMの最初の統計変換モデルはモデル1と呼ばれていました。とてもエレガントですね。彼らが2番目のものと呼ぶものを推測してください?

モデル1:「言葉の袋」

モデル1は、単語に分割して統計情報をカウントするという古典的なアプローチを使用しました。語順は考慮されませんでした。唯一のトリックは、1つの単語を複数の単語に翻訳することでした。たとえば、「Der Staubsauger」は「Vacuum Cleaner」に変わる可能性がありますが、それは逆もまた同様であることを意味しませんでした。

Pythonの簡単な実装をいくつか紹介します:shawa / IBM-Model-1。

モデル2:文中の語順を考慮する

言語の語順に関する知識の欠如はモデル1の問題になり、場合によっては非常に重要です。

モデル2はそれを処理しました。出力文で単語がとる通常の場所を記憶し、中間ステップでより自然な音のために単語をシャッフルしました。事態は改善しましたが、それでもやっかいなものでした。

モデル3:追加の受胎能

ドイツ語の記事や英語で否定するときに「do」を使用するなど、翻訳に新しい単語が頻繁に登場しました。 「ペルシモネンを欲しがる」→「Iが嫌い」。それに対処するために、モデル3にさらに2つのステップが追加されました。

  • マシンが新しい単語の必要性を考慮した場合のNULLトークンの挿入
  • 各トークンと単語の配置に適した文法的な粒子または単語を選択する

モデル4:単語の配置

モデル2はワードアライメントを考慮しましたが、並べ替えについては何も知りませんでした。たとえば、形容詞は多くの場合、名詞で場所を切り替えますが、順序がどれほどよく記憶されていても、出力が良くなることはありません。そのため、モデル4では、いわゆる「相対順序」を考慮しました。このモデルは、2つの単語が常に場所を切り替える場合に学習します。

モデル5:バグ修正

ここに新しいものはありません。モデル5には学習用のパラメーターがいくつか追加され、単語の位置の競合に関する問題が修正されました。

革命的な性質にもかかわらず、単語ベースのシステムは、ケース、性別、同音異義語に対処できませんでした。機械によると、すべての単語は真の方法で翻訳されました。このようなシステムは、フレーズベースのより高度な方法に置き換えられたため、使用されなくなりました。

フレーズベースのSMT

この方法は、統計、並べ替え、字句ハックなど、すべての単語ベースの翻訳原則に基づいています。ただし、学習のために、テキストを単語だけでなくフレーズにも分割します。これらは正確にはn-gramであり、連続したnワードの連続したシーケンスでした。

このように、機械は単語の安定した組み合わせを翻訳することを学び、これにより精度が著しく向上しました。

秘Theは、フレーズが必ずしも単純な構文構成ではなく、言語学と文の構造を知っている人が干渉すると翻訳の品質が大幅に低下することでした。コンピューター言語学の先駆者であるフレデリック・イェリネクは、一度それについて冗談を言った。「言語学者を解雇するたびに、音声認識機能の性能が上がる」。

正確性の向上に加えて、フレーズベースの翻訳では、学習用のバイリンガルテキストを選択する際のオプションが増えました。単語ベースの翻訳では、ソースの正確な一致が重要であり、文学や無料の翻訳は除外されていました。フレーズベースの翻訳は、それらから学ぶのに問題がありませんでした。翻訳を改善するために、研究者はその目的のためにニュースWebサイトを異なる言語で解析し始めました。

2006年から、誰もがこのアプローチを使用し始めました。 Google翻訳、Yandex、Bing、およびその他の有名なオンライン翻訳者は、2016年までフレーズベースとして働いていました。おそらく、Googleが文を完璧に翻訳したか、まったくナンセンスになった瞬間を思い出すでしょう。ナンセンスはフレーズベースの機能から来ました。

古き良きルールベースのアプローチは、予測可能ではあるもののひどい結果を一貫して提供しました。統計的手法は驚くべきものであり、不可解でした。 Google翻訳は、「300」をためらうことなく「300」に変えます。それは統計的異常と呼ばれます。

フレーズベースの翻訳は非常に人気が高まっているため、「統計的な機械翻訳」を聞いたとき、それが実際の意味です。 2016年まで、すべての研究はフレーズベースの翻訳を最新技術として賞賛していました。当時、Googleがすでに機械翻訳の全体像を変えようと準備を整えているとは誰も考えていませんでした。

構文ベースのSMT

この方法についても簡単に説明する必要があります。ニューラルネットワークが登場する何年も前、構文ベースの翻訳は「未来か翻訳」と見なされていましたが、そのアイデアは広まりませんでした。

構文ベースの翻訳の支持者は、それをルールベースの方法とマージすることが可能であると信じていました。文の非常に正確な構文分析を行う必要があります-文の主語、述語、およびその他の部分を決定してから、文ツリーを構築します。これを使用して、機械は言語間の構文単位の変換を学習し、残りを単語またはフレーズで翻訳します。これにより、ワードアライメントの問題が完全に解決されます。

Yamada and Knight [2001]およびこの素晴らしいスライドショーからの例。

問題は、(多くの言語用の既製のライブラリがあるので)しばらく前に解決したと考えているにもかかわらず、構文解析はひどく機能することです。私は、主語と述語を構文解析するよりも少し複雑なタスクに構文木を使用しようとしました。そして、毎回私はあきらめて別の方法を使用しました。

少なくとも1回使用して成功した場合は、コメントでお知らせください。

神経機械翻訳(NMT)

機械翻訳でのニューラルネットワークの使用に関する非常に面白い論文が2014年に公開されました。インターネットはGoogle以外はまったく気づかず、シャベルを取り出して掘り始めました。 2年後の2016年11月に、Googleはゲームを変える発表を行いました。

アイデアは、写真間でスタイルを転送することに近いものでした。有名なアーティストのスタイルで写真を強化したPrismaなどのアプリを覚えていますか?魔法はありませんでした。ニューラルネットワークは、アーティストの絵を認識するように教えられました。次に、ネットワークの決定を含む最後のレイヤーが削除されました。結果の定型化された画像は、ネットワークが取得した中間画像にすぎません。それはネットワークの幻想であり、私たちはそれを美しいと考えています。

スタイルを写真に転送できる場合、ソーステキストに別の言語を適用しようとするとどうなりますか?テキストはその正確な「アーティストのスタイル」であり、画像の本質(言い換えれば、テキストの本質)を保ちながら転送しようとします。

平均サイズ、鋭い鼻、短い尾、常にbarえている犬を説明しようとしていると想像してください。この犬の機能セットを提供し、説明が正確であれば、一度も見たことがない場合でも、それを描くことができます。

ここで、ソーステキストが特定の機能のセットであることを想像してください。基本的に、それはあなたがそれをエンコードし、他のニューラルネットワークがそれをテキストにデコードできるようにすることを意味しますが、別の言語で。デコーダーはその言語のみを知っています。機能の起源についてはわかりませんが、たとえばスペイン語で表現できます。類推を続けると、犬をどのように描くかは関係ありません。クレヨン、水彩画、または指で。できる限りペイントします。

繰り返しますが、1つのニューラルネットワークは特定の機能セットにのみ文をエンコードでき、別のニューラルネットワークはそれらをテキストにデコードすることしかできません。どちらもお互いのことを知らず、それぞれが自分の言語だけを知っています。何か思い出す?インターリングアが帰ってきました。タダ。

問題は、これらの機能をどのように見つけるかです。犬について話しているときは明らかですが、テキストをどのように処理するのですか? 30年前、科学者はすでにユニバーサル言語コードを作成しようとしており、完全に失敗に終わりました。

それにもかかわらず、私たちは今、深い学習をしています。それが重要なタスクです!ディープラーニングと従来のニューラルネットワークの主な違いは、その特定の機能を検索する機能にあり、その性質をまったく理解していません。ニューラルネットワークが十分に大きく、数千枚のビデオカードが手元にある場合、テキストでそれらの機能を見つけることもできます。

理論的には、ニューラルネットワークから取得した機能を言語学者に渡すことができるため、彼らは勇敢で新しい地平を開くことができます。

問題は、エンコードとデコードにどのタイプのニューラルネットワークを使用する必要があるかです。畳み込みニューラルネットワーク(CNN)は、ピクセルの独立したブロックで動作するため、写真に最適です。

しかし、テキストには独立したブロックはありません。すべての単語はその周囲に依存します。テキスト、音声、および音楽は常に一貫しています。したがって、リカレントニューラルネットワーク(RNN)は、前の結果(この場合は前の単語)を記憶しているため、それらを処理するための最良の選択となります。

現在、RNNはあらゆる場所で使用されています。Siriの音声認識(次の音は前の音に依存します)、キーボードのヒント(前を記憶、次を推測)、音楽生成、さらにはチャットボットまで。

私のようなオタクにとって:実際、ニューラルトランスレーターのアーキテクチャは大きく異なります。通常のRNNが最初に使用された後、双方向にアップグレードされ、翻訳者はソースワードの前のワードだけでなく、次のワードも考慮しました。それははるかに効果的でした。その後、翻訳コンテキストの長期保存用のLSTMユニットを備えたハードコア多層RNNが続きました。

2年で、ニューラルネットワークは過去20年間の翻訳で登場したすべてを上回りました。ニューラル翻訳には、語順の間違いが50%少なく、字句の間違いが17%少なく、文法の間違いが19%少ない。ニューラルネットワークは、性別とケースを異なる言語で調和させることも学びました。そして、誰もそうするように彼らに教えませんでした。

最も顕著な改善は、直接翻訳が使用されなかった分野で発生しました。統計的な機械翻訳方法は、常に英語を主要なソースとして使用して機能していました。したがって、ロシア語からドイツ語に翻訳すると、マシンは最初にテキストを英語に翻訳し、次に英語からドイツ語に翻訳します。これは二重の損失につながります。

ニューラル翻訳はそれを必要としません-それが機能するためにはデコーダのみが必要です。コムモン辞書のない言語間の直接翻訳が可能になったのは、これが初めてでした。

Google翻訳(2016年以降)

2016年、Googleは9言語のニューラル翻訳を有効にしました。彼らは、Google Neural Machine Translation(GNMT)という名前のシステムを開発しました。 RNNの8つのエンコーダー層と8つのデコーダー層、およびデコーダーネットワークからのアテンション接続で構成されます。

文章だけでなく、単語も分割されています。それが彼らがNMTの主要な問題の1つである稀な言葉に対処した方法です。 NMTは、単語が辞書にない場合は無力です。 「Vas3k」と言いましょう。私のニックネームを翻訳するためにニューラルネットワークを教えた人はいないと思います。その場合、GMNTは単語を単語に分割し、それらの翻訳を復元しようとします。スマート。

ヒント:ブラウザでWebサイトの翻訳に使用されるGoogle翻訳では、古いフレーズベースのアルゴリズムが引き続き使用されます。どういうわけか、Googleはそれをアップグレードしておらず、その違いはオンラインバージョンと比較して非常に顕著です。

Googleはオンラインバージョンでクラウドソーシングメカニズムを使用しています。人々は最も正しいと考えるバージョンを選択できます。多くのユーザーが気に入った場合、Googleは常にこのフレーズをそのように翻訳し、特別なバッジを付けます。これは、「映画を見に行きましょう」、「あなたを待っています。」などの日常の短いフレーズに対して素晴らしく機能します。Googleは私よりも会話の英語をよく知っています:(

MicrosoftのBingは、Google翻訳とまったく同じように機能します。しかし、Yandexは異なります。

Yandex Translate(2017年以降)

Yandexは2017年にニューラル翻訳システムを立ち上げました。宣言されたように、その主な機能はハイブリッド性でした。 Yandexは、神経と統計のアプローチを組み合わせて文を翻訳し、お気に入りのCatBoostアルゴリズムで最適なものを選択します。

問題は、短いフレーズを翻訳するときに、文脈を使用して正しい単語を選択するため、ニューラル翻訳が失敗することが多いということです。単語がトレーニングデータに非常に少数しか現れない場合は困難です。そのような場合、簡単な統計翻訳で適切な単語をすばやく簡単に見つけます。

Yandexは詳細を共有しません。マーケティングのプレスリリースで私たちをかわします。はい。

Googleは単語や短いフレーズの翻訳にSMTを使用しているようです。彼らはどの記事でもそれについて言及していませんが、短い表現と長い表現の翻訳の違いを見ると、かなり目立ちます。その上、SMTは単語の統計を表示するために使用されます。

結論と未来

「Babel fish」のアイデア、つまり即時の音声翻訳に、誰もがまだ興奮しています。 GoogleはPixel Budsでそれに向かって一歩を踏み出しましたが、実際のところ、それはまだ私たちが夢見ていたものではありません。インスタント音声翻訳は、通常の翻訳とは異なります。翻訳を開始するタイミングと、シャットダウンして聞くタイミングを知る必要があります。これを解決するための適切なアプローチはまだありません。多分、Skype ...

そしてもう1つ空の領域があります。学習はすべて、並列テキストブロックのセットに限定されます。最も深いニューラルネットワークは、平行テキストで学習します。ソースを提供せずにニューラルネットワークを教えることはできません。代わりに、人々は母国語に翻訳していなくても、本や記事を読むことで辞書を補完できます。

理論的には、人々がそれを行うことができる場合、ニューラルネットワークもそれを行うことができます。経験を積むために、ある言語を知っているネットワークに別の言語のテキストを読み取らせようと試みているプロトタイプは1つだけでした。自分で試してみますが、私は愚かです。わかりました、それだけです。

このストーリーはもともとロシア語で書かれ、その後Vasily ZubarevによってVas3k.comで英語に翻訳されました。彼は私のペンフレンドであり、彼のブログを広めるべきだと確信しています。

便利なリンク

  • Philipp Koehn:統計的機械翻訳。私が見つけたメソッドの最も完全なコレクション。
  • Moses —独自の統計翻訳を作成するための一般的なライブラリ
  • OpenNMT —もう1つのライブラリですが、ニューラルトランスレータ用
  • RNNとLSTMを説明する私のお気に入りのブロガーの記事
  • ビデオ「言語翻訳者の作り方」、面白い男、きちんとした説明。まだ十分ではありません。
  • TensorFlowからのテキストガイド。独自のニューラルトランスレーターの作成について、より多くの例が必要な方やコードを試す方のために。

Vas3k.comからの他の記事

最後に一つだけ…

この記事が気に入ったら、下のをクリックして、他の人と共有して楽しんでください。