如何使用R语言和.Net创建单词分组报告?

时间:2013-02-10 23:23:56

标签: r c#-4.0 statistics

我想在C#中创建一个简单的应用程序,它接受一组单词,然后返回数据集中所有单个单词的所有分组。

例如,给定汽车和自行车,从数据集中返回一组词组/词组合(带有找到的组合数)。

为了进一步澄清 - 给定一个名为“car”的类别,我希望看到一个带有“car”一词的单词分组列表。这个类别也可以是几个单词,而不仅仅是一个单词。

样本数据集为:

CAR

  • 另一辆待售汽车
  • 地平线上的蓝色车
  • 出售 - 二手车
  • 这辆车漆成蓝色

应该返回

car : for sale : 2
car : blue : 2

我想设置一个阈值,比方说20或更高,所以如果有超过20个带汽车的单词实例,则显示它们 - categorywords,{ {1}},其中只知道count; categorywords由算法确定。

数据集在SQL Server 2008表中,我希望使用类似R的.Net实现来完成此任务。

我猜测实现这一目标的最佳方法可能是使用R编程语言,现在只关注R.Net。

我更愿意用.Net这样做,因为这是我最熟悉的,但愿意接受建议。

有经验的人可以引导我朝着正确的方向前进吗?

感谢。

1 个答案:

答案 0 :(得分:0)

看来你的问题包括4个部分:

  1. 从SQL Server 2008获取数据
  2. 从一组字符串中提取子字符串
  3. 设置何时接受该号码的阈值
  4. 制作包含此内容的某些文档或其他输出(?)。
  5. 对于1,我认为这是一个不同的问题(参见RODBC包),但我不会在这里处理,因为这不是你问题的主要部分。你已经离开了4.有点模糊,我认为这也是你问题的边缘。

    第2部分可以使用正则表达式轻松处理:

    countstring <- function(string, pattern){
      stringcount <- sum(grepl(pattern, string, ignore.case=TRUE), na.rm=TRUE)
      paste(deparse(substitute(string)), pattern, stringcount, sep=" : ")
    }
    

    此函数基本上获取字符串向量和要搜索的模式。它找到它们中的哪一个匹配并获得所做数字的总和(即计数)。然后它将这些打印在一个字符串中。例如:

    car <- c("Another car for sale", "Blue car on the horizon", "For Sale - used car", "this car is painted blue")
    countstring(car, "blue")
    ## [1] "car : blue : 2"
    

    第3部分需要对功能进行少量更改

    countstring <- function(string, pattern, threshold=20){
      stringcount <- sum(grepl(pattern, string, ignore.case=TRUE), na.rm=TRUE)
    
      if(stringcount >= threshold){
        paste(deparse(substitute(string)), pattern, stringcount, sep=" : ")
      }
    
    }