如何衡量词语包含信息的多少(词频统计分析)

如何衡量词语包含信息的多少(词频统计分析)

今天研究了一个有趣的算法,这个算法可以用来计算一段文本中每个词的权重。

是通过什么样的方式计算出每个词的权重的?

有这样的一句话:“《吐槽大会》那么火,来个段子合集,整理出来,传播会怎么样?”

如何统计每个词的权重?

统计权重的思路是这样的

  1. 剔除Delimiters 定界符
  2. 使用Jieba分词做分词
  3. 创建词关联的图
  4. 使用pagerank算法计算出权重

剔除Delimiters 定界符

确定定界符有以下这些

sentence_delimiters = [‘?’, ‘!’, ‘;’, ‘?’, ‘!’, ‘。’, ‘;’, ‘……’, ‘…’, ‘\n’]

文本剔除定界符之后就变成
'《吐槽大会》那么火,来个段子合集,整理出来,传播会怎么样'

使用Jieba分词做分词

使用jieba分词做完分词之后,输出的结果。

# 过滤停止词,过滤词性
words_all_filters = {list} <class 'list'>: [['吐', '大会', '火', '段子', '合集', '整理出来', '传播', '会']]
# 没有过滤停止词,没有过滤词性
words_no_filter = {list} <class 'list'>: [['吐', '槽', '大会', '那么', '火', '来', '个', '段子', '合集', '整理出来', '传播', '会', '怎么样']]
# 没有过滤停止词,过滤词性
words_no_stop_words = {list} <class 'list'>: [['吐', '槽', '大会', '火', '段子', '合集', '整理出来', '传播', '会']]

创建词关联的图

使用words_all_filters构建图的节点,使用words_no_stop_words来构建节点之间的边。
按照分词后,每个词出现的次序标上序号。

word_index = <class 'dict'>: {'吐': 0, '大会': 1, '火': 2, '段子': 3, '合集': 4, '整理出来': 5, '传播': 6, '会': 7}

graph = np.zeros((words_number, words_number))

# 会创建一个8*8的矩阵
如果word_list是下面这个数组:
['吐', '大会', '火', '段子', '合集', '整理出来', '传播', '会']

那么 *combine(word_list, window)* 函数中的zip方法会将word_list变成下面这样的内容。

('吐', '大会')
('大会', '火')
('火', '段子')
('段子', '合集')
('合集', '整理出来')
('整理出来', '传播')
('传播', '会')
以小的那个数组为准,压缩合并的时候。

以 ('吐', '大会’)为例,如果两个字都在word_index中,那么graph中0,1和1,0位置都会变成1。

使用pagerank算法计算出权重

使用networkx的pagerank算法计算出每个词的权重。

networkx
Networkx 是一个 Python 包,用于创建、操作和研究复杂网络的结构、动态和功能。
项目的地址:NetworkX — NetworkX


nx_graph = nx.from_numpy_matrix(graph)
scores = nx.pagerank(nx_graph, **pagerank_config)          # this is a dict
sorted_scores = sorted(scores.items(), key = lambda item: item[1], reverse=True)


<class 'list'>: [(6, 0.16490795878329761), (2, 0.16490795878329756), (5, 0.15652499422860283), (3, 0.1565249942286028), (4, 0.1540263918376574), (7, 0.09106434057976046), (1, 0.09106434057976043), (0, 0.020979020979020983)]

<class 'list'>: [{'word': '传播', 'weight': 0.16490795878329761}, {'word': '火', 'weight': 0.16490795878329756}, {'word': '整理出来', 'weight': 0.15652499422860283}, {'word': '段子', 'weight': 0.1565249942286028}, {'word': '合集', 'weight': 0.1540263918376574}, {'word': '会', 'weight': 0.09106434057976046}, {'word': '大会', 'weight': 0.09106434057976043}, {'word': '吐', 'weight': 0.020979020979020983}]

最终统计出来,“《吐槽大会》那么火,来个段子合集,整理出来,传播会怎么样?”这句话中权重最高的词是传播

权重越高意味着什么?
权重越高意味着这个词越重要,越重要意味着包含越多的信息。

后记

项目中的一些代码。

self.keywords = util.sort_words(_vertex_source, _edge_source, window = window, pagerank_config = pagerank_config)

_vertex_source
_edge_source

是两个数组,存放着使用jieba分词后的分词。

_vertex_source默认的设置是words_all_filters
使用停止词来过滤
基于词性进行过滤

Google search algorithm也是这个pagerank算法。最早被google用于做网页的排序。

用来标记每个词的权重的时候用到了一个图算法,PageRank - 维基百科,自由的百科全书

其基本假设是:更重要的页面往往更多地被其他页面引用(或称其他页面中会更多地加入通向该页面的超链接)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容