package com.spbsu.crawl.learning;
import com.spbsu.crawl.bl.events.StatusListener;
import com.spbsu.crawl.bl.helpers.CategoricalFeaturesMap;
import com.spbsu.crawl.learning.features.CategoricalFeature;
import com.spbsu.crawl.learning.features.Feature;
import gnu.trove.set.TIntSet;
import gnu.trove.set.hash.TIntHashSet;
import java.util.stream.Stream;
/**
* Created by noxoomo on 16/07/16.
*/
public class StatusFeaturesBuilder implements StatusListener, FeaturesBuilder {
private final CategoricalFeaturesMap statusIndex;
private TIntSet currentStatus = new TIntHashSet();
public StatusFeaturesBuilder(final CategoricalFeaturesMap statusIndex) {
this.statusIndex = statusIndex;
}
@Override
public void addStatus(final String messages) {
currentStatus.add(statusIndex.value(messages));
}
@Override
public void removeStatus(final String messages) {
currentStatus.remove(statusIndex.value(messages));
}
@Override
public Stream<Feature> tickFeatures() {
return Stream.of(new CategoricalFeature(statusIndex, new TIntHashSet(currentStatus), "status"));
}
}