操作詞匯的庫很多nltk,jieba等等晴音,gensim處理語言步驟一般是先用gensim.utils工具包預處理,例如tokenize唯沮,gensim詞典官網(wǎng),功能是將規(guī)范化的詞與其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)
可以發(fā)現(xiàn),建立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,在多少文檔中出現(xiàn)}
print dictionary.dfs #字典泛粹,{單詞id遂铡,在多少文檔中出現(xiàn)}
巴西出現(xiàn)2個文檔中,法國晶姊、西班牙扒接、英格蘭只出現(xiàn)在一個文檔中
{0: 2, 1: 1, 2: 1, 3: 1}
文檔數(shù)目
print dic.num_docs #文檔數(shù)目
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
所有詞的個數(shù)
print dic.num_pos #所有詞的個數(shù)
6
每個文件中不重復詞個數(shù)的和(2+3)
print dic.num_nnz #每個文件中不重復詞個數(shù)的和
5
result為b文章轉換得到的詞袋,列表[(單詞id梦皮,詞頻)]
# allow_update:T or F,是否將b數(shù)據(jù)到字典中
# result返回b的詞袋結果炭分,list
# missing 丟失數(shù)據(jù),字典類型
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)