信息熵
即信息杂乱程度.计算公式为Σp(x) * log p(x)
互信息
表示表示两信息的关联程度.计算公式为p(x,y)/p(x)*p(y)
1.词频统计
实现:
改进:
2.TF-IDF
实现
计算公式:
适合场景
3.textrank
实现过程:
Java–核心代码实现(此处参照HanLP)
for (int i=0; i<max_iter;++i)
{
Map<String, Float> m = new HashMap<String, Float>();
float max_diff = 0;
for (Map.Entry<String, Set> entry: words.entrySet()))//words为单词到邻居节点的映射
{
String key = entry.getKey();
Set value = entry.getValue();
m.put(key, 1-d);//根据公式,节点的值设置为1-d,而后迭代更新
for (String element:value):
{
int size = word.get(element).size();//某节点邻接节点的邻接节点个数。有点拗口,分局公式,要计算某节点的权值,就需要知道其每个邻接节点有多少个邻接节点
if(key.equals(element) || size == 0) continue;//如果某节点与其邻接节点相同或者邻接节点没有邻接节点,则不进行后面的计算
m.put (key, m.get(key) + d/size*(score.get(element) == null? 0:score.get(element)))//根据前面的公式,循环迭代。其中score存放的是上一次循环计算结果
}
max_diff = Math.max(max_diff,Math.abs(m.get(key) - (score.get(key) == null ? score.get(key))))//两次计算的权重的最大值小于阈值,则停止迭代