2

我對機器學習非常熟悉,我在Python中完成了一些項目。我正在尋找如何解決我認爲可以實現自動化的以下問題的建議。自動化文本/模糊匹配的最佳機器學習方法

我組織中的數據質量團隊中的用戶每天都會收集已手動輸入的公司名稱(含地址)列表,他必須搜索公司數據庫以查找匹配結果,使用他的判斷 - 即沒有硬性規定。

輸入的一個例子是:

公司名稱,地址行1,國家

如此,用戶實現了公司名稱和將其輸入的搜索工具。他在哪裏得到一份結果列表,並且選擇最佳匹配,但可能選擇不選擇任何匹配。搜索工具是內置的,可與外部API交流,我可以訪問源代碼,因此我可以修改搜索工具以捕獲輸入,結果列表,並且可以添加複選框以查看使用哪個結果,還有一個複選框表示沒有人被選中。因此這將成爲我標記的訓練數據。

從結果來做出判斷的列是大致相同:

公司名稱,地址行1,國家

鑑於公司名稱,如堆棧溢出,結果可能會返回堆棧溢出有限公司Stacking Overflowing Shelves Ltd.等。輸入數據相當不錯,所以結果通常會產生大約10場比賽,而對於一個人來說,很明顯選擇哪一個。

我的想法是,有足夠的訓練數據,我可以與搜索項直接調用API,然後從結果列表中相應的結果。

這是可以通過ML來實現的嗎?我正在努力爭取數據每次都會有所不同。的最佳方式思考實現這一目標的歡迎,特別是如何構建的模型數據,並使用哪種分類等

+0

這聽起來更像是模糊匹配而不是文本分類。由於標籤數量龐大,您可能會收到糟糕的ML分類結果,這將成爲您希望匹配的所有可能的公司名稱。 – aberger

+0

謝謝,我已經更新了描述。我想知道是否有一種方法可以將模糊匹配的結果與選擇哪種模糊匹配的結果相結合,從而增強模糊匹配的效果。當存在類似的結果時,有一些邏輯用於決定採取哪種結果,或者對於同一家公司來說,採用多個結果。例如。他們將公司的總部設在公司的分支機構上,這在另一個領域是有意義的。 –

+0

我想這也可以被看作二元分類問題,其中對於公司的每一對描述,您都必須回答他們是否對應於同一家公司。 Levenshtein距離,tfidf或ngrams匹配可用作特徵。即使解決方案將像在Levenshtein距離中選擇閾值一樣簡單,或者應用詞幹/停用詞的某種組合,使用ML方法來選擇該閾值並測量分類質量仍然很不錯。 – Dienow

回答

4

到幀它作爲一個ML問題,你可以學到相似的功能。

而不是將「Acme Corp」分類爲匹配目標類「Acme」(分類器),而是學習一個函數,學習如何識別「Acme Corp」與「Acme」類似,但與「ABC公司」。

這通常被稱爲「相似性學習」,你的情況,也許更具體的「排名相似性學習」,因爲你的目標是不學,將輸出一個相似值,而是排名潛在候選人的功能。

但使用全ML算法之前,我會使用字符串距離度量,比如萊文斯坦距離度量(非常普遍,容易找到)首先啓動。在正面和負面的例子中轉換您的數據(一個正面的例子:Acme是Acme Corp的一個匹配)。最簡單的學習功能是找到最大化您的分數的編輯距離閾值。您還可以添加如下參數:「刪除公司」,「刪除有限公司」等,並找出最適合的組合。

+0

嗨帕斯卡爾,這聽起來像是我以後的事情,我不認爲你曾經見過這樣一個體面的例子嗎?另外,你是否知道任何用於相似性學習的好的庫。助教。 –

+0

@NickP也許你根本不需要「真正的」ML。我會首先使用字符串距離度量標準來開始,例如Levenshtein距離度量標準(非常常見且容易找到)。在正面和負面的例子中轉換您的數據(一個正面的例子:Acme是Acme Corp的一個匹配)。最簡單的學習功能是找到最大化您的分數的編輯距離閾值。您還可以添加如下參數:「刪除公司」,「刪除有限公司」等,並找出最適合的組合。這裏你可能不需要完整的ML。 –

+1

@NickP查看[重複數據刪除庫概述](https://dedupe.readthedocs.io/en/latest/How-it-works.html),瞭解如何針對此問題使用ML的說明 – fgregg