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

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

?? span.java

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

import java.util.ArrayList;

import com.gftech.ictclas4j.utility.ContextStat;
import com.gftech.ictclas4j.utility.Dictionary;
import com.gftech.ictclas4j.utility.Utility;
import com.gftech.ictclas4j.utility.Utility.TAG_TYPE;

public class Span {

	public ContextStat context;

	TAG_TYPE tagType;

	int[][] m_nTags;

	int[][] m_nBestPrev;

	int m_nStartPos;

	int[] m_nBestTag;

	int m_nCurLength;

	String[] m_sWords;

	double[][] m_dFrequency;

	public int[][] m_nUnknownWords;

	public int m_nUnknownIndex;

	public int[] m_nWordPosition;

	public double[] m_dWordsPossibility;

	public Span() {
		m_nTags = new int[Utility.MAX_WORDS_PER_SENTENCE][Utility.MAX_POS_PER_WORD];
		if (tagType != Utility.TAG_TYPE.TT_NORMAL)
			m_nTags[0][0] = 100;// Begin tag
		else
			m_nTags[0][0] = 0;// Begin tag
		m_nTags[0][1] = -1;
		m_nBestPrev = new int[Utility.MAX_WORDS_PER_SENTENCE][Utility.MAX_POS_PER_WORD];
		m_nBestTag = new int[Utility.MAX_WORDS_PER_SENTENCE];
		m_sWords = new String[Utility.MAX_WORDS_PER_SENTENCE];
		m_nUnknownWords = new int[Utility.MAX_UNKNOWN_PER_SENTENCE][2];
		m_nWordPosition = new int[Utility.MAX_WORDS_PER_SENTENCE];
		m_dWordsPossibility = new double[Utility.MAX_UNKNOWN_PER_SENTENCE];
		m_dFrequency = new double[Utility.MAX_WORDS_PER_SENTENCE][Utility.MAX_POS_PER_WORD];
		
		tagType=Utility.TAG_TYPE.TT_NORMAL;
	}

	public boolean loadContext(String fileName) {
		if (fileName != null) {
			context = new ContextStat();
			return context.load(fileName);
		}
		return false;
	}

	public void setType(TAG_TYPE type) {
		tagType = type;
	}

	public boolean posTagging(ArrayList<WordResult> wrList, Dictionary coreDict, Dictionary unknownDict) {
		int i = 0;
		int j, nStartPos;
		reset(false);
		while (i > -1 && i < wrList.size()) {
			nStartPos = i;// Start Position
			i = getFrom(wrList, nStartPos, coreDict, unknownDict);
			getBestPOS();
			switch (tagType) {
			case TT_NORMAL:// normal POS tagging
				j = 1;
				// Store the best POS tagging
				while (m_nBestTag[j] != -1 && j < m_nCurLength) {
					WordResult wr = wrList.get(j + nStartPos - 1);
					wr.setHandle(m_nBestTag[j]);
					// Let 。be 0
					// Exist and update its frequncy as a POS value
					if (wr.getValue() > 0 && coreDict.isExist(wr.getWord(), -1))
						wr.setValue(coreDict.getFrequency(wr.getWord(), m_nBestTag[j]));
					j += 1;
				}
				break;
			case TT_PERSON:// Person recognition
				PersonRecognize(unknownDict);
				break;
			case TT_PLACE:// Place name recognition
			case TT_TRANS_PERSON:// Transliteration Person
				PlaceRecognize(coreDict, unknownDict);
				break;
			default:
				break;
			}
			reset();
		}
		return true;
	}

	public boolean reset(boolean isContinue) {
		if (!isContinue) {
			if (tagType != Utility.TAG_TYPE.TT_NORMAL)
				m_nTags[0][0] = 100;// Begin tag
			else
				m_nTags[0][0] = 0;// Begin tag
			m_nUnknownIndex = 0;
			m_dFrequency[0][0] = 0;
			m_nStartPos = 0;
		} else {
			// Get the last POS in the last sentence
			m_nTags[0][0] = m_nTags[m_nCurLength - 1][0];
			m_dFrequency[0][0] = m_dFrequency[m_nCurLength - 1][0];
		}

		// Get the last POS in the last sentence,set the -1 as end flag
		m_nTags[0][1] = -1;
		m_nCurLength = 1;
		m_nWordPosition[1] = m_nStartPos;
		m_sWords[0] = null;
		return true;
	}

	public boolean reset() {
		return reset(true);
	}

	private boolean disamb() {
		int i, j, k, nMinCandidate;
		double dMinFee = 0;
		double dTmp = 0;

		for (i = 1; i < m_nCurLength; i++)// For every word
		{
			for (j = 0; m_nTags[i][j] >= 0; j++)// For every word
			{
				nMinCandidate = Utility.MAX_POS_PER_WORD + 1;
				for (k = 0; m_nTags[i - 1][k] >= 0; k++) {
					// ConvertPOS(m_nTags[i-1][k],&nKey,&nPrevPOS);
					// ConvertPOS(m_nTags[i][j],&nKey,&nCurPOS);
					// dTmp=m_context.GetContextPossibility(nKey,nPrevPOS,nCurPOS);
					dTmp = -Math.log(context.getContextPossibility(0, m_nTags[i - 1][k], m_nTags[i][j]));
					dTmp += m_dFrequency[i - 1][k];// Add the fees
					if (nMinCandidate > 10 || dTmp < dMinFee)// Get the
					// minimum fee
					{
						nMinCandidate = k;
						dMinFee = dTmp;
					}
				}
				m_nBestPrev[i][j] = nMinCandidate;// The best previous for j
				m_dFrequency[i][j] = m_dFrequency[i][j] + dMinFee;
			}
		}

		return true;
	}

	public boolean getBestPOS() {
		disamb();
		for (int i = m_nCurLength - 1, j = 0; i > 0; i--)// ,j>=0
		{
			if (m_sWords[i] != null) {// Not virtual ending
				m_nBestTag[i] = m_nTags[i][j];// Record the best POS and its
				// possibility
			}
			j = m_nBestPrev[i][j];
		}
		int nEnd = m_nCurLength;// Set the end of POS tagging
		if (m_sWords[m_nCurLength - 1] == null)
			nEnd = m_nCurLength - 1;
		m_nBestTag[nEnd] = -1;
		return true;
	}

	public int getFrom(ArrayList<WordResult> wrList, int index, Dictionary coreDict, Dictionary unknownDict) {
 
		int[] aPOS = new int[Utility.MAX_POS_PER_WORD];
		int[] aFreq = new int[Utility.MAX_POS_PER_WORD];
		int nFreq = 0, j, nRetPos = 0, nWordsIndex = 0;
		boolean bSplit = false;// Need to split in Transliteration recognition
		int i = 1, nPOSCount;
		String sCurWord;// Current word
		nWordsIndex = i + index - 1;
		for (; i < Utility.MAX_WORDS_PER_SENTENCE & nWordsIndex < wrList.size(); i++) {
			WordResult wr = wrList.get(nWordsIndex);
			String word = wr.getWord();
			if (tagType == Utility.TAG_TYPE.TT_NORMAL || !unknownDict.isExist(word, 44)) {
				// current word
				m_sWords[i] = word;// store
				m_nWordPosition[i + 1] = m_nWordPosition[i] + m_sWords[i].getBytes().length;
			} else {
				if (!bSplit) {
					m_sWords[i] = word.substring(2);// store
					bSplit = true;
				} else {
					// current word
					m_sWords[i] = word.substring(2);// store
					bSplit = false;
				}
				m_nWordPosition[i + 1] = m_nWordPosition[i] + m_sWords[i].length();
			}
			// Record the position of current word
			m_nStartPos = m_nWordPosition[i + 1];
			// Move the Start POS to the ending
			if (tagType != Utility.TAG_TYPE.TT_NORMAL) {
				// Get the POSs from the unknown recognition dictionary
				sCurWord = m_sWords[i];
				if (tagType == Utility.TAG_TYPE.TT_TRANS_PERSON && i > 0
						&& Utility.charType(m_sWords[i - 1]) == Utility.CT_CHINESE) {
					if (".".equals(m_sWords[i]))
						sCurWord = ".";
					else if ("-".equals(m_sWords))
						sCurWord = "-";
				}
				ArrayList<WordItem> wis = unknownDict.getHandle(sCurWord);
				nPOSCount = wis.size() + 1;
				for (j = 0; j < wis.size(); j++) {
					aPOS[j] = wis.get(j).getHandle();
					aFreq[j] = wis.get(j).getFrequency();
					m_nTags[i][j] = aPOS[j];
					m_dFrequency[i][j] = -Math.log((1 + aFreq[j]));
					m_dFrequency[i][j] += Math.log((context.getFrequency(0, aPOS[j]) + nPOSCount));
				}

				if ("始##始".equals(m_sWords[i])) {
					m_nTags[i][j] = 100;
					m_dFrequency[i][j] = 0;
					j++;
				} else if ("末##末".equals(m_sWords[i])) {
					m_nTags[i][j] = 101;
					m_dFrequency[i][j] = 0;
					j++;
				} else {
					wis = coreDict.getHandle(m_sWords[i]);
					nFreq = 0;
					for (int k = 0; k < wis.size(); k++) {
						aFreq[k] = wis.get(k).getFrequency();
						nFreq += aFreq[k];
					}
					if (wis.size() > 0) {
						m_nTags[i][j] = 0;
						m_dFrequency[i][j] = -Math.log((double) (1 + nFreq));
						m_dFrequency[i][j] += Math.log((double) (context.getFrequency(0, 0) + nPOSCount));
						j++;
					}
				}
			} else// For normal POS tagging
			{
				j = 0;
				// Get the POSs from the unknown recognition dictionary
				if (wr.getHandle() > 0) {// The word has is only one POS
					// value
					// We have record its POS and nFrequncy in the items.
					m_nTags[i][j] = wr.getHandle();
					m_dFrequency[i][j] = -Math.log(wr.getValue())
							+ Math.log((double) (context.getFrequency(0, m_nTags[i][j]) + 1));
					if (m_dFrequency[i][j] < 0)// Not permit the value less
						// than 0
						m_dFrequency[i][j] = 0;
					j++;
				} else {// The word has multiple POSs, we should retrieve the
					// information from Core Dictionary

					if (wr.getHandle() < 0) {// The word has is only one POS
						m_nTags[i][j] = -wr.getHandle();
						m_dFrequency[i][j++] = wr.getValue();

					}
					ArrayList<WordItem> wis = coreDict.getHandle(m_sWords[i]);
					nPOSCount = wis.size();
					for (; j < wis.size(); j++) {
						// in the unknown dictionary
						aPOS[j] = wis.get(j).getHandle();
						aFreq[j] = wis.get(j).getFrequency();
						m_nTags[i][j] = aPOS[j];
						m_dFrequency[i][j] = -Math.log(1 + aFreq[j])
								+ Math.log(context.getFrequency(0, m_nTags[i][j]) + nPOSCount);
					}
				}
			}
			if (j == 0) {// We donot know the POS, so we have to guess them
				// according
				// lexical knowledge
				j = guessPOS(i);// Guess the POS of current word
			}
			m_nTags[i][j] = -1;// Set the ending POS
			if (j == 1 && m_nTags[i][j] != Utility.CT_SENTENCE_BEGIN)// No
			// ambuguity
			{// No ambuguity, so we can break from the loop
				i++;
				m_sWords[i] = null;
				break;
			}
			if (!bSplit)
				nWordsIndex++;
		}
		if (nWordsIndex == wrList.size())
			nRetPos = -1;// Reaching ending

		if (m_nTags[i - 1][1] != -1)// ||m_sWords[i][0]==0
		{// Set end for words like "張/華/平"
			if (tagType != Utility.TAG_TYPE.TT_NORMAL)
				m_nTags[i][0] = 101;
			else
				m_nTags[i][0] = 1;

			m_dFrequency[i][0] = 0;
			m_sWords[i] = null;// Set virtual ending
			m_nTags[i++][1] = -1;
		}
		m_nCurLength = i;// The current word count
		if (nRetPos != -1)
			return nWordsIndex + 1;// Next start position
		return -1;// Reaching ending

	}

	/**
	 * <pre>
	 *          
	 *          BBCD 343 0.003606 
	 *          BBC 2 0.000021 
	 *          BBE 125 0.001314 
	 *          BBZ 30 0.000315 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩三级.com| 中文字幕一区二区不卡| 午夜精品久久久久久久久久| 色婷婷久久久亚洲一区二区三区| 亚洲精品在线观看视频| 日本成人中文字幕在线视频| 精品午夜久久福利影院| 精品国产91亚洲一区二区三区婷婷| 激情图区综合网| 久久久久久久久久久久久女国产乱| 国产黄色成人av| 亚洲国产成人一区二区三区| 91日韩精品一区| 五月综合激情婷婷六月色窝| 日韩欧美在线网站| 国产精品一品二品| 亚洲六月丁香色婷婷综合久久 | 韩国理伦片一区二区三区在线播放| 日韩欧美在线123| 成人激情小说网站| 亚洲一区二区三区精品在线| 日韩一区二区精品葵司在线 | 国产亚洲女人久久久久毛片| 99视频在线精品| 午夜精品久久久久久久久| 久久一夜天堂av一区二区三区| 成人av综合在线| 日韩和欧美一区二区| 国产欧美一区二区在线| 在线观看亚洲专区| 国产精品一卡二| 亚洲chinese男男1069| 久久先锋影音av| 色婷婷久久久综合中文字幕| 精品影院一区二区久久久| 亚洲女同女同女同女同女同69| 日韩一卡二卡三卡四卡| 欧美日韩中文字幕一区二区| 欧美电影一区二区| 成人性视频免费网站| 午夜精品123| 国产欧美久久久精品影院| 欧美精品123区| 91影院在线观看| 国产精品一区二区无线| 亚洲成av人影院| 最新中文字幕一区二区三区| 精品成人一区二区三区| 欧美性感一类影片在线播放| 成人开心网精品视频| 另类小说色综合网站| 一区二区三区四区蜜桃| 国产精品欧美综合在线| 日韩欧美中文字幕公布| 欧美亚洲综合在线| 色综合天天性综合| 成人理论电影网| 国产精品一区二区视频| 秋霞成人午夜伦在线观看| 亚洲综合一区二区三区| 国产精品嫩草99a| 久久人人爽人人爽| 精品久久久久久无| 欧美精品少妇一区二区三区| 欧美综合亚洲图片综合区| 99久久精品情趣| 成人午夜激情在线| 国产成人av影院| 国产精一区二区三区| 美女视频黄 久久| 日本麻豆一区二区三区视频| 视频一区视频二区中文字幕| 亚洲综合丁香婷婷六月香| 亚洲精品成人少妇| 亚洲女人的天堂| 亚洲综合另类小说| 一区二区三区欧美日| 亚洲精品高清在线| 一区二区三区在线免费视频| 亚洲精品视频观看| 一区二区三区中文在线| 一二三区精品福利视频| 亚洲中国最大av网站| 亚洲午夜私人影院| 亚洲成人激情综合网| 日韩中文欧美在线| 日本在线不卡一区| 精品一区二区三区久久久| 激情综合色播激情啊| 国产一区美女在线| 成人美女在线视频| 日本电影欧美片| 欧美亚洲一区二区三区四区| 欧美精品色综合| 日韩精品一区二区三区三区免费| 欧美精品一区二区三区视频| 国产欧美精品区一区二区三区| 中文字幕亚洲一区二区av在线| 亚洲日本va在线观看| 亚洲国产aⅴ天堂久久| 蜜乳av一区二区| 粉嫩欧美一区二区三区高清影视| 99精品欧美一区二区蜜桃免费| 欧洲色大大久久| 日韩一区二区在线观看视频 | 91在线播放网址| 欧美日韩视频在线第一区 | 综合在线观看色| 亚洲综合视频在线| 日本不卡免费在线视频| 国产精品一区二区在线播放| 色欧美乱欧美15图片| 91精品国产综合久久久久久漫画| 国产精品高潮呻吟| 国产福利一区二区三区视频 | 亚洲男同性视频| 免费在线观看一区| 国产xxx精品视频大全| 欧美系列在线观看| 久久久久久免费网| 亚洲福中文字幕伊人影院| 国内外成人在线| 欧美午夜一区二区| 日本一区二区高清| 日韩成人av影视| 99久久伊人网影院| 国产精品热久久久久夜色精品三区| 中文字幕中文字幕一区| 青青草精品视频| 91麻豆免费在线观看| 欧美成人精品二区三区99精品| 亚洲日本欧美天堂| 国产麻豆日韩欧美久久| 欧美日韩一级二级| 中文字幕欧美一区| 狠狠色丁香婷综合久久| 欧美精品亚洲一区二区在线播放| 国产精品毛片久久久久久久| 日本中文字幕不卡| 在线观看国产一区二区| 国产视频在线观看一区二区三区| 亚洲h在线观看| 日本精品一级二级| 国产精品久久三区| 国产精品99久久久久久久vr| 欧美日韩中文字幕精品| 日韩美女视频19| 国产盗摄精品一区二区三区在线| 91精品一区二区三区在线观看| 亚洲精品免费视频| 99精品久久久久久| 国产精品国产三级国产aⅴ无密码| 国产中文一区二区三区| 91精品国产综合久久精品app | 色婷婷综合久久久| 国产精品二三区| 成人精品小蝌蚪| 国产欧美日本一区二区三区| 韩国三级在线一区| 精品国产91洋老外米糕| 美女视频网站久久| 欧美一二三四在线| 久久伊人中文字幕| 久久精品夜色噜噜亚洲aⅴ| 成人国产视频在线观看| 日韩精品一区二区三区四区| 一区二区三区91| 91久久线看在观草草青青| 国产精品国产三级国产aⅴ中文| 国产91精品一区二区麻豆亚洲| 久久久久99精品一区| 极品少妇一区二区三区精品视频| 精品日本一线二线三线不卡| 免费看欧美女人艹b| 欧美一区二区性放荡片| 美日韩一区二区| 久久影院电视剧免费观看| 国产麻豆精品在线| 国产精品网站在线| av综合在线播放| 一区二区高清在线| 欧美精品成人一区二区三区四区| 日本在线不卡一区| 日韩欧美国产不卡| 国产成人三级在线观看| 国产精品国产三级国产普通话三级 | 国产精品激情偷乱一区二区∴| 欧美久久久影院| 蜜臀久久99精品久久久画质超高清| 欧美日本一区二区三区四区| 日本怡春院一区二区| 精品国产乱码久久久久久1区2区 | 日韩欧美国产精品| 国产麻豆精品视频| 国产精品理论在线观看| 日本高清无吗v一区| 日韩福利电影在线| 国产亚洲成aⅴ人片在线观看 | 欧美成人三级在线| 成av人片一区二区|