0

NLP を使用して DataTable 値を定義するプロジェクトに取り組んでいます。私はすでにその機能を手に入れました。ただし、DataTable を操作するときにいくつかの問題に遭遇しました。

どちらも異なる形式の 2 つの異なる DataTable を用意します。

例えば:

表1

|列 1|

表2

|列 1|列 2|

DataTable2 では、列 2 は列 1 に対応する値です。両方の DataTable の列 1 のセルの内容を比較し、それを NLP で実行するつもりです。特定の一致率がある場合は、それらを別の DataTable に書き込みます。一致しない場合は、空白のままにします。たとえば、次のようになります。

>75% 一致する場合

表3

|DT1 列 1| DT2 列 1 | DT2 列 2|

一致率が 75% 未満の場合

表3

|DT1 列 1| " " | " "

私が目指していることはプログラム的に可能ですか? より良い説明に役立つ場合は、疑似コードを念頭に置いています。

foreach(DataRow in Table1)
   foreach(DataRow in Table2)
      if(comparison score >=75.00)
            Write to table3
      else
            Write to table3 with blanks

この問題について何か助けていただければ幸いです。私はまだ独自の調査を行っていますが、ブレークスルーが発生した場合は投稿します.

編集: 2 つの DataTables の行が必ずしも対応していない可能性があることに気付いたので、すべてのセルに対して比較を実行する必要があります。それは可能ですか?

ただし、必ずしも DataTables を使用する必要はありませんが、提案は受け付けています。

4

1 に答える 1

1

そのため、時間の制約(および必死)のために、洗練されていない解決策を見つけました。

ネストされたforeach - forループを使用して、両方の DataTable をトラバースしました。以下のコード:

            foreach (DataRow dRow in dt1.Rows)
            {
                a = dRow[0].ToString();
                for (int i = 0; i < dt2.Rows.Count; i++)
                {
                    b = dt2.Rows[i][0].ToString();
                    if (hcontroller.GetScore(a, b) >= 90.00)
                    {
                        c = dt2.Rows[i][1].ToString();
                        match = true;
                        break;
                    }
                    else
                    {
                        match = false;
                        continue;
                    }

                }
                if (match)
                {
                    dt.Rows.Add(a, b, c);
                }
                else
                {
                    dt.Rows.Add(a, "No close matches found!", "");
                }
            }

ただし、DataTables が特定のサイズに達すると、操作が大量のメモリを消費することは確実です。さらに、ifステートメントは、より適切な一致を見つける可能性を排除します。

もしあれば、私は他の提案を受け入れます。しかし、これが私が直面している同じ問題に悩まされている人に役立つことを願っています. 乾杯!

于 2012-08-30T10:41:29.470 に答える