JAVA基于正则表达式的模糊替换

示例: 输入字符串:黄家驹 alias KaKuiWong(英)Koma(日)、黄伯、黑仔、四眼仔 输出字符串:黄家驹 alias KaKuiWong、Koma、黄伯、黑仔、四眼仔 代码: String inputStr = inputStr.replaceAll(“\\((.)\\)”, “、”); 有时候我们需要对括号内部的长度进行限制,如只有长度在5以内才被判断为后缀信息,若长度很长,则可能是内容信息: 代码: String inputStr = inputStr.replaceAll(“\\((.{0,5})\\)”, “、”);

对HashMap中的Value或Key进行排序

以下函数段功能,对Map结构变量tagStatMap以Value为标准进行排序,然后存放到tagInfoList结构中。 //开始对Tag进行排序    List<Map.Entry<String, Integer>> tagInfoList =            new ArrayList<Map.Entry<String, Integer>>(tagStatMap.entrySet());    Collections.sort(tagInfoList, new Comparator<Map.Entry<String, Integer>>() {           @Override   public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {                  return (o2.getValue() - o1.getValue());             //return (o1.getKey()).toString().compareTo(o2.getKey());        }    });     for (int i = 0; i < tagInfoList.size(); i++) {        String tagStr = tagInfoList.get(i).getKey();        int tagFrq = tagInfoList.get(i).getValue();        tagStaticsWriter.write(tagFrq+“<->”+tagStr+“\n”);                    }  

使用Matlab计算各种距离Distance

计算距离的需求有两种:   一种是给定一个特征集合X,然后计算Pairwise距离矩阵,那么可使用D=pdist(X,distance)的方式;   另一种是给定两个对应的特征集合X和Y,然后计算X与Y对应的距离信息,使用D=pdist2(X,Y,distance)的方式; 需注意,2011版本以前的Matlab是没有pdist2.m文件的,而早期的pdist2.m文件中的距离计算方式也比较少,所以建议使用最新的Matlab版本,很重要。 其中,distance的定义有如下几种: 欧几里德距离Euclidean distance(‘euclidean’) 欧氏距离虽然很有用,但也有明显的缺点。 一:它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求。 二:它没有考虑各变量的数量级(量纲),容易犯大数吃小数的毛病。所以,可以先对原始数据进行规范化处理再进行距离计算。 标准欧几里德距离Standardized Euclidean distance(‘seuclidean’) 相比单纯的欧氏距离,标准欧氏距离能够有效的解决上述缺点。注意,这里的V在许多Matlab函数中是可以自己设定的,不一定非得取标准差,可以依据各变量的重要程度设置不同的值,如knnsearch函数中的Scale属性。 马哈拉诺比斯距离Mahalanobis distance(‘mahalanobis’) where C is the covariance matrix. 马氏距离是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧式距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧式距离,如果协方差矩阵为对角阵,则其也可称为正规化的欧氏距离. 马氏优缺点:   1)马氏距离的计算是建立在总体样本的基础上的,因为C是由总样本计算而来,所以马氏距离的计算是不稳定的;   2)在计算马氏距离过程中,要求总体样本数大于样本的维数。   3)协方差矩阵的逆矩阵可能不存在。 曼哈顿距离(城市区块距离)City block metric(‘cityblock’) Notice that the city block distance is … 继续阅读

找回Eclipse被删除的代码

使用Eclipse开发程序时,有时候会有意或无意删除掉自己本不想要的代码,但随之马上后悔。(或在U盘上直接编写代码,然后U盘损坏掉了的情况) 幸运的是,Eclipse可以短暂缓存一部分代码文件。找回方式如下: 1、选择误删除文件在eclipse所在Package(文件夹) 2、在Package上单击右键。 3、选择restore from local history… 4、在弹出的对话框中选择需要恢复的文件 此时,在右边可以看到缓存的多个版本,下面可以看到对应版本的代码。

利用JAVA计算TFIDF和Cosine相似度-学习版本

写在前面的话,既然是学习版本,那么就不是一个好用的工程实现版本,整套代码全部使用List进行匹配效率可想而知。 【原文转自】:http://computergodzilla.blogspot.com/2013/07/how-to-calculate-tf-idf-of-document.html,修改了其中一些bug。 P.S:如果不是被迫需要语言统一,尽量不要使用此工程计算TF-IDF,计算2W条短文本,Matlab实现仅是几秒之间,此Java工程要计算良久。。半个小时?甚至更久,因此此程序作为一个学习版本,并不适用于工程实现。。工程试验版本 For beginners doing a project in text mining aches them a lot by various term like : TF-IDF COSINE SIMILARITY CLUSTERING DOCUMENT VECTORS In my earlier post I showed you guys what is Cosine Similarity. I will not … 继续阅读

Java中的格式化输出,Formatter类的介绍

转载原文链接:http://www.itzhai.com/java-notes-java-in-the-formatted-output-formatter-class-presentation.html 我们知道C语言中有printf()这样的格式化函数,类似这样的: printf(“data: [%d %f]\n”, x, y); 1、Java中也提供了类似的格式化方法:System.out.format(); Java SE5引入的format方法可以用于PrintStream或PrintWriter对象(这里不介绍了),其中也包括System.out,下面就是一个使用例子: int x = 1; double y = 3.1415926; System.out.format(“data: [%d %f]\n”, x, y); 得到如下结果: data: [1 3.141593] 2、Formatter类: 在Java中所有新的格式化功能都由java.util.Formatter类处理。可将Formatter看做一个翻译器,将你的字符串翻译成需要的结果。 构造Formatter的时候,需要向其构造器传递一些信息,告诉最终的结果将向哪里输出: public class Message{ private String username; private Formatter f; public … 继续阅读