OfflineVlogShareLRFeatureExtractor.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package examples.dataloader;
  2. import com.google.common.collect.ArrayListMultimap;
  3. import com.google.common.collect.ListMultimap;
  4. import com.tzld.piaoquan.recommend.feature.domain.video.base.RequestContextBytesFeature;
  5. import com.tzld.piaoquan.recommend.feature.domain.video.base.UserBytesFeature;
  6. import com.tzld.piaoquan.recommend.feature.domain.video.base.VideoBytesFeature;
  7. import com.tzld.piaoquan.recommend.feature.domain.video.feature.BytesGroup;
  8. import com.tzld.piaoquan.recommend.feature.domain.video.feature.BytesUtils;
  9. import com.tzld.piaoquan.recommend.feature.model.sample.*;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. import java.util.Map;
  13. public class OfflineVlogShareLRFeatureExtractor {
  14. public ListMultimap<FeatureGroup, BaseFeature> featureMap = ArrayListMultimap.create();
  15. final private BytesUtils utils;
  16. final private int groupCount = OfflineVlogFeatureGroup.values().length;
  17. public OfflineVlogShareLRFeatureExtractor() {
  18. BytesGroup[] groups = new BytesGroup[OfflineVlogFeatureGroup.values().length];
  19. OfflineVlogFeatureGroup[] var2 = OfflineVlogFeatureGroup.values();
  20. int var3 = var2.length;
  21. for(int var4 = 0; var4 < var3; ++var4) {
  22. OfflineVlogFeatureGroup g = var2[var4];
  23. groups[g.ordinal()] = new BytesGroup(g.ordinal(), g.getGroupName(), g.getGroupNameBytes());
  24. }
  25. this.utils = new BytesUtils(groups);
  26. }
  27. public void makeFeature(Map<String, Object> maps){
  28. for (Map.Entry<String, Object> entry : maps.entrySet()){
  29. OfflineVlogFeatureGroup ovf = OfflineVlogFeatureGroup.valueOf(entry.getKey());
  30. Object value = entry.getValue();
  31. if (value instanceof String){
  32. this.makeFea(ovf, ((String)value).getBytes());
  33. }else if (value instanceof Double){
  34. this.makeFea(ovf, String.valueOf((Double)value).getBytes());
  35. }else if (value instanceof Integer){
  36. //todo
  37. }else{
  38. //todo
  39. this.makeFea(ovf, ((String)value).getBytes());
  40. }
  41. }
  42. }
  43. private FeatureGroup makeGroup(OfflineVlogFeatureGroup group) {
  44. FeatureGroup.Builder g = FeatureGroup.newBuilder();
  45. g.setType("1");
  46. g.setName(group.getGroupName());
  47. g.setId(group.ordinal());
  48. return g.build();
  49. }
  50. void makeFea(OfflineVlogFeatureGroup group, byte[] value) {
  51. FeatureGroup featureGroup = this.makeGroup(group);
  52. BaseFeature feature = this.utils.makeFea(group.ordinal(), value);
  53. this.featureMap.put(featureGroup, feature);
  54. }
  55. // public synchronized LRSamples single(UserBytesFeature userBytesFeature,
  56. // VideoBytesFeature videoBytesFeature,
  57. // RequestContextBytesFeature requestContextBytesFeature) {
  58. // featureMap.clear();
  59. // // extract features todo zhangbo
  60. //
  61. //
  62. // LRSamples.Builder lr = LRSamples.newBuilder();
  63. // lr.setGroupNum(groupCount);
  64. // List<FeatureGroup> keys = new ArrayList<>(featureMap.keySet());
  65. // int count = 0;
  66. // for(FeatureGroup group : keys) {
  67. // List<BaseFeature> fea = featureMap.get(group);
  68. // GroupedFeature.Builder gf = GroupedFeature.newBuilder();
  69. // gf.setGroup(group);
  70. // gf.setCount(fea.size());
  71. // gf.addAllFeatures(fea);
  72. // count += fea.size();
  73. // lr.addFeatures(gf);
  74. // }
  75. // lr.setCount(count);
  76. // return lr.build();
  77. // }
  78. }