私はRailsアプリケーションを使ってニュースページからRSSフィードを取得し、品詞タグ付けをタイトルに適用し、タイトルから名詞句を取得し、それぞれが発生します。私は他の名詞句の一部である名詞句をフィルタリングする必要があり、そうするために、このコードを使用しています:Rubyのハッシュから重複した部分文字列をフィルタリングする
filtered_noun_phrases = sorted_noun_phrases.select{|a|
sorted_noun_phrases.keys.any?{|b| b != a and a.index(b) } }.to_h
ので、この:
:{"troops retake main government office"=>2,
"retake main government office"=>2, "main government office"=>2}
はちょうどになるべきしかし
{"troops retake main government office"=>2}
、このような名詞句のソートされたハッシュ:
{"troops retake main government office"=>2, "chinese students fighting racism"=>2,
"retake main government office"=>2, "mosul retake government base"=>2,
"toddler killer shot dead"=>2, "students fighting racism"=>2,
"retake government base"=>2, "main government office"=>2,
"white house tourists"=>2, "horn at french zoo"=>2, "government office"=>2,
"cia hacking tools"=>2, "killer shot dead"=>2, "government base"=>2,
"boko haram teen"=>2, "horn chainsawed"=>2, "fighting racism"=>2,
"silver surfers"=>2, "house tourists"=>2, "natural causes"=>2,
"george michael"=>2, "instagram fame"=>2, "hacking tools"=>2,
"iraqi forces"=>2, "mosul battle"=>2, "own wedding"=>2, "french zoo"=>2,
"haram teen"=>2, "hacked tvs"=>2, "shot dead"=>2}
は、代わりに部分的にしかフィルタ:
{"troops retake main government office"=>2, "chinese students fighting racism"=>2,
"retake main government office"=>2, "mosul retake government base"=>2,
"toddler killer shot dead"=>2, "students fighting racism"=>2,
"retake government base"=>2, "main government office"=>2,
"white house tourists"=>2, "horn at french zoo"=>2,
"cia hacking tools"=>2, "killer shot dead"=>2,
"boko haram teen"=>2}
それでは、どのように私は実際に動作するハッシュのうち、重複した部分文字列をフィルタリングすることができますか?
おそらくthis:filtered_noun_phrases = sorted_noun_phrases.reject {| a | sorted_noun_phrases.keys.any?{| b | b!= aとb.index(a)}} .to_h – trueunlessfalse
ありがとうございます!後見ではダン質問のように思えますが、以前はそれを行い、長いフレーズを削除して部分文字列を残していました... –
私は選択するだけでなく、a.index b)にb.index(a( – trueunlessfalse