如何从自然语言字符串中获取特定数据?

问题描述 投票:0回答:1

我正在构建一个带有Nokogiri刮板的Rails 5应用程序,并且试图从字符串中提取数据。

这是我的字符串:

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

如何从该字符串中获取以下数据?如果结果可以以数组结尾,那就太好了。

3
43

我想我需要某种方式使用Regex,但我不知道该怎么做。

ruby-on-rails nokogiri
1个回答
2
投票

您可以使用scan方法:

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

如果要整数:

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

UPDATE

即使句子结构发生变化,也要通过进行提取:

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 }
© www.soinside.com 2019 - 2024. All rights reserved.