2016-02-12 40 views
0

我是新來的蔚藍機器學習。我們正在嘗試使用蔚藍機器學習實現問題相似度算法。我們有大量的問題和答案。我們的目標是確定新增的問題是否重複?就像Stackoverflow在提出新問題時提出的問題一樣,我們可以使用azure機器學習服務來解決這個問題嗎?有人能指引我們朝着正確的方向嗎?如何檢測Azure機器學習中的重複行附近?

+0

您可以使用刪除重複模塊要做到這一點 - https://msdn.microsoft.com/en-us/library/azure/dn905805.aspx – hamish

+0

@hamish感謝您的回覆。但是我也想檢查語義相似性。在我們的上下文什麼是光合作用?並解釋光合作用? shoulf被檢測爲類似的問題。 – null1941

回答

2

是的,您絕對可以通過Azure機器學習來做到這一點。這聽起來像你有一個聚類問題(你正試圖將類似的問題分組在一起)。

有一個「集羣:找到類似的公司」樣本,在https://gallery.cortanaanalytics.com/Experiment/60cf8e46935c4fafbf86f669121a24f0做類似的事情。您可以閱讀該頁面上的說明,然後單擊右側邊欄中的「在Studio中打開」按鈕,以實際打開Azure機器學習工作室中的工作區。在這個樣本中,他們正在根據公司維基百科文章的文字找到類似的公司(例如:微軟和蘋果公司是類似的公司,因爲這兩個文章中都出現了「計算機」這個詞)。你的問題是非常相似的,除了你會用你的問題中的文本來找到類似的問題,並相應地將它們分組。

在k均值聚類中,「k」是要形成的聚類數量,因此這個數字對於您的特定問題可能會相當大。如果你有500個問題,也許從250個質心開始?但是要弄清楚這個數字,看看有什麼作用。出於性能方面的原因,您可能需要先從一個小型數據集開始測試,然後在模型看起來好的情況下通過模型運行所有數據。

此外,K均值聚類的文檔是here

+0

謝謝@Jennifer – null1941

3

是的,你可以使用Azure機器學習工作室,並可以使用詹妮弗提出的方法。

但是,我認爲對包含實驗中當前所有問題的數據庫運行R腳本要好得多,併爲每次比較返回相似性度量標準。

看一看下面的紙張的一些例子(從簡單/基本到更高級的)你怎麼可以這樣做: https://www.researchgate.net/publication/4314910_Question_Similarity_Calculation_for_FAQ_Answering

一個簡單的方式開始也只是實現一個簡單的」包裝袋單詞「比較。這將產生一個距離矩陣,您可以將它用於聚類或用於回饋類似的問題。下面的R代碼就是這樣的,實質上你用第一個句子構建一個大的字符串新的問題,然後用所有已知的問題跟隨它。顯然,這種方法並沒有真正考慮到問題的含義,只會引發相同的詞語使用。

library(tm) 
library(Matrix) 
x <- TermDocumentMatrix(Corpus(VectorSource(strings.with.all.questions))) 
y <- sparseMatrix(i=x$i, j=x$j, x=x$v, dimnames = dimnames(x)) 
plot(hclust(dist(t(y))))