この特定の問題にディープラーニングを使用するための有用な文献は見つかりませんでした。ほとんどの方法は、文字列の類似性やレベンシュタイン距離などの非機械学習方法に依存しているようです。この問題に対する合理的なディープラーニングベースのアプローチは、リカレントニューラルネットワークです。LSTM(Long short term memory)またはGRU(Gated Recurrent Unit)が理想的です。アイデアは、内部状態を持ち、入力が供給される順序を尊重するRNNを持つことです。
テキスト分類、感情分析、シーケンス生成とは異なり、ここでのテキストの優先エンコーディングは、単語レベルではなく文字レベルになります。
例えば
Christian Douglas,Chris,1
Jhon Stevens,Charlie,0
なるだろう
[C,h,r,i,s,t,i,a,n, ,D,o,u,g,l,a,s, ,C,h,r,i,s] --> [1]
[J,h,o,n, ,S,t,e,v,e,n,s, ,C,h,a,r,l,i,e] --> [0]
一致する2つの文字列は、単一のシーケンスに連結されます。ここでの直感は、RNNがシーケンスを文字ごとに処理し、最後の文字が同じシーケンスで前に見たものと同様のパターンを持っていることを学習(更新の重みを読み取る)して、代わりに1である必要があると推定することです。 0。
[1/0]のベクトルはターゲット変数です。
標準のRNN前処理手順が通常どおりに適用されます。シーケンスがすべて同じ長さ(たとえば50)になるように最初にシーケンスをパディングし、文字は文字列ではなく数値としてエンコードされます。
ここの辞書はかなり小さい(26アルファベット+スペース+パッド)ので、ネットワークアーキテクチャはかなり単純なものになります。単一の埋め込みレイヤー+繰り返しレイヤーで十分です。
この方法で問題をフレーミングすると、各データポイントの入力として2つの個別の文字列を受け取り、数値をスローするカスタムアーキテクチャを作成する代わりに、標準のRNNまたは標準のLSTM / GRUを使用できます。
このアプローチを試して、がベースラインモデルを十分に上回ることができるかどうかを確認できます。
キャラクターレベルのRNNには、Andrej Karpathyのブログとコードが役立ちます。彼が解決しようとしている問題は異なり、コードは純粋に乱暴ですが、それでもアイデアをかなりうまく捉えています。