簡體   English   中英

使用agrep()進行模糊字符串匹配

[英]fuzzy string matching with agrep()

我將公司名稱列表與R和agrep()進行自我匹配,因為數據在舊版系統中存儲錯誤-沒有第4個正常格式,公司與客戶記錄在同一級別,這意味着要為每個新客戶都會為一個公司帶來很多不同的公司名稱-在很多情況下都可以正常工作。

有時,尤其是對於短字符串,我會(至少對我而言)會感到奇怪的匹配(例如,ABC是第一個公司名稱):

ABC ABAXIS Europe GmbH

ABC ABB Europe

ABC ABB Group

ABC ABB Stotz Kontakt GmbH

ABC ABM Financial News

ABC ABN AMRO Bank NV

ABC AC Klöser GmbH

ABC ACCBank

ABC ACEA S.p.A.

我正在使用帶有以下參數的agrep()

agrep(vector1, vector2, value = TRUE, ignore.case = FALSE, max.distance = 0.01)

除了調整agrep()的最大距離之外,還有其他方法嗎?

提前致謝

對於類似的問題,我使用了本文描述的第二種方法: http : //bigdata-doctor.com/fuzzy-string-matching-survival-skill-tackle-unstructured-information-r/#comment-942

它使每個寄存器與最相似的寄存器匹配,如果存在一些誤報,這當然不是最佳選擇。

此外,您可能會發現此功能對刪除名稱前后的空格很有用:

  trim <- function (x) gsub("^\\s+|\\s+$", "", x) #Defining function that returns string w/o leading or trailing whitespace

我還使用了“ tm”包中的removewords()函數。 在您的情況下,刪除“ ABC”可能會有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM