在之前的文章中,我们学会了如何训练一个机器学习分类器,用来检测酒店点评中提到的不同方面。使用这个方面分类器,我们可以自动的知道一个特定的点评是否在谈论清洁、舒适和设施、食品、网络、地点、工作人员以及/或物有所值。
我们还学习了如何将这个分类器与情绪分析分类器结合在一起,获得有趣的见解以及回答诸如客人喜欢特定酒店的位置,但是抱怨它的清洁问题吗这样的问题。
在这篇文章中,我们将介绍我们可以如何使用这些机器学习模型来分析TripAdvisor上数百万条点评,然后比较人们对不同城市的酒店的感受,从而理解以下事情:
待在曼谷酒店的人会比那些待在,比方说,巴黎酒店的人更多抱怨清洁问题吗?
具有最糟糕设施的城市是哪个?
酒店的星数会影响它的评论吗?
当涉及到不同类别的酒店时,人们会有不同的标准吗?
这是我们这篇教程想要回答的问题,而这将带给我们一些有趣的见解。这个过程的源代码可以在这个repo找到。
爬取酒店点评
我们创建了在前一篇文章构建的TripAdvisor Spider的一个新版本,用它来收集点评的更多数据:
酒店的名字。
酒店所在的城市。
酒店的星级(由点评者提供)。
创建一个Pipeline来合并模型
在使用新的爬虫从TripAdvisor抓取了一百多万条点评后,我们将内容拆分成意见单元,并且使用之前做过的类似的方式来将其分类。最大的区别是,现在我们创建了一个pipeline,它将两个分类器结合起来。pipeline是一个非常强大且灵活的工具,它允许你将MonkeyLearn的不同模块组合起来,多亏了它们,一次请求就可以同时为方面和情绪进行分类。
下面是使用pipeline分类意见单元:
from monkeylearn import MonkeyLearn
ml = MonkeyLearn("")
data = {
"texts": [{"text": "The room was very clean"}, {"text": "very rude staff"}]
}
res = ml.pipelines.run('pi_YKStimMw', data, sandbox=False)
简单吧?然后,res.result是一个看起来像这样的JSON:
{
'tags': [{
'sentiment': [{
'category_id': 102881,
'label': 'Good',
'probability': 1.0
}],
'topic': [
[{
'category_id': 1495678,
'label': 'Cleanliness',
'p