gensim,dictionary

操作词汇的库很多nltk,jieba等等,gensim处理语言步骤一般是先用gensim.utils工具包预处理,例如tokenizegensim词典官网,功能是将规范化的词与其id建立对应关系

from gensim.corpora.dictionary import Dictionary
def print_dict(dic):
    for key in dic:
        print key,dic[key]
a = [[u'巴西',u'巴西',u'英格兰'],[u'巴西',u'西班牙',u'法国']]
b = [u'巴西',u'巴西',u'比利时',u'法国',u'法国']
# a用来构造词典
dic = Dictionary(a)

输出字典

print dic
print print_dict(dic)

可以发现,建立id与token一一映射

########dictionary信息##########
Dictionary(4 unique tokens: [u'\u6cd5\u56fd', u'\u5df4\u897f', u'\u897f\u73ed\u7259', u'\u82f1\u683c\u5170'])
2 法国
0 巴西
3 西班牙
1 英格兰

字典,{单词id,在多少文档中出现}

print dictionary.dfs #字典,{单词id,在多少文档中出现}

巴西出现2个文档中,法国、西班牙、英格兰只出现在一个文档中

{0: 2, 1: 1, 2: 1, 3: 1}

文档数目

print dic.num_docs #文档数目
print_dict(dict(dic.items()))
 2
0 巴西
1 英格兰
2 法国
3 西班牙

字典,{单词id,对应的词}

print_dict(dic.id2token) #字典,{单词id,对应的词}
字典,{单词id,对应的词}
0 巴西
1 英格兰
2 法国
3 西班牙

字典,{词,对应的单词id}

print_dict(dic.token2id) #字典,{词,对应的单词id}
法国 2
巴西 0
西班牙 3
英格兰 1

所有词的个数

print dic.num_pos #所有词的个数
6

每个文件中不重复词个数的和(2+3)

print dic.num_nnz #每个文件中不重复词个数的和
5

result为b文章转换得到的词袋,列表[(单词id,词频)]

# allow_update:T or F,是否将b数据到字典中
# result返回b的词袋结果,list
# missing 丢失数据,字典类型
result, missing = dic.doc2bow(b, allow_update=False, return_missing=True)
print "词袋b,列表[(单词id,词频)]"
print result
print_dict(dic)
print_dict(missing)
词袋b,列表[(单词id,词频)]
[(0, 2), (2, 2)]
2 法国
0 巴西
3 西班牙
1 英格兰
比利时 1

输出词袋信息

print "########bow信息##########"
for _, freq in result:
    print _, dic.id2token[_], freq
0 巴西 2
2 法国 2

过滤文档频率大于no_below,小于no_above*num_docs的词

print "########dictionary信息##########"
# 过滤文档频率大于no_below,小于no_above*num_docs的词
dic.filter_extremes(no_below=1, no_above=0.5, keep_n=10)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JavaEdge

Java 泛型解惑之<? extends T>和<? super T>

使用泛型的过程中,经常出现一种很别扭的情况 比如我们有Fruit类,和它的派生类Apple

7872
来自专栏IMWeb前端团队

简洁的javascript编码(一)--变量、函数

本文作者:IMWeb jaychen 原文出处:IMWeb社区 未经同意,禁止转载 ? 一、变量 使用语义化的变量名称 Bad cons...

2479
来自专栏草根专栏

使用 C# (.NET Core) 实现模板方法模式 (Template Method Pattern)

本文的概念内容来自深入浅出设计模式一书. 项目需求 有一家咖啡店, 供应咖啡和茶, 它们的工序如下: ? 咖啡: ? 茶: ? 可以看到咖啡和茶的制作工序是差不...

3734
来自专栏王清培的专栏

.NET重构(类型码的设计、重构方法)

阅读目录: 1.开篇介绍 2.不影响对象中的逻辑行为(枚举、常量、Entity子类来替代类型码) 3.影响对象中的逻辑行为(抽象出类型码,使用多态解决) 4.无...

2147
来自专栏数说工作室

【SAS Says】基础篇:3. 描述数据

本节介绍如何利用SAS写一份数据报告,给出数据的基本信息。 从3.11开始的内容,是留给处女座的,主要说如何用proc tabulate和proc report...

33710
来自专栏嵌入式程序猿

sizeof应用的小陷阱

本篇笔记主要介绍在项目开发中,使用sizeof的一个要注意的地方。分别在8位机microchip PIC18F46K22, 16位机microchip ds...

3648
来自专栏.net core新时代

拓扑排序及其实际应用

  最近在做实际项目中遇到了一个问题,如何判断一个层级结构的图是否存在循环引用。刚开始想到了方法是用递归进行判断,后来想到大学学过的拓扑排序可以解决该问题,于是...

2635
来自专栏专知

关关的刷题日记76 – Leetcode 234. Palindrome Linked List

关关的刷题日记76 – Leetcode 234. Palindrome Linked List 题目 Given a singly linked list, ...

3269
来自专栏玄魂工作室

Python黑帽编程2.1 Python编程哲学

本节的内容有些趣味性,涉及到很多人为什么会选择Python,为什么会喜欢这门语言。我带大家膜拜下Python作者的Python之禅,然后再来了解下Python的...

3137
来自专栏HansBug's Lab

3038: 上帝造题的七分钟2

3038: 上帝造题的七分钟2 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 662  Solved: 302...

2854

扫码关注云+社区

领取腾讯云代金券