您可能想要查看「相似性度量」或「距離度量」的類別(這是不同的,在數據挖掘中的行話,比「分級」)
基本上,一個相似的措施是在數學,你可以一個方法:
- 取兩組數據(在你的情況,字)
- 做一些計算/方程/算法
- 結果是你有一些數字,告訴你數據是多麼「相似」。
有了相似的措施,這個數字是0和1,其中「0」是指之間的數字。「什麼都沒有匹配」和「1」是指「相同的」
所以,實際上你可以想到的你句子作爲一個向量 - 你的句子中的每個單詞表示該向量的一個元素。同樣也適用於每個類別的關鍵字列表。
然後你就可以做一些很簡單:把「cosine similarity」或「Jaccard index」(取決於你如何組織你的數據)
這兩個指標做什麼是他們把兩個向量(你的輸入句子和你的「關鍵字」列表)並給你一個數字。如果您在所有類別中都這樣做,則可以對這些數字進行排名,以便查看哪個匹配具有最大的相似係數。
舉個例子:
從你的問題:
客戶交易:存款, 存款,客戶信息,賬戶,賬戶
所以,你可以構建一個載體具有5種元素:(1,1,1,1,1)。這意味着,對於「客戶交易」關鍵字,您有5個詞,並且(這聽起來很明顯,但是)每個詞都出現在搜索字符串中。和我一起。
所以,現在你把你的一句:
該系統適用存款一 客戶指定賬戶。
這有從「客戶交易」設置2個字:{存款,賬戶,客戶}
(實際上,這說明了另一個細微差別:你確實有「客戶」這是等同於「客戶?」)
爲你的句子的載體可能是(1,0,1,1,0)
的1,在這個載體是在同樣的位置1的第一途徑 - 因爲那些話是相同的。
所以我們可以說:這些向量有多少次不同?讓我們比較:
(1,1,1,1,1) (1,0,1,1,0)
嗯。他們有三次相同的「位」 - 在第一,第三和第四位。它們僅相差2位。所以我們可以說,當我們比較這兩個向量時,我們有一個「距離」爲2.恭喜,我們只計算了Hamming distance!海明距離越小,數據越「相似」。
(「相似性」度量和「距離」度量之間的區別在於前者是標準化的 - 它給出的值介於0和1之間。距離只是任何數字,所以它只給你一個相對值)。
無論如何,這可能不是自然語言處理的最佳方式,但出於您的目的,它是最簡單的,可能對您的應用程序非常適用,或者至少作爲起點。 (PS:「分類」 - 正如你在標題中所描述的那樣)將會回答「如果你拿我的句子,它最有可能落入哪一類?」這與說「如何分類」有點不同更類似於我對類別1的判斷,而不是類別2?「,這似乎是你在追求的目標。)
祝你好運!
請注意:這裏描述的技術更適用於羣集類型的任務。在這裏,與每個類別相關的預先定義的單詞列表根本不是原型項目,並且它們與實際項目之間的傳統距離函數不代表項目對相應類別的歸屬。例如,一個特定的類別可能有幾十個關鍵字(儘管我們只希望在一個項目的特定實例中找到一些關鍵字),但由於漢明距離評分很差,因此此類別可能不會被表示。 – mjv 2009-09-29 04:38:37
嗯,你說得對,漢明是一個不好的措施 - 正如你在答案中所說的那樣,結果是正常化的,以獲得「命中率」與「錯過」的比率來看看套是相關的。也許使用這種方法作爲例子是次優選擇! – poundifdef 2009-09-29 06:00:41
你是對的,我最想做的是在關鍵字和句子中標準化時態和複數。這樣,我只列出「客戶」而不是「客戶」,「存款」而不是「存款」或「存入」。我認爲漢明仍然有代表性不足的風險,但我認爲這是一個很好的第一次刺殺我想要做的事情。 – technomalogical 2009-09-29 14:14:08