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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? adjustseg.java

?? 基于java語言的分詞系統(tǒng)
?? JAVA
字號:
package org.ictclas4j.segment;

import java.util.ArrayList;

import org.ictclas4j.bean.SegNode;
import org.ictclas4j.utility.NumUtil;
import org.ictclas4j.utility.POSTag;
import org.ictclas4j.utility.Utility;


/**
 * 分詞調(diào)整
 * 
 * @author sinboy
 * @since 2007.6.1
 */
public class AdjustSeg {
	/**
	 * 對初次分詞結(jié)果進(jìn)行調(diào)整,主要是對時間、日期、數(shù)字等進(jìn)行合并或拆分
	 * 
	 * @return
	 */
	public static ArrayList<SegNode> firstAdjust(ArrayList<SegNode> sgs) {

		ArrayList<SegNode> wordResult = null;
		int index = 0;
		int j = 0;
		int pos = 0;

		if (sgs != null) {
			wordResult = new ArrayList<SegNode>();

			for (int i = 0; i < sgs.size(); i++, index++) {
				SegNode sn = sgs.get(i);
				String srcWord = null;
				String curWord = sn.getSrcWord();
				SegNode newsn = new SegNode();
				pos = sn.getPos();

				boolean isNum = false;
				if ((Utility.isAllNum(curWord) || Utility.isAllChineseNum(curWord))) {
					isNum = true;
					for (j = i + 1; j < sgs.size() - 1; j++) {
						String temp = sgs.get(j).getSrcWord();
						// 如果相鄰的幾點(diǎn)字符都是數(shù)字,則把它們進(jìn)行合并
						if (Utility.isAllNum(temp) || Utility.isAllChineseNum(temp)) {
							isNum = true;
							index = j;
							curWord += temp;
						} else
							break;

					}
				}

				// 如果不是數(shù)字,但是可以和前面的數(shù)字構(gòu)成日期,則重新設(shè)置前一個節(jié)點(diǎn)
				// 否則,直接把該節(jié)點(diǎn)添加到結(jié)果集中
				if (!isNum) {
					SegNode prevsn = null;
					if (wordResult.size() > 0)
						prevsn = wordResult.get(wordResult.size() - 1);
					if (Utility.isDelimiter(curWord)) {
						// 如果上一個字符也是分隔符,則進(jìn)行合并
						if (prevsn != null && Utility.isDelimiter(prevsn.getWord())) {
							prevsn.setCol(sn.getCol());
							prevsn.appendWord(curWord);
							continue;
						} else
							// 'w'*256;Set the POS with 'w'
							pos = POSTag.PUNC;
					} else if (curWord.length() == 1 && "月日時分秒".indexOf(curWord) != -1 || "月份".equals(curWord)) {
						if (prevsn != null && prevsn.getPos() == -POSTag.NUM) {
							prevsn.setCol(sn.getCol());
							prevsn.setWord(Utility.UNKNOWN_TIME);
							prevsn.setSrcWord(prevsn.getSrcWord() + curWord);
							prevsn.setPos(-POSTag.TIME);
							continue;
						}
					} else if ("年".equals(curWord)) {
						if (prevsn != null && Utility.isYearTime(prevsn.getSrcWord())) {
							prevsn.setCol(sn.getCol());
							prevsn.setWord(Utility.UNKNOWN_TIME);
							prevsn.setSrcWord(prevsn.getSrcWord() + curWord);
							prevsn.setPos(-POSTag.TIME);
							continue;
						}
					}
				} else {

					// 如果當(dāng)前字符串僅僅是有數(shù)字字符組成的而不是一個數(shù)字,則把他對應(yīng)的原始節(jié)點(diǎn)信息也添加到結(jié)果集中
					if (NumUtil.isNumStrNotNum(curWord)) {
						for (int k = i; k <= index; k++)
							wordResult.add(sgs.get(k));
						continue;
					}
					// 是一個數(shù)字
					else {
						// 如果是類似這樣的形式:
						// 3-4月,即當(dāng)前元素是一個數(shù)字,前一個是分隔符,前前一個也是數(shù)字,則當(dāng)前元素應(yīng)該是數(shù)字
						boolean flag = false;
						int size = wordResult.size();
						if (wordResult.size() > 1) {
							SegNode prevPrevsn = wordResult.get(size - 2);
							SegNode prevsn = wordResult.get(size - 1);
							if (NumUtil.isNumDelimiter(prevPrevsn.getPos(), prevsn.getWord())) {
								pos = POSTag.NUM;
								flag = true;
							}
						}
						if (!flag) {
							if (curWord.indexOf("點(diǎn)") == curWord.length() - 1) {
								pos = -POSTag.TIME;
								srcWord = curWord;
								curWord = Utility.UNKNOWN_TIME;
							} else if (curWord.length() > 1) {
								String last = curWord.substring(curWord.length() - 1);
								// 如果當(dāng)前詞的最后一個字符不是如下幾種情況,則說明他是一個數(shù)字。否則最后一個字符就是一個標(biāo)點(diǎn),并把它分離出來
								if ("∶·././".indexOf(last) == -1) {
									pos = -POSTag.NUM;
									srcWord = curWord;
									curWord = Utility.UNKNOWN_NUM;

								} else {
									if (".".equals(last) || "/".equals(last)) {
										pos = -POSTag.NUM;
										srcWord = curWord.substring(0, curWord.length() - 1);
										curWord = Utility.UNKNOWN_NUM;
										index--;
									} else if (curWord.length() > 2) {
										pos = -POSTag.NUM;
										srcWord = curWord.substring(0, curWord.length() - 2);
										curWord = Utility.UNKNOWN_NUM;
										index -= 2;
									}
								}
							}
						}
					}

				}

				int col = index > i ? sgs.get(index).getCol() : sn.getCol();
				newsn.setCol(col);
				newsn.setRow(sn.getRow());
				newsn.setWord(curWord);
				newsn.setPos(pos);
				newsn.setValue(sn.getValue());
				if (srcWord != null)
					newsn.setSrcWord(srcWord);
				wordResult.add(newsn);
				i = index;
			}
		}

		return wordResult;
	}

	/**
	 * 對分詞結(jié)果做最終的調(diào)整,主要是人名的拆分或重疊詞的合并
	 * 
	 * @param optSegPath
	 * @param personTagger
	 * @param placeTagger
	 * @return
	 */
	public static ArrayList<SegNode> finaAdjust(ArrayList<SegNode> optSegPath, PosTagger personTagger,
			PosTagger placeTagger) {
		ArrayList<SegNode> result = null;
		SegNode wr = null;

		if (optSegPath != null && optSegPath.size() > 0 && personTagger != null && placeTagger != null) {

			result = new ArrayList<SegNode>();
			for (int i = 0; i < optSegPath.size(); i++) {
				boolean isBeProcess = false;
				wr = optSegPath.get(i);
				// if (wr.getPos() == POSTag.NOUN_PERSON
				// && (pname = Utility.chineseNameSplit(wr.getSrcWord(),
				// personTagger)) != null
				// && !"葉利欽".equals(wr.getSrcWord())) {
				// if (pname.getFirstName() != null) {
				// SegNode wr2 = new SegNode();
				// wr2.setWord(pname.getFirstName());
				// wr2.setPos(POSTag.NOUN_PERSON);
				// result.add(wr2);
				// }
				//
				// if (pname.getMidName() != null) {
				// SegNode wr2 = new SegNode();
				// wr2.setWord(pname.getMidName());
				// wr2.setPos(POSTag.NOUN_PERSON);
				// result.add(wr2);
				// }
				//
				// if (pname.getLastName() != null) {
				// SegNode wr2 = new SegNode();
				// wr2.setWord(pname.getLastName());
				// wr2.setPos(POSTag.NOUN_PERSON);
				// result.add(wr2);
				// }
				//
				// isBeProcess = true;
				// }
				// Rule2 for overlap words ABB 一段段、一片片
				if (wr.getPos() == POSTag.NUM && i + 2 < optSegPath.size() && optSegPath.get(i + 1).getLen() == 2
						&& optSegPath.get(i + 1).getSrcWord().equals(optSegPath.get(i + 2).getSrcWord())) {
					SegNode wr2 = new SegNode();
					wr2.setWord(wr.getSrcWord() + optSegPath.get(i + 1).getSrcWord()
							+ optSegPath.get(i + 2).getSrcWord());
					wr2.setPos(POSTag.NUM);
					result.add(wr2);
					i += 2;
					isBeProcess = true;
				}
				// Rule3 for overlap words AA
				else if (wr.getLen() == 2 && i + 1 < optSegPath.size()
						&& wr.getSrcWord().equals(optSegPath.get(i + 1).getSrcWord())) {
					SegNode wr2 = new SegNode();
					wr2.setWord(wr.getSrcWord() + optSegPath.get(i + 1).getSrcWord());
					wr2.setPos(POSTag.ADJ);
					if (wr.getPos() == POSTag.VERB || optSegPath.get(i + 1).getPos() == POSTag.VERB)// 30208='v'8256
						wr2.setPos(POSTag.VERB);

					if (wr.getPos() == POSTag.NOUN || optSegPath.get(i + 1).getPos() == POSTag.NOUN)// 30208='v'8256
						wr2.setPos(POSTag.NOUN);

					i += 1;
					if (optSegPath.get(i + 1).getLen() == 2) {// AAB:洗/洗/臉、蒙蒙亮
						if ((wr2.getPos() == POSTag.VERB && optSegPath.get(i + 1).getPos() == POSTag.NOUN)
								|| (wr2.getPos() == POSTag.ADJ && optSegPath.get(i + 1).getPos() == POSTag.ADJ)) {
							wr2.setWord(wr2.getWord() + optSegPath.get(i + 1).getSrcWord());
							i += 1;
						}
					}
					isBeProcess = true;
					result.add(wr2);
				}
				// Rule 4: AAB 洗/洗澡
				else if (wr.getLen() == 2 && i + 1 < optSegPath.size()
						&& (wr.getPos() == POSTag.VERB || wr.getPos() == POSTag.ADJ)
						&& optSegPath.get(i + 1).getLen() == 4
						&& optSegPath.get(i + 1).getSrcWord().indexOf(wr.getSrcWord()) == 0) {
					SegNode wr2 = new SegNode();
					wr2.setWord(wr.getWord() + optSegPath.get(i + 1).getSrcWord());
					wr2.setPos(POSTag.ADJ); // 24832=='a'*256

					if (wr.getPos() == POSTag.VERB || optSegPath.get(i + 1).getPos() == POSTag.VERB)// 30208='v'8256
						wr2.setPos(POSTag.VERB);

					i += 1;
					isBeProcess = true;
					result.add(wr2);
				} else if (wr.getPos() / 256 == 'u' && wr.getPos() % 256 != 0)// uj,ud,uv,uz,ul,ug->u
					wr.setPos('u' * 256);
				// AABB,樸樸素素
				else if (wr.getLen() == 2 && i + 2 < optSegPath.size() && optSegPath.get(i + 1).getLen() == 4
						&& optSegPath.get(i + 1).getWord().indexOf(wr.getWord()) == 0
						&& optSegPath.get(i + 1).getWord().indexOf(optSegPath.get(i + 2).getWord()) == 0) {
					SegNode wr2 = new SegNode();
					wr2.setWord(wr.getWord() + optSegPath.get(i + 1).getWord() + optSegPath.get(i + 2).getWord());
					wr2.setPos(optSegPath.get(i + 1).getPos());
					i += 2;
					isBeProcess = true;
					result.add(wr2);
				}
				// 28275=='n'*256+'s' 地名+X
				else if (wr.getPos() == POSTag.NOUN_SPACE && i + 1 < optSegPath.size())// PostFix
				{
					SegNode next = optSegPath.get(i + 1);
					if (placeTagger.getUnknownDict().isExist(next.getSrcWord(), 4)) {
						SegNode wr2 = new SegNode();
						wr2.setWord(wr.getSrcWord() + next.getSrcWord());
						wr2.setPos(POSTag.NOUN_SPACE);
						i += 1;
						isBeProcess = true;
						result.add(wr2);
					} else if ("隊(duì)".equals(next.getSrcWord())) {
						SegNode wr2 = new SegNode();
						wr2.setWord(wr.getSrcWord() + next.getSrcWord());
						wr2.setPos(POSTag.NOUN_ORG);
						i += 1;
						isBeProcess = true;
						result.add(wr2);
					} else if (optSegPath.get(i + 1).getLen() == 2 && "語文字杯".indexOf(next.getSrcWord()) != -1) {
						SegNode wr2 = new SegNode();
						wr2.setWord(wr.getSrcWord() + next.getSrcWord());
						wr2.setPos(POSTag.NOUN_ZHUAN);
						i += 1;
						isBeProcess = true;
						result.add(wr2);
					} else if ("裔".equals(next.getSrcWord())) {
						SegNode wr2 = new SegNode();
						wr2.setWord(wr.getSrcWord() + next.getSrcWord());
						wr2.setPos(POSTag.NOUN);
						i += 1;
						isBeProcess = true;
						result.add(wr2);
					}
				} else if (wr.getPos() == POSTag.VERB  || wr.getPos() == POSTag.VERB_NOUN  ||wr.getPos() == POSTag.NOUN)// v
				{
					if (i + 1 < optSegPath.size() && "員".equals(optSegPath.get(i + 1).getSrcWord())) {
						SegNode wr2 = new SegNode();
						wr2.setWord(wr.getSrcWord() + optSegPath.get(i + 1).getSrcWord());
						wr2.setPos(POSTag.NOUN);
						i += 1;
						isBeProcess = true;
						result.add(wr2);
					}
				}
				// www/nx ./w sina/nx;
				// EIM/nx -601/m
				// SHM/nx -/w 101/m
				// 28280=='n'*256+'r'
				// 27904=='m'*256
				else if (wr.getPos() == POSTag.NOUN_LETTER && i + 1 < optSegPath.size()) {
					SegNode wr2 = new SegNode();
					wr2.setWord(wr.getSrcWord());
					wr2.setPos(POSTag.NOUN_LETTER);
					while (true) {
						SegNode nextSN = optSegPath.get(i + 1);
						if (nextSN.getPos() == POSTag.NOUN_LETTER || "..--".indexOf(nextSN.getSrcWord()) != -1
								|| (nextSN.getPos() == POSTag.NUM && Utility.isAllNum(nextSN.getSrcWord()))) {
							wr2.setWord(wr2.getSrcWord() + nextSN.getSrcWord());
							i++;
						} else
							break;
					}
					isBeProcess = true;
					result.add(wr2);
				}
				// If not processed,that's mean: not need to adjust;
				// just copy to the final result
				if (!isBeProcess) {
					SegNode wr2 = new SegNode();
					wr2.setWord(wr.getSrcWord());
					wr2.setPos(wr.getPos());
					result.add(wr2);

				}
			}
		}

		return result;
	}

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩精品a在线观看| 伦理电影国产精品| 亚洲欧美综合网| 国产精品精品国产色婷婷| 中文字幕免费不卡在线| 欧美国产成人在线| 中文字幕在线不卡| 亚洲人成7777| 亚洲图片欧美综合| 亚洲成人激情av| 视频一区中文字幕| 久久99国产精品免费| 国产成人aaa| 成人av免费观看| 在线亚洲精品福利网址导航| 欧美无砖专区一中文字| 欧美日本一区二区三区四区 | 欧美一区二区三区四区高清| 欧美高清dvd| 日韩美女视频一区二区在线观看| 精品免费国产二区三区 | 麻豆91在线观看| 国产一区二区三区av电影 | 久久综合999| 中文字幕成人在线观看| 亚洲精品久久久久久国产精华液| 午夜精品久久久久久久| 久久成人av少妇免费| 成人手机在线视频| 在线精品视频免费观看| 欧美一卡二卡在线| 欧美高清在线精品一区| 亚洲自拍偷拍网站| 久久精品久久99精品久久| 国产乱子伦视频一区二区三区 | 亚洲国产精品二十页| 亚洲一区在线观看视频| 麻豆高清免费国产一区| 成人黄色在线网站| 欧美日韩精品电影| 久久久久国产精品厨房| 亚洲精品福利视频网站| 久久精品国产免费看久久精品| 成人爱爱电影网址| 8v天堂国产在线一区二区| 国产亲近乱来精品视频| 亚洲午夜久久久久| 欧美在线一区二区三区| 久久亚洲综合色一区二区三区| 自拍偷拍国产精品| 麻豆国产一区二区| 色综合久久久久网| 欧美成人一区二区三区在线观看 | 九九**精品视频免费播放| 成人黄色电影在线| 日韩一级片网站| 亚洲三级免费电影| 国产自产高清不卡| 欧美在线观看禁18| 国产精品国产精品国产专区不蜜 | 亚洲一区av在线| 国产乱码精品1区2区3区| 欧美日韩的一区二区| ...av二区三区久久精品| 狠狠色综合播放一区二区| 欧美亚洲国产bt| 国产精品美女久久久久久| 日本三级亚洲精品| 日本韩国精品一区二区在线观看| 久久久国产一区二区三区四区小说| 亚洲国产成人高清精品| 91视视频在线观看入口直接观看www | 蜜臀av性久久久久蜜臀aⅴ流畅| www.成人网.com| 久久久美女艺术照精彩视频福利播放| 丝瓜av网站精品一区二区| 91视频观看视频| 国产欧美一区二区精品秋霞影院| 蜜臀91精品一区二区三区| 欧美中文字幕一区| 最新久久zyz资源站| 狠狠色狠狠色综合| 91麻豆精品久久久久蜜臀| 亚洲综合激情另类小说区| 成人黄色小视频在线观看| 久久精子c满五个校花| 精品一区二区三区免费播放| 91.com在线观看| 亚洲一区二区三区国产| 91片黄在线观看| 国产精品灌醉下药二区| 国产成人亚洲综合a∨婷婷| 精品卡一卡二卡三卡四在线| 青青草国产精品97视觉盛宴| 91麻豆精品国产综合久久久久久| 亚洲一区二区三区四区在线观看| 91久久免费观看| 亚洲人成精品久久久久久| 99久免费精品视频在线观看| 欧美激情一区二区三区全黄| 精品1区2区3区| 亚洲综合视频在线| 欧美丝袜自拍制服另类| 亚洲一区在线观看网站| 欧美写真视频网站| 亚洲国产va精品久久久不卡综合| 欧美四级电影在线观看| 亚洲国产美国国产综合一区二区| 欧美性猛交xxxx黑人交| 天堂成人免费av电影一区| 51精品秘密在线观看| 美女尤物国产一区| 久久蜜臀中文字幕| 风间由美一区二区三区在线观看 | 一区二区三区高清| 91官网在线观看| 亚洲成人动漫在线免费观看| 91精品国产黑色紧身裤美女| 裸体一区二区三区| 久久久www成人免费无遮挡大片| 国产伦精品一区二区三区视频青涩 | 日本一区二区三区免费乱视频| 成人久久视频在线观看| ㊣最新国产の精品bt伙计久久| 在线观看av不卡| 日本午夜一区二区| 久久久91精品国产一区二区精品| 99视频在线精品| 午夜精品久久久久久久蜜桃app| 日韩一区二区视频在线观看| 国产乱码精品一区二区三| 《视频一区视频二区| 欧美放荡的少妇| 国产成人自拍高清视频在线免费播放| 国产精品久久久久永久免费观看 | 在线日韩国产精品| 婷婷一区二区三区| 国产午夜亚洲精品不卡| 色猫猫国产区一区二在线视频| 日韩国产高清在线| 国产精品天天摸av网| 欧美色网一区二区| 黑人精品欧美一区二区蜜桃| 最新成人av在线| 欧美一区二区三区影视| 成人综合婷婷国产精品久久免费| 一区二区在线观看视频| 日韩欧美不卡在线观看视频| 不卡一区二区三区四区| 日本色综合中文字幕| 中文字幕一区二区三中文字幕 | 亚洲综合免费观看高清完整版在线 | 自拍av一区二区三区| 欧美一区二区二区| 不卡的电视剧免费网站有什么| 天堂成人国产精品一区| 国产精品嫩草影院com| 欧美精品色一区二区三区| 成人深夜在线观看| 麻豆成人久久精品二区三区小说| 中文字幕日韩精品一区| 精品奇米国产一区二区三区| 一本大道综合伊人精品热热| 欧美卡1卡2卡| av网站一区二区三区| 蜜乳av一区二区| 一区二区三区免费网站| 久久精品在这里| 欧美一级欧美三级在线观看| 99国产精品国产精品久久| 国精产品一区一区三区mba视频| 亚洲成a人v欧美综合天堂| 国产精品热久久久久夜色精品三区| 欧美一区二区视频网站| 99久久国产综合精品麻豆| 国产在线视频一区二区三区| 日日欢夜夜爽一区| 亚洲蜜臀av乱码久久精品| 欧美经典三级视频一区二区三区| 日韩小视频在线观看专区| 欧美性猛交一区二区三区精品| av在线不卡免费看| 国产精品乡下勾搭老头1| 毛片av中文字幕一区二区| 午夜精品一区在线观看| 亚洲精品乱码久久久久久 | 日韩国产精品久久久久久亚洲| 亚洲男帅同性gay1069| 国产精品视频看| 国产调教视频一区| 久久亚洲春色中文字幕久久久| 欧美一级日韩一级| 91精品免费在线观看| 欧美日韩国产免费| 欧美三区免费完整视频在线观看| 91老师片黄在线观看| 99国产精品久久久久| 成人动漫视频在线| av福利精品导航| 9人人澡人人爽人人精品|