metamap实现词性标注(简单分句+词性标注)

简单分句

public List<String> getPhrase(String args,String type) {
List<String> lists = new ArrayList<String>();
try {
args = args.replaceAll("[;] ", "###").replaceAll("[.] a", ".&&&a").replaceAll(
"[.] b", ".&&&b").replaceAll("[.] c", ".&&&c").replaceAll("[.] d", ".&&&d").replaceAll("[.] e", ".&&&e").replaceAll("[.] f", ".&&&f").replaceAll("[.] g", ".&&&g").replaceAll("[.] h", ".&&&h").replaceAll("[.] i", ".&&&i").replaceAll(
"[.] j", ".&&&j").replaceAll("[.] k", ".&&&k").replaceAll("[.] l", ".&&&l").replaceAll("[.] m", ".&&&m").replaceAll("[.] n", ".&&&n").replaceAll("[.] o", ".&&&o").replaceAll("[.] p", ".&&&p").replaceAll("[.] q", ".&&&q").replaceAll(
"[.] r", ".&&&r").replaceAll("[.] s", ".&&&s").replaceAll("[.] r", ".&&&r").replaceAll("[.] u", ".&&&u").replaceAll("[.] v", ".&&&v").replaceAll("[.] w", ".&&&w").replaceAll("[.] x", ".&&&x").replaceAll("[.] y", ".&&&y").replaceAll(
"[.] z", ".&&&z").replaceAll("[?] a", "?&&&a").replaceAll(
"[?] b", "?&&&b").replaceAll("[?] c", "?&&&c").replaceAll("[?] d", "?&&&d").replaceAll("[?] e", "?&&&e").replaceAll("[?] f", "?&&&f").replaceAll("[?] g", "?&&&g").replaceAll("[?] h", "?&&&h").replaceAll("[?] i", "?&&&i").replaceAll(
"[?] j", "?&&&j").replaceAll("[?] k", "?&&&k").replaceAll("[?] l", "?&&&l").replaceAll("[?] m", "?&&&m").replaceAll("[?] n", "?&&&n").replaceAll("[?] o", "?&&&o").replaceAll("[?] p", "?&&&p").replaceAll("[?] q", "?&&&q").replaceAll(
"[?] r", "?&&&r").replaceAll("[?] s", "?&&&s").replaceAll("[?] r", "?&&&r").replaceAll("[?] u", "?&&&u").replaceAll("[?] v", "?&&&v").replaceAll("[?] w", "?&&&w").replaceAll("[?] x", "?&&&x").replaceAll("[?] y", "?&&&y").replaceAll(
"[?] z", "?&&&z").replaceAll("[!] a", "!&&&a").replaceAll(
"[!] b", "!&&&b").replaceAll("[!] c", "!&&&c").replaceAll("[!] d", "!&&&d").replaceAll("[!] e", "!&&&e").replaceAll("[!] f", "!&&&f").replaceAll("[!] g", "!&&&g").replaceAll("[!] h", "!&&&h").replaceAll("[!] i", "!&&&i").replaceAll(
"[!] j", "!&&&j").replaceAll("[!] k", "!&&&k").replaceAll("[!] l", "!&&&l").replaceAll("[!] m", "!&&&m").replaceAll("[!] n", "!&&&n").replaceAll("[!] o", "!&&&o").replaceAll("[!] p", "!&&&p").replaceAll("[!] q", "!&&&q").replaceAll(
"[!] r", "!&&&r").replaceAll("[!] s", "!&&&s").replaceAll("[!] r", "!&&&r").replaceAll("[!] u", "!&&&u").replaceAll("[!] v", "!&&&v").replaceAll("[!] w", "!&&&w").replaceAll("[!] x", "!&&&x").replaceAll("[!] y", "!&&&y").replaceAll(
"[!] z", "!&&&z").replaceAll("[.!?]{1} ", "###")
.replaceAll("[.]&&&a", ". a").replaceAll(
"[.]&&&b", ". b").replaceAll("[.]&&&c", ". c").replaceAll("[.]&&&d", ". d").replaceAll("[.]&&&e", ". e").replaceAll("[.]&&&f", ". f").replaceAll("[.]&&&g", ". g").replaceAll("[.]&&&h", ". h").replaceAll("[.]&&&i", ". i").replaceAll(
"[.]&&&j", ". j").replaceAll("[.]&&&k", ". k").replaceAll("[.]&&&l", ". l").replaceAll("[.]&&&m", ". m").replaceAll("[.]&&&n", ". n").replaceAll("[.]&&&o", ". o").replaceAll("[.]&&&p", ". p").replaceAll("[.]&&&q", ". q").replaceAll(
"[.]&&&r", ". r").replaceAll("[.]&&&s", ". s").replaceAll("[.]&&&r", ". r").replaceAll("[.]&&&u", ". u").replaceAll("[.]&&&v", ". v").replaceAll("[.]&&&w", ". w").replaceAll("[.]&&&x", ". x").replaceAll("[.]&&&y", ". y").replaceAll(
"[.]&&&z", ". z").replaceAll("[?]&&&a", "? a").replaceAll(
"[?]&&&b", "? b").replaceAll("[?]&&&c", "? c").replaceAll("[?]&&&d", "? d").replaceAll("[?]&&&e", "? e").replaceAll("[?]&&&f", "? f").replaceAll("[?]&&&g", "? g").replaceAll("[?]&&&h", "? h").replaceAll("[?]&&&i", "? i").replaceAll(
"[?]&&&j", "? j").replaceAll("[?]&&&k", "? k").replaceAll("[?]&&&l", "? l").replaceAll("[?]&&&m", "? m").replaceAll("[?]&&&n", "? n").replaceAll("[?]&&&o", "? o").replaceAll("[?]&&&p", "? p").replaceAll("[?]&&&q", "? q").replaceAll(
"[?]&&&r", "? r").replaceAll("[?]&&&s", "? s").replaceAll("[?]&&&r", "? r").replaceAll("[?]&&&u", "? u").replaceAll("[?]&&&v", "? v").replaceAll("[?]&&&w", "? w").replaceAll("[?]&&&x", "? x").replaceAll("[?]&&&y", "? y").replaceAll(
"[?]&&&z", "? z").replaceAll("[!]&&&a", "! a").replaceAll(
"[!]&&&b", "! b").replaceAll("[!]&&&c", "! c").replaceAll("[!]&&&d", "! d").replaceAll("[!]&&&e", "! e").replaceAll("[!]&&&f", "! f").replaceAll("[!]&&&g", "! g").replaceAll("[!]&&&h", "! h").replaceAll("[!]&&&i", "! i").replaceAll(
"[!]&&&j", "! j").replaceAll("[!]&&&k", "! k").replaceAll("[!]&&&l", "! l").replaceAll("[!]&&&m", "! m").replaceAll("[!]&&&n", "! n").replaceAll("[!]&&&o", "! o").replaceAll("[!]&&&p", "! p").replaceAll("[!]&&&q", "! q").replaceAll(
"[!]&&&r", "! r").replaceAll("[!]&&&s", "! s").replaceAll("[!]&&&r", "! r").replaceAll("[!]&&&u", "! u").replaceAll("[!]&&&v", "! v").replaceAll("[!]&&&w", "! w").replaceAll("[!]&&&x", "! x").replaceAll("[!]&&&y", "! y").replaceAll(
"[!]&&&z", "! z");
String[] str_sz = args.split("###");
// System.out.println(str_sz.length);
int jz_length = 1;
for (int i = 0; i < str_sz.length; i++) {
lists.addAll(ParsePhrase(str_sz[i],jz_length,type,i+1,str_sz.length));
jz_length=jz_length+str_sz[i].length()+2;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return lists;

 

  public List<String> getTag(String args,int start) {

List<String> lists = new ArrayList<String>();
String line = "";
System.setProperty("ngramOne", "D:/metamapdata/ngramOne.serial");
System.setProperty("lexFile","D:/metamapdata/lexDB.serial");
Tagger tag = new Tagger();
String text = tag.tagText(args, true, false);
List<Tag> titletags = formatTag(text,start,args);
for (Tag t : titletags) {
if (line.length() > 0) {
line = line + " " + t.getWord() + "<font color='red'> /" + t.getTag()+"</font>";
} else {
line = t.getWord() + "<font color='red'> /" + t.getTag()+"</font>";
}
}
System.out.println(line);
lists.add(line);
return lists;
}

 private static List<Tag> formatTag(String str,int start,String sentence){

int i=0;
String bracket="";
List<String> brackets=new ArrayList<String>();
boolean hasbracket=false;
boolean endbracket=false;
brackets.addAll(getBrackets(sentence));
List<Tag> tags=new ArrayList<Tag>();
//1代表从1开始
int startpos=start;
if(str.contains("{")){
str=str.replaceAll("'\\{', '\\('", "'{', ''").replaceAll("'\\}', '\\)'", "'}', ''");
}
String[] strs=str.split("],");
for(String ss:strs){
String result=ss.replaceAll("]", "").replace("[", "").trim();
if(result.contains(",")){
if(ss.contains("(")){
hasbracket=true;
}
if(hasbracket&&ss.contains(")")){
endbracket=true;
}
if(!hasbracket){
Tag tag=new Tag();
tag.setWord(result.substring(1,result.lastIndexOf(",")-1).trim().replaceAll("''","'"));
tag.setTag(result.substring(result.lastIndexOf(",")+3,result.length()-1).trim());
tag.setBeginpos(startpos);
//+1代表的是后面的空格
startpos=startpos+tag.getWord().length()+1;
tags.add(tag);
}else{
if(endbracket){
try{
Tag tag=new Tag();
tag.setWord(brackets.get(i));
tag.setTag("phrase");
tag.setBeginpos(startpos);
//+1代表的是后面的空格
startpos=startpos+tag.getWord().length();
tags.add(tag);
hasbracket=false;
i++;
}catch(Exception e){
System.out.println(sentence);
e.printStackTrace();
}
}
}
}
}
return tags;
}

 

 

 

 

 

 

 

 

 

 

posted @ 2013-02-01 18:00  6小贝  阅读(415)  评论(0编辑  收藏  举报