0

私は完全に絶望的です!

私は Java で apache flink を使用していますが、正確な名前ではなく類似性によってキーを設定するために、keyby メソッドを変更できるかどうかを知りたいですか?

2 つの異なる DataStreams があり、ユニオンを実行しています。最初のストリームでは、KeyBy にしたいフィールドの名前は「John Locke」ですが、2 番目のデータストリームではフィールド値は「John L」です。

いくつかの異なる文字列間のスコアを与えるアルゴリズムがあります。私の考えは、たとえば、両方の文字列間のスコアが 0'80 よりも高い場合、これらの 2 つの文字列は同じと見なされ、keyby("name") を適用すると、それらの類似の文字列は正確な同じ名前。

視覚的な例:

datastream1----- ジョン・ロック、ミッキー・ミッキー、ウィル・ウィリアムズ

satastream2----- ミッキー M.、ジョン L.、アンソニー ブラウン

データストリーム d3= datastream1.union(datastream2)

d3.keyは正確な名前ではなく、スコア/類似性によるものです。

ご理解いただければ幸いです。ありがとうございます。

4

2 に答える 2

0

あなたの要件を効率的に実装するのは難しいと思います。理由は以下の状況です。

  • シム(A、B) = 0.9
  • sim(A,D) = sim(B,D) = 0.7
  • シム(A,C) = 0.9
  • シム(C,D) = 0.9

要素の順序が A、B、D、C の場合、イベント C の到着時に再分割する必要があります。一般に、グループは到着するすべての要素で変更できます。

代わりにできることは、ある種のステミング、正規化を行い、n をキーにする KeySelector を使用することです。

于 2016-06-10T16:41:28.473 に答える