9

这是我在 StackOverflow 上的第一篇文章,如果缺少正确的信息,我们深表歉意。

设想。

我正在从 Google Weather API 转移到 BOM(澳大利亚)天气服务。我已经设法使用流式阅读器等很好地从 BOM 获取天气数据,但我坚持的是与每日预报相匹配的图像图标。

我对旧的 Google Weather API 所做的事情非常残酷,但却成功了。Google Weather API 只给出了几种不同类型的预测,我可以将它们组合成一个字符串,然后我可以在 imageURL 中使用这些预测。

我使用 Google Weather API 所做的示例...

imageDay1.ImageUrl = "图像/天气/" + lbWeatherDay1Cond.Text.Replace(" ", string.Empty) + ".png";

“大部分阳光” = mostsunny.png

“晴天”=晴天.png

“下雨的机会” = chanceofrain.png

“阵雨”=阵雨.png

“部分多云” = 部分多云.png

每日预测有 15 种不同的可能选项。

我现在和 BOM(澳大利亚气象局)遇到的问题是……

可能的早晨淋浴

淋浴或两个,稍后清理

还有成千上万……没有标准。

我希望这里有一些伟大的思想可以从这个字符串中的关键字创建一个字符串?像“Showers.png”的“Showers”之类的东西,或者更复杂的东西,将“Chance of Showers”识别为“Chanceshowers.jpg”,同时将“Shower or two”保留为“Showers.png”。

我很容易接受任何想法或解决方案(希望在 c# 中)。只要它非常轻量级(必须为 5 天的预测重复该过程)并且几乎可以捕捉任何场景......

在这个时间点,我继续使用 String.Replace,在 String.Replace 之后,在 String.Replace 选项之后.... 现在可以,但我不能像这样将它投入生产。

大家干杯!

特伦特

4

3 回答 3

3

我在评论中注意到您正在尝试正则表达式查找表,这可能足以解决问题。但是,我将扩展 Adriano 提到的关于更强大的贝叶斯解决方案的内容。

这是一个与机器学习和人工智能相关的问题。它涉及一些自然语言处理,例如 Google 如何尝试解释用户的要求,或者邮件垃圾邮件过滤器的工作方式。

Sebastian Thrun 在以下视频中描述了一个简单而有趣的系统,这些视频是在线课程的一部分。它开始描述一种基本方法,通过该方法算法可以学习将一组单词(例如来自电子邮件)分类为“垃圾邮件”或“非垃圾邮件”。

(大部分视频都很短。)

  1. 垃圾邮件检测-测验答案
  2. 垃圾邮件的概率-测验答案
  3. 最大似然-测验答案
  4. 与贝叶斯网络的关系-测验答案
  5. 分类测验-测验答案
  6. 分类 2 测验-测验答案
  7. 分类 3 测验,一个人为的例子
  8. 测验答案和拉普拉斯平滑-测验答案
  9. 平滑分类测验-测验答案
  10. 最终测验-测验答案

这种贝叶斯方法对动态输入具有鲁棒性,并且学习速度相当快。然后,在消耗了足够的训练数据后,您只需要保存一个概率查找表并在运行时进行一系列算术计算。

有了这个基础,您可以应用相同的方法来处理多个分类,例如每个天气图像一个。

于 2012-09-24T19:42:35.127 回答
1

如果您已经在捕获网页,您不能只捕获他们放入图片的片段并以这种方式获取图像吗?如果有“部分晴天”的明文,您也可以捕获该分区并使用您自己的图片。仅仅为了刮取天气的贝叶斯网络听起来非常痛苦。

于 2012-10-17T16:59:47.447 回答
-3
$api_string = "Mostly sunny"; 
$image = "default.png";

switch($api_string)
{
    case "Mostly sunny":
        $image = "mostlysunny.png";
    break;
    case "showers":
        $image = "showers.png"
    break;
}

ETC

于 2012-09-20T11:37:08.223 回答