如何使用ruby计算Google的NL api段落中出现的名词数?

How to count the number of noun appeared in a paragraph with Google's NL api using ruby?

正在尝试使用 ruby 来计算 Google 的 NL api 段落中出现的名词数。

一直在查找文档,找不到如何执行此操作。

昨晚想出办法

text = 'xxxxxxxxxx'
response = language.analyze_syntax content: text, type: :PLAIN_TEXT

sentences = response.sentences
tokens    = response.tokens
x= tokens.count

a = Array.new(x-1)

for i in 1..x
    a[i-1] = tokens[i-1].part_of_speech.tag.to_s
end
for i in 1..x
    if a[i-1] == 'NOUN' 

    num= num+1
    end
end

仍然想知道 nl api https://cloud.google.com/natural-language/docs/analyzing-syntax#language-syntax-string-ruby 中是否存在类似 (tokens.noun.count ?) 的内容。

根据您的示例,您可以像这样计算 NOUN 的数量:

text = 'xxxxxxxxxx'
response = language.analyze_syntax content: text, type: :PLAIN_TEXT

tokens = response.tokens

tokens.count { |t| t.part_of_speech.tag.to_s == 'NOUN' }

注意在ruby中,像这样使用迭代器是非常常见的风格,而不是定义临时变量和使用for循环。 (其实you should almost never find a need to use for loops in ruby!

这种干净、简洁的语法是 ruby 语言最大的吸引力之一。通常,您可以在一行代码中获得所需的结果,而不是所有这些临时数组和索引计数器声明。