用textRank计算文档特征词权重
n-gram算法。假设有个可见视窗从左到右在文档分词列表X上滑动,定义滑窗宽度为3,每次都可以在视窗内看到三个连续的词,规定这3个词彼此相邻,特征词作为结点,相互之间用边连接起来,对应邻接矩阵元素为1。
视窗每次滑动一个词,直到X的右端,这样就可以把所有词语的邻接关系都找出来。因为文档内可能有重复的词语,所以不同词语结点的连接数可能不一样,导致每个词语结点权重会不一样。建构好词结点的邻接矩阵后,就可以应用textRank算法计算每个词语权重了。
在textRank算法里,使用n-gram算法把分词文档X转化为词语节点之间邻接矩阵M,是一个很关键的文档向量化步骤。
textRank与pageRank只是结点来源上有区别,前者由文档特征词之间建立关联,生成邻接矩阵;后者是网页之间引用关系建立网络,转为邻接矩阵。有了矩阵后,后续基于矩阵之上的迭代计算,区别就不大了。
《桃花庵遇仙记》唐伯虎
那时那日此门中,桃花树下初相逢。
只见仙人种桃树,未闻仙人看花红。
朝朝期待仙人顾,日日桃花笑春风。
忽闻仙踪一朝至,桃花人面分外红。
桃花谷里桃花仙,桃花美人树下眠。
花魂酿就桃花酒,君识花香皆有缘。
美酒消愁愁不见,醉卧花下枕安然。
花中不知日月短,岂料世上已千年。
不入浊世凡尘染,情愿枝头做花仙。
春来三月香风送,便是花奴问君安。
文档分词列表doc_tokens(人工分词,仅作实验)
桃花相逢仙人桃树仙人期待仙人桃花春风仙踪桃花人面桃花花仙桃花美人花魂桃花花香有缘美酒消愁世上千年浊世凡尘情愿花仙.split()
特征词汇表Vocabulary(去重后20个词)
[千年,花香,花魂,桃树,仙踪,桃花,花仙,有缘,美酒,消愁,世上,浊世,期待,相逢,情愿,春风,凡尘,仙人,美人,人面]
应用n-gram算法,取滑动视界宽度为3,滑动视界内的词语互为邻接,由此构造(20×20)邻接矩阵M:
#去空格后符串得到s,用于生成邻接矩阵M
s=
010001000010
0000
0001
1011
1000
0100
0100
0001
0000
1001
00010000
.replace(\n,)
importnumpyasnp
defnpmat(s):
#由01字符串转为n×n矩阵
n=int(np.sqrt(len(s)))
ifn*n==len(s):
returnnp.mat(.join(s)).reshape(n,n)
else:
returnFalse
#从矩阵数据集导入textrank_A,textrank_tokens
textrank_A=npmat(
010001000010
0000
0001
1011
1000
0100
0100
0001
0000
1001
00010000
.replace(\n,))
textrank_tokens=[千年,花香,花魂,桃树,仙踪,桃花,花仙,有缘,美酒,消愁,世上,浊世,期待,相逢,情愿,春风,凡尘,仙人,美人,人面]
#程序代码
#-*-coding:utf-8-*-
"""
CreatedonMonApr:56:
title:PageRank计算文档特征词权重author:daweifang"""
importsys
sys.path.append(rD:\utils)
from矩阵应用importpageRank
from矩阵数据集importtextrank_AasA,textrank_tokensasV
《桃花庵遇仙记》唐伯虎
那时那日此门中,桃花树下初相逢。
只见仙人种桃树,未闻仙人看花红。
朝朝期待仙人顾,日日桃花笑春风。
忽闻仙踪一朝至,桃花人面分外红。
桃花谷里桃花仙,桃花美人树下眠。
花魂酿就桃花酒,君识花香皆有缘。
美酒消愁愁不见,醉卧花下枕安然。
花中不知日月短,岂料世上已千年。
不入浊世凡尘染,情愿枝头做花仙。
春来三月香风送,便是花奴问君安。
#Vocabulary=[千年,花香,花魂,桃树,仙踪,桃花,花仙,有缘,美酒,消愁,世上,浊世,期待,相逢,情愿,春风,凡尘,仙人,美人,人面]
#main
if__name__==__main__:
pageRank(A,V)
#运行结果
textRank特征词权重↓
[桃花]:0.
[仙人]:0.
[花仙]:0.
[浊世]:0.
[凡尘]:0.
[千年]:0.
[世上]:0.
[消愁]:0.
[美酒]:0.
[花香]:0.
[有缘]:0.
[桃树]:0.
[情愿]:0.
[仙踪]:0.
[期待]:0.
[相逢]:0.
[春风]:0.
[人面]:0.
[花魂]:0.
[美人]:0.
预览时标签不可点收录于话题#个上一篇下一篇转载请注明:http://www.sonphie.com/lcbx/14231.html