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

Tre*_*ldt 9 c# nlp artificial-intelligence machine-learning match

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

场景.

我正在从Google Weather API转向BOM(澳大利亚)气象服务.我已经成功地使用流程读取器等从BOM中获取天气数据,但我坚持的是与每日预测相匹配的图像图标.

我使用旧的Google Weather API所做的事情非常残酷但却做到了.Google Weather API仅发布了几种不同类型的预测,我可以将它们组合成一个字符串,然后我可以在imageURL中使用它.

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

imageDay1.ImageUrl ="images/weather /"+ lbWeatherDay1Cond.Text.Replace("",string.Empty)+".png";

"晴天"= mostlysunny.png

"Sunny"= sunny.png

"雨的机会"= chanceofrain.png

"Showers"= showers.png

"部分多云"= partiallycloudy.png

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

我现在和BOM(澳大利亚气象服务)的问题是......

可能早上淋浴

淋浴或两个,稍后清理

还有成千上万......没有标准.

我希望能在这里有一些伟大的思想从这个字符串中的关键字创建一个字符串?像"Showers.png"这样的"Showers"之类的东西,或者将"Chance of Showers"识别为"Chanceshowers.jpg"同时保持"淋浴或两个"为"Showers.png"的更复杂的东西.

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

在这个时间点,我继续使用String.Replace,在String.Replace之后,在String.Replace选项之后....它现在会做,但是我不能像这样将它滚动到生产中.

干得好!

特伦特

Kac*_*che 3

我在评论中注意到您正在尝试正则表达式查找表,它可能足以解决问题。然而,我将扩展阿德里亚诺提到的更强大的贝叶斯解决方案。

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

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

(大多数视频都很短。)

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

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

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