softwarerec/src/main/java/com/ow2/rec/util/Normalizer.java

85 lines
7.0 KiB
Java
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//Copyright (c) 2016 Yarong Zeng, NUDT.
package com.ow2.rec.util;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;
public class Normalizer {
public static String removeVersion(String str){
//现在对于2.45还不能处理,也就是点后边两个连续的后缀
return str.replaceAll("\\-*\\d+(\\.[\\d|x|X])*$","");
}
//对字符串进行规整,去除版本号后缀和连接符等
public static String normalize(String str) {
//目前可能会删除掉一些确实以数字结尾的项目;在停用词里添加‘-
return str.replaceAll("[\\-]+"," ").replaceAll("'s"," ").replaceAll("[^0-9a-zA-Z\u4E00-\u9FA5]"," ").toLowerCase().trim();
}
public static List<String> getTagList(String text) {
List<String> tmpTagList = new ArrayList<String>();
//String tagstr = text.substring(1, text.length()-1);
String tagstr = text.replaceAll("[<>]", "");
if(tagstr.isEmpty())
return null;
String [] tmpArray = tagstr.split(",");
Collections.addAll(tmpTagList, tmpArray);
return tmpTagList;
}
public static void main(String []args) {
String content = "大声道Corvette123 *&%9&^&%&^%(*_asd's_12 L'Aur--ore, 1766-1775";
int a = 1 + 11000/11000;
String targetTableName = "relative_memo_to_open_source_projects_" + a;
String result = content.replaceAll("[^0-9a-zA-Z]"," ");
String str = "reverse-proxy,osx,iterator,freetext,text,laptop,userscripts,rest,datetime,keyboard-shortcuts,voting,unicode,mysql,internationalization,greasemonkey,row,noscript,java-ee,monitor,parameters,macros,flash,exception-handling,controls,api-design,environment,etag,condition,model-view-controller,rounded-corners,clr,wmd,count,crash,string,error-handling,design-patterns,python,internet-explorer,c++,load-balancing,ms-word,csrf,stateserver,tagging,xss,silverlight,fonts,median,yield,qa,visual-studio,release,entropy,security,windows-server-2008,pcre,hashtable,.net,memory-leaks,twitter,release-management,web-services,add-in,operating-system,table,seo,escaping,web-applications,gmail,windows-server-2003,hpricot,numberformat,updatecheck,kindle-kdk,sql-server-2005,language-features,friendly-url,formatting,hashbang,build-process,hash,tags,windows-vista,javascript,delegates,mobile-website,google-search-api,statistics,windows,crc32,css-border-radius,configuration,slug,tuning,comparison,search,dotnetopenauth,ssl,url-rewrite-module,vb.net,modularity,vbscript,comet,language-design,estimation,com,benchmarking,file-io,outlook,markdown,firefox,datediff,web-standards,web-config,cocoa,apache,version-control,licensing,linux,diff,validation,regex,asp.net-mvc,java,compression,spam,outlook-vba,shebang,perl,visual-studio-2008,iphone,maintenance,memory,visual-studio-2003,aggregate-functions,framebusting,memorystream,iis,google-chrome,c#,cross-browser,database-tools,precision,linq,automatic-properties,fragment-identifier,overflow,editing,ruby,serializable,tfs,jquery,floating-point,exception,phpmailer,arrays,require,voice-recording,excel-vba,database-design,mobile,optimization,openstv,iframe,cocoa-touch,kindle,gaps-and-islands,deadlock,powershell,web-api,browser,build-automation,project-management,conferences,scan,process,hardware,captcha,full-text-search,ergonomics,locking,mouse,objective-c,tuplizer,incoming-mail,https,asp.net,sql-server,excel,sinatra,lamp,html,split,.net-3.5,performance,nhibernate,string.format,css,templates,openid,http,internet-explorer-8,transactions,url-rewriting,indexing,categories,deflate,gzip,xcode,iis-7,sql,date,php,tsql,audio,reflection,algorithm,database,url,spam-prevention,http-status-code-404,visual-studio-team-system,html-sanitizing,caching,language-agnostic,lambda,interface,cpu";
String str1 = "<cocoa,build-automation,string.format,language-agnostic,pcre,laptop,serializable,require,java-ee,updatecheck,spam,ms-word,process,exception,maintenance,voice-recording,vb.net,memorystream,performance,deadlock,linq,benchmarking,sql,iis,comet,file-io,openstv,regex,monitor,iframe,entropy,statistics,security,environment,flash,release,windows-vista,language-design,configuration,asp.net-mvc,.net,compression,rounded-corners,google-chrome,search,fonts,tuning,project-management,tuplizer,automatic-properties,database,freetext,parameters,web-config,split,php,web-api,conferences,tagging,css,.net-3.5,crc32,database-design,cross-browser,incoming-mail,precision,lambda,language-features,kindle-kdk,browser,editing,gmail,fragment-identifier,scan,javascript,apache,powershell,hardware,ruby,visual-studio,userscripts,gzip,seo,dotnetopenauth,excel-vba,design-patterns,gaps-and-islands,escaping,algorithm,internet-explorer,modularity,voting,date,ergonomics,sinatra,audio,sql-server-2005,web-applications,internationalization,html,keyboard-shortcuts,controls,clr,macros,framebusting,firefox,http-status-code-404,c#,python,outlook-vba,web-services,csrf,https,median,unicode,url-rewrite-module,noscript,api-design,datediff,hashbang,greasemonkey,sql-server,datetime,memory,tsql,rest,nhibernate,tags,visual-studio-2003,delegates,vbscript,com,stateserver,css-border-radius,database-tools,arrays,transactions,text,perl,url,categories,crash,interface,overflow,ssl,row,http,captcha,deflate,google-search-api,mobile,markdown,memory-leaks,internet-explorer-8,reflection,phpmailer,xss,twitter,objective-c,licensing,string,url-rewriting,floating-point,operating-system,version-control,optimization,tfs,wmd,caching,hash,friendly-url,formatting,count,java,yield,visual-studio-team-system,cocoa-touch,model-view-controller,jquery,diff,mobile-website,iis-7,silverlight,c++,mysql,estimation,mouse,slug,locking,outlook,kindle,exception-handling,qa,html-sanitizing,build-process,lamp,spam-prevention,validation,error-handling,osx,hpricot,numberformat,hashtable,cpu,aggregate-functions,load-balancing,windows-server-2003,table,iterator,etag,asp.net,full-text-search,reverse-proxy,openid,comparison,excel,linux,iphone,shebang,add-in,visual-studio-2008,windows,templates,condition,indexing,release-management,xcode,web-standards,windows-server-2008>";
System.out.println(getTagList(str).size());
System.out.println(getTagList(str1).size());
// for(int i = 0;i< getTagList(str).size();i++){
// System.out.println(getTagList(str).get(i));
// }
}
public static boolean isAllNumber(String checkStr) {
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher(checkStr);
return isNum.matches();
}
// 标签分离函数
public static List<String> tagsSegmentation(String tags) {
List<String> tag = new ArrayList<String>();
if (tags != null) {
String regex = "<[^<>]*>";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(tags);
while (matcher.find()) {
String t = matcher.group();
t = t.substring(1, t.length() - 1);
tag.add(t);
}
}
return tag;
}
}