// List chứa các nhãn sau khi match
ArrayList<String> NewTag = new ArrayList<String>();
TagProcess tagP = new TagProcess();
ArrayList<int[]> pairs = new ArrayList<int[]>();
if (chunk.TokenVn_ann != null) {
for (int i = 0; i < chunk.TokenVn_ann.length; i++) {
String token;
if(chunk.TokenVn_ann[i].getFeature("POS").equals("Major")
|chunk.TokenVn_ann[i].getFeature("POS").equals("RegNum")
|chunk.TokenVn_ann[i].getFeature("POS").equals("Region")){
token = chunk.TokenVn_ann[i].getSentence().toLowerCase();
} else{
token = chunk.TokenVn_ann[i].getSentence();
}
System.out.println(token);
String _tag = chunk.TokenVn_ann[i].getFeature("POS");
// Nhận diện và phân loại từ để hỏi
if(_tag.equals("GeneralMark") && !Tag.contains("Subject")){
System.err.println("Question: " + question);
String disambiguity = ambiguity;
if(disambiguity.isEmpty()){
System.out.println("---------------------> Hỏi về nhiều thông tin " + token);
} else{
System.out.println("---------------------> Xử lý nhập nhằng " + token + " trả về " + disambiguity);
Left.add(token);
Right.add(disambiguity);
int[] pair = {Left.size() - 1, Right.size() - 1};
pairs.add(pair);
Tag.add(_tag);
}
} else
// nhận diện và phân loại từ so sánh
if(_tag.equals("Compare")){
System.out.println("---------------------> Nhận dạng từ so sánh " + token);
CompareWords.add(token);
CompareActions.add(chunk.TokenVn_ann[i].getFeature("Opt"));
System.out.println(CompareActions);
} else
if (!hs.contains(token)) {
// Add vào list các từ
Left.add(token);
Tag.add(_tag);
// Kiểm tra nếu đó là value đã phân loại tag thì nhận lun
// Xử lý semantic trước
if(tagP.getTag(_tag)!= -1 && !token.equals("SBD") && !token.equals("ĐHCN")){
System.out.println("---------------------> Xử lý semantic " + token);
if(_tag.equals("Date")){
token = Formulate.ConvertDate(token);
} else if (_tag.equals("RegNum")){
token = Formulate.ConvertRegNum(token);