2012-06-26 42 views
3

我有各種產品需要決定它們是否相同。一個簡單的例子:與領域知識相匹配的物品

Microsoft RS400 mouse with middle button應符合Microsoft Red Style 400 three buttoned mouse但不Microsoft Red Style 500 mouse

沒有別的好的,我可以除了名稱,只是在做它匹配的詞的比例匹配不夠好(錯誤率太高)

我知道域名,所以我可以(例如)手寫一個事實,三個按鈕的鼠標可能與一箇中間按鈕的鼠標相同。我也知道製造商(或者可以對他們進行很好的猜測)。

我到目前爲止唯一的想法是通過嘗試使用手寫規則來減少字符串的大小然後檢查匹配的單詞來匹配它們,但我想知道是否有人有任何想法做這種匹配的最佳方式是否有更好的準確性和精確性(或從哪裏開始尋找),以及是否有人知道在這方面做過的工作? (論文,例子等)。

回答

1

除了手寫規則之外,您還可以嘗試使用監督學習和特徵提取。

讓特徵成爲描述中的詞,而不是將描述看作特徵向量。 在教授算法時,讓它向您展示兩個看起來相似的向量,如果它是相同的項目,讓算法改進這些單詞的權重。

例如,每對單詞的重量可能比簡單比例大,就像您所做的那樣。

[3-button] [middle] 
[wheel]  [button] 
[mouse]  [mouse] 

通過你的算法,它會給1/3的相似度的比例。當你將它設置爲「相同的項目」算法時,應在下一次到達這些單詞時增加更多的值。

2

「我不知道的領域......」

多少究竟你瞭解的領域?如果你知道域名的所有信息,那麼建立一個所有制造商產品的索引(基本上是製造商網頁上的產品說明)可能會更好。然後,不要試圖將您的描述相互匹配,而是將它們與您的產品索引匹配。

優點這種方法:在產品的說明書中使用

  • 想必所有詞都被在宣傳資料
  • 地方使用,如果建築你能一些體重的信息的索引時(如產品代碼),那麼你可能會獲得更大的成功

缺點:

  • 可能需要很長的時間來建立索引(特別是如果用手工完成的)

如果你不知道你的域的一切,那麼你可以考慮下排名的話,是非常常見的(您可以從互聯網上獲得常用詞彙列表)以及不在詞典中的排名靠前的數字和單詞(您可以從互聯網上獲取單詞列表/大多數linux/unix發行版都附帶了用於拼寫檢查的目的)。


我不知道你瞭解搜索多少,但在過去,我發現這本書「搜索引擎:實踐中的信息檢索」,由W.布魯斯·克羅夫特,唐納德·梅茨勒,特雷弗Strohman到有用。在出版商網站上有一些樣章,它會告訴你這本書是否適合你:pearsonhighered.com

希望有幫助。

+0

缺點是有太多的項目,他們改變太頻繁,我不想手動建立製造物品索引。單詞的權重聽起來像是個好主意。我可以嘗試使用該方法的實現。我會看看那本書。 – Yacoby

1

只需標記化(您應該在該步驟中將字母與數字分開,因此不僅僅是空格標記器),干涉,過濾停用詞以及像鼠標這樣的無趣詞。也許你應該有一個單詞生產者的名單,並縮短所有不是生產者和數字的第一封信。 (如果你這樣做,你必須在標記者藏漢單獨的大寫字母)

Microsoft RS400 mouse with middle button -> Microsoft R S 400 
Microsoft Red Style 400 three buttoned mouse -> Microsoft R S 400 
Microsoft Red Style 500 mouse -> Microsoft R S 500 

如果你想有一個更好的解決方案 VSM(向量空間模型)進行抄襲檢測將是很好的。 (每個單詞根據它們的判別性值得到一個權重,這些權重被投影到多維空間中,之後你只需測量兩個文本之間的角度)

1

我會建議一些更普遍適用的東西。據我瞭解,你需要一些nlp處理來處理你認爲是同義詞的東西。我認爲那是一個非常簡單的實現。

如果我是你,我會製作一個關鍵詞對象,它有一個同義詞列表作爲參數,然後編寫一個腳本,它可以抓取任何文本,只有偶爾出現的單詞(有一些上限頻率,實際上被認爲是適用的),然後添加關鍵字列表作爲包含它的同義詞的每個關鍵字的參數。如果你願意更進一步,我會在同義詞列表上設置權重,顯示它們有多相似。

有了這樣的nlp問題,你將達到100%準確率的機會是0,但你可以很好地達到90%以上,我會建議添加一個元素,通過它可以自動調整權重。我必須在這裏相當模糊,但在上一份工作中,我的任務是遇到類似的問題,並且能夠在高達90年代獲得準確性。我的實現也可能比你需要的更復雜,但即使是簡單的實現也會給你帶來相當不錯的回報,但是如果你不處理相當大的數據集(〜數百個),那麼這可能不值得使用腳本。

快速示例,在您的示例中,差異可以精確地進行蒸餾,只是說「中」和「三」是同義詞。如果你需要,你可以變得更復雜,但是這會匹配很多。