5

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 でこの種の検索を行う機能に関心があります。ジオコーディングする)。

4

0 に答える 0