org.ansj.app.crf.pojo.Element Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ansj_seg Show documentation
Show all versions of ansj_seg Show documentation
best java chinese word seg !
package org.ansj.app.crf.pojo;
import org.ansj.app.crf.Config;
import org.ansj.app.crf.Model;
public class Element {
public char name;
private int tag = -1;
public int len = 1;
public String nature;
public float[] tagScore;
public int[] from;
public Element(char name) {
this.name = name;
}
public Element(Character name, int tag) {
this.name = name;
this.tag = tag;
}
public int getTag() {
return tag;
}
public Element updateTag(int tag) {
this.tag = tag;
return this;
}
public Element updateNature(String nature) {
this.nature = nature;
return this;
}
@Override
public String toString() {
return name + "/" + len + "/" + tag;
}
public char getName() {
return name;
}
/**
* 获得可见的名称
*
* @return
*/
public String nameStr() {
if (name >= 130 && name < 140) {
return ("num" + (name - 130));
} else if (name >= 140 && name < 150) {
return ("en" + (name - 140));
} else {
return String.valueOf(name);
}
}
public void maxFrom(Model model, Element element) {
if (from == null) {
from = new int[Config.TAG_NUM];
}
float[] pTagScore = element.tagScore;
for (int i = 0; i < Config.TAG_NUM; i++) {
float maxValue = 0;
for (int j = 0; j < Config.TAG_NUM; j++) {
float value = (pTagScore[j] + tagScore[i]) + model.tagRate(j, i);
if (tagScore.length > Config.TAG_NUM) {
value += tagScore[Config.TAG_NUM + j * Config.TAG_NUM + i];
}
if (value > maxValue) {
maxValue = value;
from[i] = j;
}
}
tagScore[i] = maxValue;
}
}
}