001package com.aispeech.dui.dds.agent; 002 003import android.text.TextUtils; 004 005import java.io.Serializable; 006import java.util.ArrayList; 007import java.util.List; 008 009/** 010 * 用于在一路中做热词增强识别。如果不启用该功能请不要传这个字段。举例: 011 * <p> 012 * {"name":"common", "words":["示例"], ”boost“:3} 013 * <ul> 014 * <li>热词总词数小于等于1000个</li> 015 * <li>单个热词的字数2~10个字</li> 016 * </ul> 017 */ 018public class PhraseList implements Serializable { 019 private static final long serialVersionUID = 1L; 020 021 private String name = "common"; 022 private int boost = 1; 023 private List<String> words; 024 025 public String getName() { 026 return name; 027 } 028 029 /** 030 * 槽位 031 * 032 * @param name 槽位 默认 common 033 */ 034 public void setName(String name) { 035 this.name = name; 036 } 037 038 public int getBoost() { 039 return boost; 040 } 041 042 /** 043 * 表示增强强度,从小到大取值是1,2,3; 默认值是1 044 * 045 * @param boost 增强强度 046 */ 047 public void setBoost(int boost) { 048 this.boost = boost; 049 } 050 051 public List<String> getWords() { 052 return words; 053 } 054 055 /** 056 * 热词 057 * <ul> 058 * <li>热词总词数小于等于1000个</li> 059 * <li>单个热词的字数2~10个字</li> 060 * </ul> 061 * 062 * @param words 热词 063 */ 064 public void setWords(List<String> words) { 065 this.words = words; 066 } 067 068 /** 069 * 热词 070 * <ul> 071 * <li>热词总词数小于等于1000个</li> 072 * <li>单个热词的字数2~10个字</li> 073 * </ul> 074 * 075 * @param word 热词 076 */ 077 public void addWord(String word) { 078 if (words == null) 079 words = new ArrayList<>(); 080 if (word != null && word.length() >= 2 && word.length() <= 10) 081 words.add(word); 082 } 083 084 /** 085 * 校验设置的热词是否合规 086 * 087 * @return true 合规 false 不合规 088 */ 089 public boolean isValid() { 090 if (TextUtils.isEmpty(name)) 091 return false; 092 if (words == null || words.size() == 0 || words.size() > 1000) 093 return false; 094 for (String w : words) { 095 if (w == null || w.length() > 10 || w.length() < 2) 096 return false; 097 } 098 return true; 099 } 100}