计算出每个词的信息熵可以用来作为词的权重,信息熵公式是:
W代表该词,p代表该词左右出现的不同词的数目。
比如现在某篇文章中出现了两次 A W C, 一次B W D
那么W的左侧信息熵为:
2/3表示词组A在3次中出现了2次,B只出现了一次,故为1/3.
W右侧的信息熵也是一样的。如果是A W C, B W C
那么W右侧就是0,因为是 -1log(1)。
对所有的词计算左右信息熵,如果某个词的左右信息熵都很大,那这个词就很可能是关键词。
以下是我用java实现的计算信息熵的代码。
输入是分好的词,输出是词和对应的信息熵值。
package word.weight;
import java.util.ArrayList;
import java.util.List;
import java.util.TreeSet;
/**
* 计算句子中每个词的信息熵
*
* @author Administrator
*
*/
public class GetWordEntropy {
public static void main(String[] args) {
// TODO Auto-generated method stub
String sentence = "今天 下雨 北京 鲁迅 北京 上海 下雨";
String[] words = sentence.split("\t");
CalculateWordEntropy(words);
}
public static void CalculateWordEntropy(Str