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}