/**
* Created by jpbirdy on 14-11-22.
*/
package jpbirdy.segment.util;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
/**
* @author jpbirdy
* @project Segmentation
* @class PartOfSpeech
* @date 14-11-22 18:47
* @desc 词性
* <p/>
* ag 形语素 形容词性语素。形容词代码为 a,语素代码g前面置以A。
* a 形容词 取英语形容词 adjective的第1个字母。 ad 副形词 直接作状语的形容词。形容词代码 a和副词代码d并在一起。
* an 名形词 具有名词功能的形容词。形容词代码 a和名词代码n并在一起。
* b 区别词 取汉字“别”的声母。
* c 连词 取英语连词 conjunction的第1个字母。 dg 副语素 副词性语素。副词代码为 d,语素代码g前面置以D。
* d 副词 取 adverb的第2个字母,因其第1个字母已用于形容词。
* e 叹词 取英语叹词 exclamation的第1个字母。 f 方位词 取汉字“方”
* g 语素 绝大多数语素都能作为合成词的“词根”,取汉字“根”的声母。
* h 前接成分 取英语 head的第1个字母。
* i 成语 取英语成语 idiom的第1个字母。
* j 简称略语 取汉字“简”的声母。 k 后接成分 l 习用语 习用语尚未成为成语,有点“临时性”,取“临”的声母。
* m 数词 取英语 numeral的第3个字母,n,u已有他用。 Ng 名语素 名词性语素。名词代码为 n,语素代码g前面置以N。
* n 名词 取英语名词 noun的第1个字母。
* nr 人名 名词代码 n和“人(ren)”的声母并在一起。
* ns 地名 名词代码 n和处所词代码s并在一起。
* nt 机构团体 “团”的声母为 t,名词代码n和t并在一起。
* nz 其他专名 “专”的声母的第 1个字母为z,名词代码n和z并在一起。
* o 拟声词 取英语拟声词 onomatopoeia的第1个字母。
* p 介词 取英语介词 prepositional的第1个字母。
* q 量词 取英语 quantity的第1个字母。
* r 代词 取英语代词 pronoun的第2个字母,因p已用于介词。
* s 处所词 取英语 space的第1个字母。
* tg 时语素 时间词性语素。时间词代码为 t,在语素的代码g前面置以T。
* t 时间词 取英语 time的第1个字母。
* u 助词 取英语助词 auxiliary
* vg 动语素 动词性语素。动词代码为 v。在语素的代码g前面置以V。
* v 动词 取英语动词 verb的第一个字母。
* vd 副动词 直接作状语的动词。动词和副词的代码并在一起。
* vn 名动词 指具有名词功能的动词。动词和名词的代码并在一起。
* w 标点符号
* x 非语素字 非语素字只是一个符号,字母 x通常用于代表未知数、符号。
* y 语气词 取汉字“语”的声母。
* @see https://gist.github.com/hankcs/d7dbe79dde3f85b423e4
* 或http://wenku.baidu.com/link?url=pLMLZ2dBiCx5L3RR3MK4_QMbDbzWSZUx_Jtlkj7fXV1qpM5vayLDx8g9r4irmCquoi1GTl0N3xnYqHKCTx1Er4aDS-LF3s8sOAjrcpVl8J7
* ICTPOS3.0词性标记集
*/
public class PartOfSpeech {
private SpeechEntity entity;
public static Map<String, SpeechEntity> map = null;
static {
map = new HashMap<String, SpeechEntity>();
map.put("", new SpeechEntity("none", "无词性", ""));
try {
BufferedReader br = new BufferedReader(new InputStreamReader(
PartOfSpeech.class.getClassLoader().getResourceAsStream("main/resources/speech.txt"), "UTF-8"));
String temp;
while ((temp = br.readLine()) != null) {
dealSpeech(map, temp);
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
public PartOfSpeech() {
map.get("");
}
public PartOfSpeech(String str) {
entity = map.get(str);
if (entity == null) {
System.out.println(str);
entity = new SpeechEntity(str, "", "");
}
}
public static void dealSpeech(Map<String, SpeechEntity> map, String speech) {
// System.out.println(speech);
String[] speechs = speech.split(" ");
// System.out.println(speechs.length);
if (speechs.length == 2) {
map.put(speechs[0], new SpeechEntity(speechs[0], speechs[1]));
}
else {
map.put(speechs[0], new SpeechEntity(speechs[0], speechs[1], speechs[2]));
}
}
public SpeechEntity getEntity() {
return entity;
}
public void setEntity(SpeechEntity entity) {
this.entity = entity;
}
@Override
public String toString() {
return "PartOfSpeech{" +
"entity=" + entity +
'}';
}
public static void main(String[] args) throws Exception {
// System.out.println("Hello World!");
}
}