semantic learning with variable recovering