Как получить конкретные данные из строки на естественном языке? - PullRequest
0 голосов
/ 14 октября 2019

Я создаю приложение Rails 5 (со скребком Nokogiri) и пытаюсь извлечь данные из строки.

Это моя строка:

data = "3 rooms and kitchen, 43m²"

Как я могуполучить следующие данные из этой строки? Было бы здорово, если бы результат мог оказаться в массиве.

3
43

Я думаю, что мне нужно как-то использовать Regex, но я не знаю, как это сделать.

1 Ответ

2 голосов
/ 14 октября 2019

Вы можете использовать метод scan :

data.scan(/\d+/)
#=> ["3", "43"] 

Если вы хотите целые числа:

data.scan(/\d+/).map(&:to_i)
#=> [3, 43]  

Вы можете извлечь значения с помощью and, даже еслиИзменения в структуре предложения:

room_types = %w(rooms kitchen)
extracted_values = data.split('and').map do |sd|
  room_type = room_types.find{ |rt| sd.include?(rt) }
  { room_type => sd.scan(/\d+/).first.to_i }
end.reduce({}, :merge)

p extracted_values
#=> { "rooms" => 3, "kitchen" => 43 }
...