簡體   English   中英

字符串算法比較 VB.Net

[英]String Algorithm Comparison VB.Net

我想問一些建議,因為我已經這樣做了一個星期。 它基本上是一個數據清理程序。 我有一個包含數千個公司名稱的 excel 文件,我有這個包含正確公司名稱的數據庫。 我想要的是讀取我已經完成的 excel 文件,並將 excel 文件中的每個公司與我在數據庫中的值進行比較。 例如

Excel 中的數據

  • 惠普,哥斯達黎加
  • 惠普 (HP)
  • 惠普新加坡(私人)有限公司

數據庫中的數據

  • 惠普

它會自動檢測 excel 中的這 3 個值是惠普,因為 excel 是自由類型的形式。 我想更正其中輸入的所有內容並在我的數據庫中找到相似的值。 就像如果 Hewlett-Packard 拼寫錯誤,它會自動告訴它是 Hewlett-Packard。 任何的想法?

它就像一個自動完成,但帶有思考。 自動完成但決定正確的值

順便說一句,我在 VB.Net 中這樣做。 我正在研究模糊搜索算法和 levenstein 之類的東西。 但我還是不明白我該如何使用它

參見我的博客, 解決正確的問題,有點類似。 您最好進行簡單的匹配並將任何失敗輸出到您手動編輯的文本文件。 這是苦差事,但它會完成工作。 當您開始談論 Levenstein 距離和模糊搜索時,您正在將一個簡單但枯燥的任務變成一個研究項目。

如果您的數據庫僅包含“數千個”(而不是數百萬個)名稱,那么您可以做的一件事就是將所有名稱加載到一個列表中,並對它們進行排序。 然后對 Excel 文件中的名稱進行排序。 然后遍歷兩個列表(標准的合並類型算法)。 例如,您的數據庫中可能有:

Hasbro
Hewlett Packard
Home Depot

並在您的 Excel 文件中:

Grainger
Halliburton
Hewlet Packard, Costa Rica
Hewlett Packard (HP)
Humana

使用合並算法,您可以將“Hewlett Packard, Costa Rica”與“Hewlett Packard”進行比較,您甚至可以將其輸出為建議的替換。 這可能構成您的大部分錯誤。

無論如何,我強烈建議使用計算機來識別不匹配,然后手動解決它們。 這通常是解決此類問題的最快方法。

暫無
暫無

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

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