Как посчитать количество существительных, появившихся в абзаце с NL API Google, используя ruby?

Попытка подсчитать количество существительных появилась в абзаце с NL API Google, используя ruby.

Просматривал документ, не мог найти, как это сделать.

Выработать решение прошлой ночью

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

все еще задаюсь вопросом, существует ли что-то вроде (tokens.noun.count?) в nl api https://cloud.google.com/natural-language/docs/analyzing-syntax.

1 ответ

Решение

Опираясь на ваш пример, вы можете посчитать количество 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 петли. (На самом деле, вы почти никогда не должны найти необходимость использовать for петли в рубине!)

Этот чистый, лаконичный синтаксис является одним из самых привлекательных в рубиновом языке. Очень часто вы можете получить желаемый результат в одной строке кода, а не во всех этих объявлениях временного массива и счетчика индекса.

Другие вопросы по тегам