-1

尝试使用 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 ?) 的东西。

4

1 回答 1

0

基于您的示例,您可以NOUN像这样计算 s 的数量:

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循环。(事实上​​,你应该永远不会发现需要for在 ruby​​ 中使用循环!

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

于 2018-08-03T09:14:56.327 回答