首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何理解文本处理中的"s.words.length - (s.downcase.words - desired_words).length“?

如何理解文本处理中的"s.words.length - (s.downcase.words - desired_words).length“?
EN

Stack Overflow用户
提问于 2015-02-27 04:01:52
回答 1查看 59关注 0票数 0

我正在阅读红宝石-petter库珀和我在这部分的文章开头的几个小时:

代码语言:javascript
复制
hot_words = %w{test ruby}
 my_string = "This is a test. Dull sentence here. Ruby is great. So is cake."
       my_string.sentences.find_all do |s|
         s.downcase.words.any? { |word| hot_words.include?(word) }
       end

def self.best_sentence(sentences, desired_words)
  ranked_sentences = sentences.sort_by do |s|
    s.words.length – (s.downcase.words – desired_words).length
  end
  ranked_sentences.last
end

上面的方法是通过处理每个句子从想要的单词列表中有多少个单词的差异来选出最重要的句子。最让我困惑的是s.words.length – (s.downcase.words – desired_words).length

s.words.length”是指每个句子的长度吗?如果是这样的话,那么"s.downcase.words.length“呢?为什么他们不直接处理每个句子的desired_words长度和排序最长的一个。这些想法一直萦绕在我的脑海中,但我知道这一定是很简单的事情,但我就是无法通过。

非常感谢你的帮助。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-27 04:26:08

这是我每天使用最多的一种技巧。这叫做“调试打印”。它包括用一组打印语句来修饰代码,这些语句输出您感兴趣的不同值。在这个具体的例子中,您可能希望输出以下内容:

代码语言:javascript
复制
def self.best_sentence(sentences, desired_words)
  ranked_sentences = sentences.sort_by do |s|
    puts "analyzing string: #{s}"
    puts "words: #{s.words}"
    puts "downcased words: #{s.downcase.words}"
    puts "desired words: #{desired_words}"
    puts "without desired words: #{s.downcase.words - desired_words}"
    s.words.length – (s.downcase.words – desired_words).length
  end
  ranked_sentences.last
end

然后您只需运行代码,并查看控制台或日志(无论什么标准输出)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28757300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档