状況
私は現在 Tensorflow を学んでおり、最初の試みとして (MINST チュートリアルに従う/試した後)、いくつかの基本的な文字列フォーマットを行うモデル (おそらく RNN) を作成したいと思います:
次のケースでは、深層学習ほど複雑なものは必要ないかもしれませんが、それは自分自身を訓練するためだけのものです。
実際のクリーンアドレスを抽出したい「クリーンアドレス」文字列のセットがあります。
彼女は私が取得したい変換の種類です:
RUE DE MADAGASCAR --> RUE DE MADAGASCAR
ZI DE LA PLAINE
55 RUE DU 1ER SEPTEMBRE 1944 --> 55 RUE DU 1ER SEPTEMBRE 1944
ZONE INDUSTRIELLE RUE DE LA VALLEE B.P. 8 --> RUE DE LA VALLEE
BP 62 AVENUE BECQUEREL --> AVENUE BECQUEREL
291 VOIE ATLAS --> 291 VOIE ATLAS
12 RUE ARMAND BUSQUET ZONE INDUSTRIELLE --> 12 RUE ARMAND BUSQUET
DOSSIER MLOC 5 RUE AMABLE LOZAI --> 5 RUE AMABLE LOZAI
ZI CAEN CANAL -->
RUE DE L'EUROPE ZI PORTUAIRE --> RUE DE L'EUROPE
BP 5229 BOULEVARD HENRY BECQUEREL CAMPUS JULES HOROWITZ --> BOULEVARD HENRY BECQUEREL
GIE MONSIEUR GAUTIER BOULEVARD H. BECQUEREL BP 5027 --> BOULEVARD H. BECQUEREL
21 PLACE DE LA REPUBLIQUE --> 21 PLACE DE LA REPUBLIQUE
18 RUE DE LA GIRAFE --> 18 RUE DE LA GIRAFE
21 RUE DES GOUDRIERS --> 21 RUE DES GOUDRIERS
AVENUE STRASSBURGER --> AVENUE STRASSBURGER
7 RUE DE L'EGLISE --> 7 RUE DE L'EGLISE
1060 RUE LEON FOUCAULT ZI DE LA SPHERE --> 1060 RUE LEON FOUCAULT
もっと例が必要です : 200 個の要素を含むスプレッドシートへのリンクを次に示します (1000 ~ 5000 個の要素に拡張する予定です)。
ご覧のとおり、多くの認識可能なパターンがあります。
BP単語とそれに続く 2 桁または 4 桁の数字を取らないでください- 服用しない
ZI、ZAまたはZone d'activiter... - 住所は通常次のようになります
00 (Rue|Voie|Avenue|...) nameOfStreet - 等...
私が考える進め方
入力文字列の一部である出力文字列を取得しようとしています。上記のパターンに基づいて単語を削除します。
RNN タイプのグラフを使用すると思います。「「BP」があるなどのことを検出する必要があるため、この単語を使用しません。次の入力が 2 桁または 4 桁の文字列である場合は、そうではありません。どちらかを取って」、何らかの記憶があるはずだと思います。
それはすべて、データを入力する方法によって異なります。私はそれを行う2つまたは3つの方法があると思います:
- 単語を入力 (スペースで区切る)
- 文字列全体を入力(アドレス全体)
- 文字列を入力して、それをより深いレイヤーに分割しますか?
問題は次のとおりです。
単一の単語を入力する場合、文字列の区切りをどのようにマークしますか?
文字列全体を入力すると、システムが単一の単語のみを取得または削除するため、少し失われたように見えます.3 番目のオプション (2 つを混在させる) は理にかなっていますか?
バッチでトレーニングし、「バッチ部分」を使用して複数の単語を入力し、すべてのバッチの表現とアドレスを入力することは可能ですか?
また、私のシステムでは、ノードの重みがすべて 0 と 1 になるのでしょうか (単一の単語しか取得または削除できないため)、それとも単語を保持する確率のような中間値になるのでしょうか。
プロセスの要約
- すべての単語の辞書を作成する
- 文字列を同じ長さにパディングしますか?
- すべての文字列 (または単語?) を 1D 配列に変換します
- グラフを定義する
- 小さなバッチで文字列 (または単語?) を入力する
- テストと表示の精度 (出力文字列は、期待される出力と完全に一致するか、または期待される出力と出力の間の差の % であるか?)
- グラフを保存する
- それを使用して文字列をフォーマットします
すべてを読んでいただきありがとうございます。
特に、私が向かっている一般的な方向性と、データをグラフに入力する方法に関して。