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