2011-11-12 49 views
2

我想要一個高效或合理的算法來獲取用戶提交的測試結果,並將它們與幾個配置文件的值進行比較以找到匹配網上約會服務如何與適合的伴侶的答案相匹配)。「個性測驗」風格比較[PHP]

我真的不知道如何去做這件事。如果用戶回答10個有關自己的問題,並且有10個候選人與他匹配,則我們正在通過數據庫查看數千個比較結果。必須有更好的方法來做到這一點。

在我所做的研究中,也許我可以用Levenshtein距離函數來完成這項工作,但我不知道該怎麼做,因爲我對此並不完全熟悉,而且我也不理解它那好。但是,也許我可以做一些事情,比如將用戶的結果連接成一個字符串(例如'AEBCDAABEAD')與每個候選人的答案並以這種方式測量相似度?

有什麼建議嗎?

非常感謝。

+0

有趣的問題,很高興看到你已經付出了一些努力。 – Smamatti

回答

2

我認爲使用確切的答案不是一個足夠靈活的解決方案,因爲其他答案可能不會對某些配置文件類型產生深遠影響。 有1-2和3-4的人仍然有不匹配的答案,即使這個人20-25是離開的。帶有Levensthein'AB'和'AC'的Afaik與'AZ'到'AB'類似。

此外,Levensthein算法是一個好主意,我猜你會在某些情況下得到太差的匹配,如果你這樣做基於問題的

讓我來描述一下當我讀到你的問題時,我腦海裏想到了什麼技巧。

檔案類別,並回答重量

我想在這裏你可以描述一些配置文件或屬性類別的配置。 讓我們以食物的口味爲例。所以我們的類別可能如下所示: sweet, sour, spicy, normal

現在爲您的調查,我將爲每個問題配置一個類別權重。你可以積累。

你喜歡辣醬湯
是 - spicy +3
否 - spicy -1

現在你可以使用一個算法來確定每個類別的距離和重量它們的計算研究。現在

(sweet | spicy | sour | normal) 
    -5  15  2  8 // Person 1 
    10  -5  10  2 // Person 2 
    8  -8  7  12 // Person 3 

你可以比較例如人的決定,看,這之間的距離[2]和[3]比之間的雙向較小[1] [2]。 注意:我不是在談論Levensthein距離,因爲這些值是數字和計算結果比只是不匹配的字符。


我不確定這是否對您有幫助,但是這個問題進入我的腦海,似乎是一個整潔的解決方案。

+0

你,傳說 –