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

时间:2012-09-20 11:30:21

标签: c# machine-learning nlp artificial-intelligence 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选项之后......它现在会做,但是我不能像现在这样将它滚动到生产中

干杯!

3 个答案:

答案 0 :(得分:3)

我在评论中注意到你正在尝试使用正则表达式查找表,它可能会很好地解决问题。但是,我将扩展Adriano提到的关于更强大的贝叶斯解决方案的内容。

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

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

(大多数视频都很短。)

  1. Spam Detection - Quiz Answer
  2. Probability of Spam - Quiz Answer
  3. Maximum Likelihood - Quiz Answer
  4. Relationship to Bayes Networks - Quiz Answer
  5. Classification Quiz - Quiz Answer
  6. Classification 2 Quiz - Quiz Answer
  7. Classification 3 Quiz, a contrived example
  8. Quiz Answer & Laplace Smoothing - Quiz Answer
  9. Smoothed Classification Quiz - Quiz Answer
  10. Final Quiz - Quiz Answer
  11. 这种贝叶斯方法对动态输入具有很强的鲁棒性,并且学习起来相当快。然后,在消耗了足够的训练数据之后,您只需要保存概率查找表并在运行时进行一系列算术计算。

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

答案 1 :(得分:1)

如果您已经在捕获网页,那么您难道不能只捕获他们放入图片的片段并以此方式获取图片吗?如果有“部分晴天”的明文,你也可以捕捉到那个部门并只使用自己的照片。贝壳斯网只是为了刮掉天气,听起来非常痛苦。

答案 2 :(得分:-3)

$api_string = "Mostly sunny"; 
$image = "default.png";

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