R でいくつかのあいまい一致を実行しようとしています。ここでは、一致するデータの複数のフィールドがあります。
例えば:
try_to_match <- c('seoul korea', 'bisbane', 'korea', 'australia brisbane')
locations <- data.frame(name=c('seoul', 'brisbane'),
country=c('south korea', 'australia'))
ユーザーが入力した場所をデータフレームに一致させtry_to_match
たいlocations
。
現在、SO での R とのあいまい一致について同様の質問があり、ほとんどがagrep
. ただし、一致する単語が複数ある場合のあいまい一致をカバーするものは見つかりません。
たとえば、 とだけlocations$name
一致させると、予想どおり、「bisbane」から「brisbane」への一致が得られます。また、国が含まれていないため、国を含むさまざまな検索で一致するものlocations$name
はありません。
sapply(try_to_match, agrep, locations$name, value=T)
# $`seoul korea`
# character(0)
# $bisbane
# [1] "brisbane"
# $korea
# character(0)
# $`australia brisbane`
# character(0)
だから、私は国とのマッチングも組み込むべきだと思います:
sapply(try_to_match, agrep, paste(locations$name, locations$country), value=T)
# $`seoul korea`
# character(0)
# $bisbane
# [1] "brisbane australia"
# $korea
# [1] "seoul south korea"
# $`australia brisbane`
# character(0)
ただし、単語が欠落しているため、「seoul korea」と「seoul south korea」を一致させることはできません。同様に、"brisbane australia" は適切に一致しますが、"australia brisbane" は適切に一致しません (単語の順序が逆になるため)。(「korea」が「seoul south korea」と一致するかどうかは少し疑わしいですが、これが今のところ残っていることを嬉しく思います)。
だから、私の質問は次のとおりです。検索用語と一致用語に複数の単語があり、個々のスペルが間違っている可能性があり、単語の順序が異なる可能性がある場合、あいまい一致を行う方法は?
この種の検索を行うパッケージはありますか?
(はい、優れた geonames Web サービスを使用して多くのマッチングを行うことができますが、そのサーバーに対して多くの要求を行うことは避けたいと考えています。R でこの種の検索を行う機能よりも、R でこの種の検索を行う機能に関心があります。ジオコーディングする)。