0

我是天蓝色机器学习的新手。我们正在尝试使用 azure 机器学习来实现问题相似性算法。我们有大量的问题和答案。我们的目标是确定新添加的问题是否重复?就像 Stackoverflow 在我们提出新问题时建议现有问题一样?我们可以使用 azure 机器学习服务来解决这个问题吗?有人可以指导我们正确的方向吗?

4

2 回答 2

3

是的,您可以使用 Azure 机器学习工作室,也可以使用 Jennifer 提出的方法。

但是,我认为最好针对包含实验中所有当前问题的数据库运行 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))) )
于 2016-02-28T11:08:08.747 回答
2

是的,你绝对可以使用 Azure 机器学习来做到这一点。听起来你有一个聚类问题(你试图将类似的问题组合在一起)。

在https://gallery.cortanaanalytics.com/Experiment/60cf8e46935c4fafbf86f669121a24f0上有一个“聚类:查找类似公司”示例,它做了类似的事情。您可以阅读该页面上的说明,然后单击右侧边栏中的“在 Studio 中打开”按钮,在 Azure 机器学习工作室中实际打开工作区。在该样本中,他们根据公司的 Wikipedia 文章中的文本查找相似的公司(例如:Microsoft 和 Apple 是相似的公司,因为“计算机”一词在两篇文章中都出现了很多)。您的问题非常相似,只是您会使用问题中的文本来查找类似的问题并将它们相应地分组。

在 k-means 聚类中,“k”是您想要形成的聚类数,因此对于您的特定问题,这个数字可能会非常大。如果你有 500 个问题,也许从 250 个质心开始?但是弄乱这个数字,看看有什么用。出于性能原因,您可能希望从一个小数据集开始进行测试,然后在模型似乎分组良好后通过模型运行所有数据。

此外,K-means 聚类的文档在这里

于 2016-02-18T17:02:48.580 回答