让我们假设我有一个用户创建主题并在Fruit上编写主题的网站.
为了让用户了解整个网络上的所有Fruit对话,我收集与特定主题相关的推文,并根据推文的内容创建线程.
显然,推文与主题相关非常重要.假设用户创建了一个名为Apples和Oranges的主题.我拉所有包含关键词Apples和/或Oranges的推文.
我遇到的问题是,一些Twitter用户编写了一条推文,其中包含关键词Apples,Oranges,Pears等,并将其收集并作为线程发布到Apples和Oranges讨论主题.这让用户生气!
所以我需要的是一种过滤任何包含苹果和/或橘子以外的水果单词的推文的方法.
例如,如果Twitter用户写“我喜欢苹果,橘子,梨和葡萄”,那么不应该包含该推文.
现在,您只能使Twitter搜索查询如此复杂.因此,在收集推文后,必须在Ruby中执行排除逻辑.
以编程方式,你将如何解决这个问题?
解决方法
确定与主题名称相关的单词.梨,葡萄等您可以排除使用这些相关单词的推文.
一种方法是使用Google Sets.
注意:我处于不完全宽容我自己的解决方案的不幸的位置,因为这个服务没有官方API(这将是真棒!).虽然如果您打算使用此策略,我建议存储Google Set结果.
require 'google_set' twitter_search_terms = ['apples','oranges'] # Mocked twitter search method tweets = search_twitter(twitter_search_terms) # returns ["Both apples and oranges are great!","I love Apples,Pears,and Grapes."] related_words = GoogleSet.for(*twitter_search_terms) # returns ["apples","oranges","bananas","peaches","pears","grapes","strawberries","plums",...] related_words = (related_words - twitter_search_terms).each(&:downcase) good_tweets = [] bad_tweets = [] tweets.each do |tweet| tweet_words = tweet.downcase.split # Remove any non-word characters tweet_words = tweet_words.map { |word| word.gsub(/\W+/,'') }.compact if (tweet_words - related_words).size == tweet_words.size good_tweets << tweet else bad_tweets << tweet end end p good_tweets # returns ["Both apples and oranges are great!"] p bad_tweets # returns ["I love Apples,and Grapes."]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。