2

我需要从文本调查回复中提取网站。该算法应大致匹配。例如,“患者喜欢我”或“患者喜欢我”应该被识别为“患者喜欢我.org”。

我已经包含了来自下面数据集的响应。我开始编写一些脚本来执行此操作,但意识到我没有使用可以接受额外过滤器和字典的健壮设计模式。一个简单的正则表达式不起作用,因为匹配太精确或太笼统而无法捕获足够数量的匹配。在一个完美的世界里,我还可以使用aspell之类的东西来纠正拼写错误或使用levenstein算法来匹配单词。

提前感谢您为我指明任何数据清理算法、框架或资源的方向。

“在线社区”的全部优点在于它们在很大程度上是匿名的。但是:无障碍园艺论坛,Davesgarden.com;Patientlikeme.com;当然还有脸书。

$sites = array("davesgarden.com","patientslikeme.com","facebook.com");

像我一样的病人 社会女士 Facebook Thisisms

$sites = array("patientslikeme.com","mssociety.org","facebook.com","thisisms.com");

yaoo webmd.co

$sites = array("yahoo.com","webmd.com");

MS 治疗 options.com

$sites = array("mstreatmentoptions.com");
4

1 回答 1

0

这是一个红宝石脚本。

以这种格式向它提供一个名为 inputfile.txt 的域列表:

myurl.com
otherurl.com

将其保存在一个名为 convert.rb 的文件中

while line = gets
        line =~ /(.+)\.\w+$/
        print "/"
        $1.each_char{|c|
                print "#{c}\\W*"
        }
        print "/i"
        puts
end

然后运行这个命令: cat inputfile.txt | 红宝石转换.rb > 输出文件.txt

这是一个正则表达式列表。拿这些并尝试匹配输入文本中的每一个。

于 2012-01-18T14:17:21.553 回答