背景:因为要做一个项目,涉及到计算企业名称的相似度,以前用编辑距离算法效果不是很好,现在打算用下余弦相似度的方法,这个方法里面,需要计算词语的词频。
import jieba
import openpyxl
f= r'd:\temp\data.xlsx'
wb = openpyxl.load_workbook(f)
ws = wb.active
data = (i[0].value for i in ws['B2:B69697'])
#data= [
#'湖北晓晓工贸有限公司',
#'西安市依依扶贫开发有限公司',
#'广州市顺涛机械租赁有限公司',
#] # 可迭代对象
word_freq ={}
for i in data:
# 对i进行分词,得到一个集合
seg_dict = set(jieba.cut(i))
# 判断集合里的词是否在字典中,如果在,值=原值加1,如果不在,值等于1
for word in seg_dict:
if word_freq.get(word):
word_freq[word] += 1
else:
word_freq[word] = 1
print(word_freq)
我一共收集了69696条企业名称,对每个名称用结巴分词,并计算词频,最后得到结果。
输出结果:
{ '有限公司': 57318, '发展': 855, '水电': 182, '新南': 2, '科技': 2831, '分公司': 4186 ... '培训中心': 55}
其中“有限公司的”名称有57318个,占所有企业的82%,算是比较正常的。