0

2 つのデータ グリッドを分析し、それらの間に存在する可能性のある一致を見つけるプログラムを作成中です。これらの 2 つのデータ グリッドは、カーペットに関する情報を保持します。これらの 2 つのグリッドは、2 つの異なる時点で取得されたインベントリであり、それらの間には大きな不一致が存在します。これらのカーペットのサイズはわずかに異なる場合があり、説明も大きく異なります。このプログラムで、2 つのグリッド間で可能な一致を見つけて、それらを 1 つに統合したいと考えています。

プログラミングの真髄を開始する方法、可能な一致を見つける方法についてのアイデアを探しています。これは、このプログラムで最も時間がかかる部分であり、どこから始めればよいか正確にはわかりません。

これは C# で書かれた Windows プログラムです。C# でのプログラミング経験がありますが、例や主なアイデアをいただければ幸いです。

4

2 に答える 2

1

この回答は、単純な回答がないデータに対するものです。データ キーをお持ちの場合は、それを使用してください。

何かをコーディングする前に、まず何を検索するのかを自問します。2つを「一致させる」ための検索パラメーターは何ですか? キーワード?あなたのカーペットにはある種の識別子がありますか? 柄によるかな。キーボードに触れる前に、まずこれを理解しようとします。サイズで検索するのはおそらく良い考えではありません。結局のところ、2 枚の 8x8 カーペットには、何百もの異なる可能性があります。

しかし、おそらく説明の間にいくつかの類似点があります。説明自体が平易な英語である場合、非常に一般的な単語や句読点を削除してスペースに置き換える方法が見つからないかどうかを確認します. 編集: ToLower() 関数呼び出しで大文字化も削除します

List<String> CommonWords; 
foreach(string a in CommonWords) 
{
    DataBaseA.DescriptionString.replace(a, " "); 
    DataBaseB.DescriptionString.replace(b, " ");
}

たとえば、カーペットの説明 1 が次のようになっているとします。「このカーペットは、ベージュの素朴な外観と赤い花柄が組み合わされており、どの部屋にもぴったりです。」

カーペットの説明 2 は、「現代的な赤とベージュで仕上げた、スタイリッシュで素朴な花柄」

「共通語リムーバー」を実行すると、「A」、「with」、「and」、「this」、「is」、「to」が削除されます。

あなたが持っているでしょう: カーペット 素敵な追加 どんな部屋 赤の花柄 組み合わせた ベージュ 素朴な外観

「スタイリッシュな素朴な花柄のコンプリート コンテンポラリー レッド ベージュ」

次に、文字列を調べて文字列の一致を行い、特定の数を超える一致がある場合は「データ グリッド」の一致をトリガーできます。

string[] ArrayStringA = DataBaseA.DescriptionString.split(" ");
string[] ArrayStringB = DataBaseB.DescriptionString.split(" ");
int DataCounter = 0;

for(int i = 0; i < ArrayStringA.Length; i++)
{
    for(int j = 0; j < ArrayStringB.Length; j++)
    { 
        if(ArrayStringB[j] == ArrayString[i])
            DataCounter++;
    }
}

if(DataCounter > 4) //Match

これはきれいではないことに注意してください。これを行うと、比較と維持にかなりの時間がかかる可能性があり、決して確実ではありません。ただし、これはアイデアです。うまくいけば、より良い解決策を考え出すために、少なくともそれを少し使用できます。

編集 II:あなたのプログラムが実行されるとき、私はこれがあなたが何度も何度も起こりたいと思うことだとは思いません。したがって、プログラムを実行して、一致するデータ グリッドを作成します。次に、一致が得られ、すべてが良さそうに見えたら、一意の識別子キーを新しいデータに追加します。このようにして、将来的 にどれがどれであるかを正確に知ることができます。

于 2012-07-05T20:22:42.477 に答える
0

本当に、このデータがデータグリッドにあるという事実は重要ではありません。データグリッドは何か、リストまたはテーブルに支えられており、この「ソース」データを処理する必要があります。

データをどのように比較したいのかわからないことを認めているため、この質問に答えることは困難です。私が見ているように、これらは重要な質問です。

  1. 2 つのソースは列ごとに一致していますか?
  2. そうでない場合は、これは一致するための簡単な方法を提供します。いいえの場合、どのフィールドを使用して一致させることができますか?
  3. 新しいデータ セットへの更新は信頼できるものですか? そうでない場合、その理由は?
  4. なぜこのマッチングを行うのですか?それは定期的ですか、それとも一度だけですか?

1~3 が当てはまる場合、答えは非常に簡単です。1 つのテーブルをループし、他のテーブルで一致するキーを見つけ、ロジック (おそらく更新時間) を使用して、どの情報が正確かを判断します。

于 2012-07-05T19:58:35.180 に答える