对自然语言字符串或短语进行分类或关键字匹配



这是我在StackOverflow上的第一篇文章,如果缺少正确的信息,请道歉。

场景。

我正在从谷歌天气API转移到BOM(澳大利亚)天气服务。我已经使用流媒体阅读器等很好地从BOM中获取了天气数据,但我一直关注的是与每日预报相匹配的图像图标。

我对旧的谷歌天气API所做的相当残忍,但却成功了。谷歌天气API只给出了几种不同类型的预报,我可以把它们拼凑成一个字符串,然后我可以在imageURL中使用。

我用谷歌天气API做什么的例子。。。

imageDay1.ImageUrl="图像/天气/"+lbWeatherDay1结束文本替换(",string.Empty)+"。png">

"大部分是晴天mostlysunny.png

"Sunny"=sunny.png

"下雨的机会"=chanceofrin.png

"淋浴器"=淋浴器.png

"部分多云"=partlycloudy.png

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

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

可能的早间阵雨

淋浴或两次,稍后清除

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

我希望这里的一些伟人有可能从这个字符串中的关键字创建一个字符串?类似于";淋浴器";对于";Showers.png";或者识别起来稍微复杂一点的东西";"阵雨的机会";作为";Chanceshowers.jpg";同时保持";淋浴或两个";作为";Showers.png";。

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

在这个时候,我继续使用String.Replace,在String.Replate之后,在String.Leplace选项之后。。。。现在可以了,但我不能这样把它投入生产。

干杯!

特伦特

我在评论中注意到您正在尝试regex查找表,它可能足以解决问题。然而,我将扩展Adriano提到的关于更健壮的贝叶斯解决方案的内容。

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

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

(大多数视频都很短。)

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

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

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

如果你已经在捕捉网页,你不能只捕捉他们放图片的片段并以这种方式获取图像吗?如果有"部分阳光充足"的明文,你也可以捕捉到这种划分,并使用你自己的图片。贝叶斯网络只是为了刮刮天气,听起来非常痛苦。

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

etc

最新更新