特定のフィールドに繰り返される特定のフレーズが含まれているかどうかに基づいて、Rubyを使用してCSVテーブルのレコードに「タグ付け」しようとしています。この種の仕事を支援するライブラリがあるかどうかはわかりません。また、Rubyがこの種のことを行うのに最も効率的な言語ではない可能性があることを認識しています。
CSVテーブルには、検索する一意のIDとテキストフィールドが含まれています。
ID,NOTES
1,MISSING DOB; ID CANNOT BE BLANK
2,INVALID MEMBER ID - unable to verify
3,needs follow-up
4,ID CANNOT BE BLANK-- additional info needed
このCSVテーブルから、キーワードを抽出してタグを割り当て、別のCSVテーブルに保存しました。
PHRASE,TAG
MISSING DOB,BLANKDOB
ID CANNOT BE BLANK,BLANKID
INVALID MEMBER ID,INVALIDID
ソースのNOTES列には、特定してマッピングしたいフレーズに加えて、句読点やその他のフレーズが含まれていることに注意してください。さらに、すべてのレコードに一致するフレーズがあるわけではありません。
次のようなテーブルを作成したいと思います。
ID, TAG
1, BLANKDOB
1, BLANKID
2, INVALIDID
4, BLANKID
または、別の文字で区切られたタグを交互に使用します。
ID, TAG
1, BLANKDOB; BLANKID
2, INVALIDID
4, BLANKID
フレーズをキーとして、マッピングテーブルをハッシュにロードしました。
phrase_hash = {}
CSV.foreach("phrase_lookup.csv") do |row|
phrase, tag = row
next if name == "PHRASE"
phrase_hash[phrase] = tag
end
ハッシュのキーは、繰り返し処理したい検索フレーズです。次にRubyでやりたいことを表現するのに苦労していますが、アイデアは次のとおりです。
NOTESテーブルを配列にロードします。上記のように、フレーズ(つまりキー)ごとに、フレーズを含む配列からレコードを選択し、これらの行に関連付けられたIDを収集し、そのフレーズに関連付けられたタグとともに出力します。
誰か助けてもらえますか?