package org.ansj.app.summary; import java.util.List; import org.ansj.app.keyword.Keyword; import org.ansj.app.summary.pojo.Summary; import org.nlpcn.commons.lang.tire.SmartGetWord; import org.nlpcn.commons.lang.tire.domain.SmartForest; /** * 关键字标红, * * @author ansj * */ public class TagContent { private String beginTag, endTag; public TagContent(String beginTag, String endTag) { this.beginTag = beginTag; this.endTag = endTag; } public String tagContent(Summary summary) { return tagContent(summary.getKeyWords(), summary.getSummary()); } public String tagContent(List<Keyword> keyWords, String content) { SmartForest<Double> sf = new SmartForest<Double>(); for (Keyword keyWord : keyWords) { sf.add(keyWord.getName().toLowerCase(), keyWord.getScore()); } SmartGetWord<Double> sgw = new SmartGetWord<Double>(sf, content.toLowerCase()); int beginOffe = 0; String temp = null; StringBuilder sb = new StringBuilder(); while ((temp = sgw.getFrontWords()) != null) { sb.append(content.substring(beginOffe, sgw.offe)); sb.append(beginTag); sb.append(content.substring(sgw.offe, sgw.offe + temp.length())); sb.append(endTag); beginOffe = sgw.offe + temp.length(); } if (beginOffe <= content.length() - 1) { sb.append(content.substring(beginOffe, content.length())); } return sb.toString(); } }