亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? segment.java

?? 基于中科院的ICTCLAS實現中文分詞系統 開發工具是JAVA.經測試,效果很好
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package com.gftech.ictclas4j.segment;

import java.util.ArrayList;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

import com.gftech.ictclas4j.bean.Atom;
import com.gftech.ictclas4j.bean.PersonName;
import com.gftech.ictclas4j.bean.SegGraph;
import com.gftech.ictclas4j.bean.Sentence;
import com.gftech.ictclas4j.bean.WordResult;
import com.gftech.ictclas4j.run.Config;
import com.gftech.ictclas4j.utility.Dictionary;
import com.gftech.ictclas4j.utility.DynamicArray;
import com.gftech.ictclas4j.utility.Utility;
import com.gftech.util.GFString;

public class Segment {
	private Dictionary coreDict;

	private Dictionary bigramDict;

	private String src;

	private int[] wordPosMapTable;// 保存每個詞在表中對應的絕對位置

	private double smoothParam;

	private long spendTime;

	private String splitedWord;

	private UnknownSeg unPerson;

	private UnknownSeg unTransPerson;

	private UnknownSeg unPlace;

	static Logger logger = Logger.getLogger(Segment.class);

	public Segment(String src, Dictionary dict, Dictionary biDict) {
		PropertyConfigurator.configure(Config.LOG4J_CONF);
		this.src = src;
		this.coreDict = dict;
		this.bigramDict = biDict;
		this.smoothParam = 0.1;
		this.spendTime = System.currentTimeMillis();

		unPerson = new UnknownSeg();
		unTransPerson = new UnknownSeg();
		unPlace = new UnknownSeg();
		unPerson.configure("data\\nr", Utility.TAG_TYPE.TT_PERSON);
		unTransPerson.configure("data\\tr", Utility.TAG_TYPE.TT_TRANS_PERSON);
		unPlace.configure("data\\ns", Utility.TAG_TYPE.TT_TRANS_PERSON);

		split();
	}

	private void split() {
		String result = null;

		if (src != null) {
			result = "";
			SentenceSeg ss = new SentenceSeg(src);
			ArrayList<Sentence> sens = ss.getSens();
			for (Sentence sen : sens) {
				logger.debug(sen);
				if (sen.isSeg()) {
					AtomSeg as = new AtomSeg(sen.getContent());
					ArrayList<Atom> atoms = as.getAtoms();
					for (Atom atom : atoms)
						logger.info(atom);

					GraphGenerate gg = new GraphGenerate(coreDict, bigramDict);
					ArrayList<SegGraph> sgs = gg.generate(atoms);
					logger.info(sgs);
					wordPosMapTable = new int[sgs.size()];
					for (int i = 0; i < sgs.size(); i++) {
						SegGraph sg = sgs.get(i);
						wordPosMapTable[i] = sg.getRow() * Utility.MAX_SENTENCE_LEN + sg.getCol();
					}

					ArrayList<SegGraph> biSgs = gg.biGenerate(sgs, wordPosMapTable, smoothParam);
					logger.info(biSgs);
					NShortPath nsp = new NShortPath(biSgs, 1);
					int[] bipath = nsp.getNShortPath(true);
					int[] unipath = bipath2unipath(wordPosMapTable, bipath);

					ArrayList<SegGraph> segPath = getSegPath(atoms, sgs, unipath);
					ArrayList<WordResult> rs = generateWord(segPath);
					for (WordResult wr : rs)
						logger.info(wr);
					
					
					//對分詞結果進優化
					DynamicArray optSeg = new DynamicArray();
					optSeg.setSgs(segPath);

					unPerson.recognition(rs, optSeg, coreDict);
					unTransPerson.recognition(rs, optSeg, coreDict);
					unPlace.recognition(rs, optSeg, coreDict);

					ArrayList<SegGraph> optsgs = optSeg.getSgs();
					wordPosMapTable = new int[optsgs.size()];
					for (int i = 0; i < optsgs.size(); i++) {
						SegGraph sg = optsgs.get(i);
						wordPosMapTable[i] = sg.getRow() * Utility.MAX_SENTENCE_LEN + sg.getCol();
					}

					ArrayList<SegGraph> biSgs2 = gg.biGenerate(optsgs, wordPosMapTable, smoothParam);
					logger.info("bisgs2:" + biSgs2);

					NShortPath nsp2 = new NShortPath(biSgs2, 1);
					int[] bipath2 = nsp2.getNShortPath(true);
					int[] unipath2 = bipath2unipath(wordPosMapTable, bipath2);

					ArrayList<SegGraph> segPath2 = getSegPath(atoms, optsgs, unipath2);
					ArrayList<WordResult> rs2 = generateWord(segPath2);
					for (WordResult wr : rs2)
						logger.info(wr);

					unPerson.roleTag.setType(Utility.TAG_TYPE.TT_NORMAL);
					unPerson.roleTag.posTagging(rs2, coreDict, unPerson.unDict);
					result += outputResult(adjust(rs2));
				} else
					result += sen.getContent();
			}

		}

		spendTime = System.currentTimeMillis() - spendTime;
		splitedWord = result;
	}

	private String outputResult(ArrayList<WordResult> wrList) {
		String result = null;
		char[] pos = new char[2];
		if (wrList != null && wrList.size() > 2) {
			result = "";
			wrList.remove(0);
			wrList.remove(wrList.size() - 1);
			for (WordResult wr : wrList) {
				pos[0] = (char) (wr.getHandle() / 256);
				pos[1] = (char) (wr.getHandle() % 256);

				result += wr.getWord() + "/" + pos[0] + pos[1] + " ";
			}
		}

		return result;
	}

	private int[] bipath2unipath(int[] wordPosMapTable, int[] bipath) {
		int[] result = null;

		if (bipath != null && wordPosMapTable != null) {
			int[] temp = new int[bipath.length + 1];
			int wordPos = -1;
			int i = 0;
			for (int j = 0; i < bipath.length; i++, j++) {
				wordPos = wordPosMapTable[bipath[i]];
				temp[j] = wordPos / Utility.MAX_SENTENCE_LEN;
			}

			// if (wordPos > 0)
			// temp[i] = wordPos % Utility.MAX_SENTENCE_LEN;

			result = Utility.removeInvalid(temp);
		}
		return result;

	}

	/**
	 * 生成最終的分詞路徑
	 * 
	 * @param unipath
	 *            由二叉路徑生成的唯一路徑
	 * @return
	 */
	private ArrayList<WordResult> generateWord(ArrayList<SegGraph> sgs) {

		WordResult[] wordResult = null;
		int index = 0;
		int nPOS = 0;
		double fValue = 0;
		int j = 0;
		boolean isNum = false;

		if (sgs != null) {
			wordResult = new WordResult[sgs.size()];

			for (int i = 0; i < sgs.size(); i++, index++) {
//				String curWord = null;
				String snum = sgs.get(i).getWord();
				nPOS = sgs.get(i).getPos();
				fValue = sgs.get(i).getValue();
				for (j = i; j < sgs.size() - 1; j++) {
					snum += sgs.get(j + 1).getWord();
					if (Utility.isAllNum(snum) || Utility.isAllChineseNum(snum)) {
						isNum = true;
						wordResult[index] = new WordResult();
						wordResult[index].setWord(snum);
					} else
						break;

				}

				i = j;
				if (!isNum) {
					wordResult[index] = new WordResult();
					wordResult[index].setWord(sgs.get(i).getWord());
//					curWord = sgs.get(i).getWord();
				} else {

					WordResult wr = wordResult[index];
					String word = wr.getWord();
					if (word.length() == 2 && "第上成±—+∶·./".indexOf(word) != -1 || word.length() == 1
							&& "+-./".indexOf(word) != -1) {
//						curWord = word;
					}
					// 是一個數字
					else {
						if ("--".equals(word) || "—".equals(word) || "-".equals(word))// The
						// delimiter
						// "--"
						{
							nPOS = 30464;// 'w'*256;Set the POS with 'w'
						} else {// Adding time suffix

							String first = word.substring(0, 1);
							if (index > 0
									&& (Math.abs(wordResult[index - 1].getHandle()) == 27904 || Math
											.abs(wordResult[index - 1].getHandle()) == 29696)
									&& ("—".equals(first) || "-".equals(first)) && (word.length()) > 1) {// 3-4月
								// //27904='m'*256
								// 29696='t'*256
								// Split the sInitChar from the original word
								wordResult[index + 1].setWord(word.substring(1));
								wordResult[index + 1].setValue(wordResult[index].getValue());
								wordResult[index + 1].setHandle(27904);
								wr.setWord(word.substring(0, 1));
								wr.setValue(0);
								wr.setHandle(30464);// 'w'*256;

								// TODO
								// Utility.insertGraph(optGraph,sg,false);
							}
//							int len = word.length();
							String atom = sgs.get(i + 1).getWord();
							if (atom.length() == 1 && "月日時分秒".indexOf(atom) != -1 || "月份".equals(atom)) {// 2001年
								wr.setWord(word + atom);
//								curWord = "未##時";
								nPOS = -29696;// 't'*256;//Set the POS with
								i++;
								// 'm'
							} else if ("年".equals(atom)) {
								if (Utility.isYearTime(word))// strncmp(sAtom,"年",2)==0&&
								{// 1998年,
									wordResult[index].setWord(word + atom);
//									curWord = "未##時";
									nPOS = -29696;// Set the POS with 't'
									i++;
								} else {
//									curWord = "未##數";
									nPOS = -27904;// Set the POS with 'm'

								}
							} else {
								// 早晨/t 五點/t
								if (word.indexOf("點") == word.length() - 1) {
//									curWord = "未##時";
									nPOS = -29696;// Set the POS with 't'
								} else {
									if ("∶·./".indexOf(word.substring(word.length() - 1)) == -1
											&& !".".equals(word.substring(word.length() - 1))
											&& !"/".equals(word.substring(word.length() - 1))) {
//										curWord = "未##數";
										// 'm'*256;Set the POS with 'm'
										nPOS = -27904;
									}
									// Get rid of .example 1.
									else if (word.length() > 1) {
										if (".".equals(word.substring(word.length() - 1))
												|| !"/".equals(word.substring(word.length() - 1)))
											wr.setWord(word.substring(0, word.length() - 1));
										else
											wr.setWord(word.substring(0, word.length() - 2));
//										curWord = "未##數";
										nPOS = -27904;// 'm'*256;Set the POS
										// with 'm'

									}
								}
							}
						}
						fValue = 0;
					}
				}

				wordResult[index].setHandle(nPOS);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区在线观看 | 国产日韩视频一区二区三区| 久久综合久久综合亚洲| 国产女主播一区| 亚洲午夜精品在线| 亚洲免费av网站| 蜜桃久久精品一区二区| 成人app网站| 91成人网在线| 久久久精品影视| 亚洲www啪成人一区二区麻豆| 成人动漫中文字幕| 欧美人与禽zozo性伦| 国产丝袜欧美中文另类| 亚洲成人免费av| 91丨九色丨蝌蚪丨老版| 亚洲国产精品ⅴa在线观看| 国产精品女人毛片| 日韩美女视频在线| 精品国产亚洲一区二区三区在线观看| 亚洲成人1区2区| 欧美中文字幕一二三区视频| 久久噜噜亚洲综合| 激情深爱一区二区| 日韩欧美久久久| 日韩av在线免费观看不卡| 在线观看成人免费视频| 亚洲一二三区在线观看| 色婷婷av久久久久久久| 一区二区三区四区在线| 91行情网站电视在线观看高清版| 亚洲久本草在线中文字幕| av男人天堂一区| 亚洲欧美偷拍三级| 欧美视频中文字幕| 首页国产丝袜综合| 日韩视频一区在线观看| 美女免费视频一区二区| 日韩亚洲欧美成人一区| 黄色资源网久久资源365| 久久久国产午夜精品| 成人综合在线观看| 亚洲欧美福利一区二区| 欧美色手机在线观看| 日韩高清在线不卡| 欧美大度的电影原声| 国产乱码精品一区二区三区五月婷| 久久久久久久久久美女| 成人国产免费视频| 亚洲综合在线视频| 欧美一区二区在线不卡| 国产麻豆精品视频| 国产精品久久久久久久久晋中| 99精品国产视频| 亚洲一区二区视频| 精品成人免费观看| 99久久99久久综合| 日韩—二三区免费观看av| 久久综合久久99| 99精品国产热久久91蜜凸| 天堂一区二区在线免费观看| 日韩精品在线一区二区| 不卡av在线免费观看| 亚洲一区中文在线| 久久综合色鬼综合色| 色美美综合视频| 久久aⅴ国产欧美74aaa| 国产精品成人免费在线| 884aa四虎影成人精品一区| 国内偷窥港台综合视频在线播放| 国产精品国产三级国产aⅴ中文| 欧美性生活一区| 国产999精品久久久久久绿帽| 一区二区三区电影在线播| 久久久一区二区三区捆绑**| 在线免费观看成人短视频| 久久成人18免费观看| 亚洲精品日韩综合观看成人91| 精品国精品自拍自在线| 在线精品视频小说1| 精品在线播放午夜| 午夜电影一区二区三区| 中文字幕一区三区| 欧美亚洲一区二区在线观看| 久久丝袜美腿综合| 成人视屏免费看| 亚洲一区二区视频在线| 日韩视频在线永久播放| 欧美色成人综合| 不卡av在线免费观看| 韩国毛片一区二区三区| 亚洲国产综合在线| 亚洲国产精品黑人久久久| 日韩欧美一级在线播放| 欧美日韩精品一区视频| 99久久久久久| 国产久卡久卡久卡久卡视频精品| 久久se精品一区精品二区| 亚洲曰韩产成在线| 亚洲欧洲制服丝袜| 色久综合一二码| 欧美一区二区久久| 国产成人午夜精品影院观看视频| 国产精品影音先锋| 欧美一卡二卡三卡| 亚洲卡通动漫在线| 久久久久一区二区三区四区| 精品少妇一区二区三区在线播放| 91论坛在线播放| 成人深夜福利app| 国产白丝精品91爽爽久久 | 欧美一区二区视频在线观看| 色偷偷久久一区二区三区| 99国产欧美另类久久久精品| 波多野结衣中文字幕一区二区三区| 国产成人在线视频网址| 国产电影精品久久禁18| 国产一区二区女| 九九**精品视频免费播放| 久久97超碰色| 国产成都精品91一区二区三| 丁香激情综合国产| jlzzjlzz亚洲日本少妇| 不卡av免费在线观看| 91蝌蚪porny九色| 91福利在线导航| 在线播放视频一区| 欧美变态口味重另类| 久久精品一级爱片| 亚洲欧洲成人精品av97| 亚洲黄色性网站| 图片区日韩欧美亚洲| 蜜臀av一区二区在线免费观看| 久久69国产一区二区蜜臀| 国产成人99久久亚洲综合精品| 99久久99久久免费精品蜜臀| 欧美系列亚洲系列| 91精品国产手机| 久久久久99精品一区| 亚洲视频在线观看三级| 五月天婷婷综合| 国产真实乱子伦精品视频| 成人午夜激情视频| 成人ar影院免费观看视频| 欧美性猛交一区二区三区精品| 777奇米四色成人影色区| 国产色产综合色产在线视频| 日韩毛片高清在线播放| 丝袜美腿亚洲一区| 国产麻豆成人传媒免费观看| 91福利在线播放| 精品国产一区二区三区av性色| 国产精品久久久久影视| 日韩av午夜在线观看| 岛国精品在线播放| 欧美一区二区三区在线| 久久久久久97三级| 午夜精品久久久久久久 | 美女尤物国产一区| 99久久精品久久久久久清纯| 日韩午夜av一区| 亚洲一区二区三区视频在线播放| 激情欧美一区二区| 欧美电影一区二区| 亚洲另类春色国产| 国产风韵犹存在线视精品| 欧美高清激情brazzers| 中文字幕中文字幕一区二区| 美国十次综合导航| 欧洲国内综合视频| 中文字幕制服丝袜一区二区三区| 美女免费视频一区二区| 欧美日韩不卡在线| 亚洲美女视频在线| 成人av电影在线播放| 久久久一区二区| 久久超碰97中文字幕| 在线综合+亚洲+欧美中文字幕| 中文字幕亚洲在| 成人av在线资源网站| 国产日韩视频一区二区三区| 美女任你摸久久| 4438成人网| 亚洲成人在线免费| 欧美亚洲一区三区| 一区二区日韩av| 在线免费观看日韩欧美| 亚洲日本va午夜在线影院| 国产91对白在线观看九色| 亚洲精品在线免费播放| 精品一区二区av| 日韩一区二区三区在线视频| 日韩 欧美一区二区三区| 欧美日韩一区二区三区免费看| 亚洲综合图片区| 欧美视频在线观看一区二区| 亚洲午夜久久久久久久久电影网| 在线精品视频免费播放| 亚洲一二三专区| 欧美精品aⅴ在线视频|