⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 seggraph.java

📁 ictclas java实现 很不错的 包含全部所需的文件包 能对句子进行详细的词法分析.
💻 JAVA
字号:
package com.gftech.ictclas4j.segment;

import java.util.ArrayList;

import com.gftech.ictclas4j.bean.SegNode;
import com.gftech.ictclas4j.utility.Utility;

/**
 * 分词图表,即二维表
 * 
 * @author sinboy
 * @since 2006.6
 * 
 */
public class SegGraph {
	private boolean isRowFirst;// 是否按行优先

	private ArrayList<SegNode> snList;// 分词图表实际是用链表来表示

	public SegGraph(){
		
	}
	
	public SegGraph(ArrayList<SegNode> snList){
		this.snList=snList;
	}
	public SegNode getElement(int row, int col) {
		SegNode result = new SegNode();
		result.setValue(Utility.INFINITE_VALUE);
		result.setPos(0);
		// if (row > m_nRow || col > m_nCol)
		// return null;

		int index = 0;
		if (snList != null) {
			if (isRowFirst) {
				for (int i = 0; i < snList.size(); i++, index++) {
					SegNode sg = snList.get(i);
					if (row != -1 && sg.getRow() < row || col != -1 && sg.getRow() == row && sg.getCol() < col)
						continue;
					else
						break;
				}
			} else {
				for (int i = 0; i < snList.size(); i++, index++) {
					SegNode sg = snList.get(i);
					if (col != -1 && sg.getCol() < col || row != -1 && sg.getCol() == row && sg.getRow() < row)
						continue;
					else
						break;
				}
			}

			// Find it and return the value
			if (index < snList.size()) {
				SegNode sg = snList.get(index);
				if ((sg.getRow() == row || row == -1) && (sg.getCol() == col || col == -1))
					result = sg;
			}
		}
		return result;

	}

	/**
	 * 设置元素.如果能在图表中找到,重新设值.否则添加进去.
	 * 
	 * @param sg
	 * @return
	 */
	public boolean setElement(SegNode sg) {
		if (sg != null) {
			if (snList == null)
				snList = new ArrayList<SegNode>();

			int i = 0;
			SegNode sgTemp = null;
			if (isRowFirst) {
				for (i = 0; i < snList.size(); i++) {
					sgTemp = snList.get(i);
					if (sgTemp.getRow() < sg.getRow() || sgTemp.getRow() == sg.getRow()
							&& sgTemp.getCol() < sg.getCol())
						continue;
					else
						break;
				}
			} else {
				for (i = 0; i < snList.size(); i++) {
					sgTemp = snList.get(i);
					if (sgTemp.getCol() < sg.getCol() || sgTemp.getCol() == sg.getCol()
							&& sgTemp.getRow() < sg.getRow())
						continue;
					else
						break;
				}
			}

			if (sgTemp != null && sgTemp.getRow() == sg.getRow() && sgTemp.getCol() == sg.getCol())
				sgTemp = sg;
			else if (i > 0)
				snList.add(i - 1, sg);

		}
		return false;
	}

	/**
	 * 得到所有列值为Col的元素
	 * 
	 * @param curIndex
	 *            当前索引值,表示列值或行值
	 * @param isColFirst
	 *            是否按列优先进行遍历
	 * @return
	 */
	public ArrayList<SegNode> getNodes(int curIndex, boolean isColFirst) {
		ArrayList<SegNode> result = null;

		if (snList != null && snList.size() > 0 && curIndex >= 0) {
			result = new ArrayList<SegNode>();
			for (int i = 0; i < snList.size(); i++) {
				SegNode sg = snList.get(i);
				if (isColFirst) {
					if (sg.getCol() == curIndex)
						result.add(sg);
				} else {
					if (sg.getRow() == curIndex)
						result.add(sg);
				}

			}
		}
		return result;
	}

	public boolean isRowFirst() {
		return isRowFirst;
	}

	public void setRowFirst(boolean isRowFirst) {
		this.isRowFirst = isRowFirst;
	}

	public ArrayList<SegNode> getSnList() {
		return snList;
	}

	public void setSnList(ArrayList<SegNode> sgs) {
		this.snList = sgs;
	}
	
	public int getSize(){
		if(snList!=null)
			return snList.size();
		else
			return -1;
	}
	
	public int getMaxRow(){
		int result=-1;
		
		if(snList!=null && snList.size()>0){
			int size=snList.size();
			SegNode sn=snList.get(size-1);
			result=sn.getRow();
		}


		return result;
	}
	
	public int getMaxCol(){
		int result=-1;
		
		if(snList!=null && snList.size()>0){
			int size=snList.size();
			SegNode sn=snList.get(size-1);
			result=sn.getCol();
		}


		return result;
	}
	

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -