        import jieba
        from wordcloud import WordCloud
        protected={'星栈'};approved={'的','很','我','这个','不错','而且','又'}
        suggested=set(output.get('stopwords',[]));check('品牌星栈受到保护','星栈' in output.get('protected',[]) and '星栈' not in suggested)
        jieba.add_word('星栈');tokens=[];index=defaultdict(list)
        for r in prepared['reviews']:
            for token in jieba.lcut(r['text']):
                token=token.strip()
                if token and token not in approved and len(token)>1:tokens.append(token);index[token].append(r['id'])
        frequencies=Counter(tokens);WordCloud(font_path=font_path(),width=1000,height=600,background_color='#f8f4ed',random_state=61,collocations=False).generate_from_frequencies(frequencies).to_file(str(artifact('wordcloud.png')))
        write_csv(artifact('word-frequency.csv'),[{'word':w,'count':n} for w,n in frequencies.most_common()]);write_csv(artifact('source-index.csv'),[{'word':w,'review_ids':'|'.join(sorted(set(ids)))} for w,ids in sorted(index.items())])
        check('中文分词产生受保护品牌词',frequencies['星栈']==sum('星栈' in r['text'] for r in prepared['reviews']));check('每词来源ID可回查',all(set(ids)<={r['id'] for r in prepared['reviews']} for ids in index.values()));check('停用建议不直接删除品牌','星栈' not in approved)
        result={'frequencies':frequencies,'modelSuggestedStopwords':sorted(suggested),'humanApprovedStopwords':sorted(approved),'protected':sorted(protected)}
