最近常听同事提及相关性分析,正巧看到这个google的开源库,并把相关操作与调试结果记录下来。
输出结果: 比较有意思的巧合是黄蓉使出打狗棒,郭靖就用了降龙十八掌,再后测试了名词的解析。
小说集可以百度《金庸小说全集 14部》全(TXT)作者:金庸 下载下来。
需要整理好格式,门派和武功名称之间需要有换行符,留意删除掉最后一行的空白区域。
下载完成后可以用自己习惯的工具或程序做相应调整,因语料内容太长,博客里面不允许"堆砌",所以没复制上来,有需要的可以再联系。
with open('names.txt') as f:
data = [line.strip() for line in f.readlines()]
novels = data[::2]
names = data[1::2] novel_names = {k: v.split() for k, v in zip(novels, names)}
//可以在这里打印下看是不是都读取过 //开始分词并加载
for _, names in novel_names.items():#.iteritems():(Python2的旧写法)
for name in names:
jieba.add_word(name)
with open("kongfu.txt",encoding='UTF-8') as f:
kungfu_names = [line.strip()
for line in f.readlines()]
with open("bangs.txt") as f:
bang_names = [line.strip()
for line in f.readlines()] for name in kungfu_names:
jieba.add_word(name) for name in bang_names:
jieba.add_word(name) novels = ["书剑恩仇录", "天龙八部","碧血剑","越女剑","飞狐外传","侠客行","射雕英雄传","神雕侠侣","连城诀","鸳鸯刀","倚天屠龙记","白马啸西风","笑傲江湖","雪山飞狐","鹿鼎记"]
//你知道的:飞雪连天射白鹿,笑书神侠倚碧鸳
sentences = [] for novel in novels:
with open('{}.txt'.format(novel),encoding='UTF-8') as f:
data = [line.strip()
for line in f.readlines()
if line.strip()]
for line in data:
words = list(jieba.cut(line))
sentences.append(words) model = gensim.models.Word2Vec(sentences,
size=200, #
window=5,
min_count=5,
workers=4)
//便于使用的方法
def get_gongfu(a, b, c):
d, _ = model1.most_similar(positive=[c, b], negative=[a])[0]
print (c,d)
//使用举例一
print ('-------------若黄蓉使出打狗棒法,郭靖会怎样?-------------------------')
get_gongfu("黄蓉","打狗棒法","郭靖")
print ('-------------若黄蓉拿着打狗棒,郭靖又会拿啥?-------------------------')
get_gongfu("黄蓉","打狗棒","郭靖")
输出结果:
-------------相关性:乔峰-------------------------
%% 虚竹 0.8226621747016907
%% 慕容复 0.809000551700592
%% 段正淳 0.808856725692749
%% 木婉清 0.7898266315460205
%% 童姥 0.7881260514259338
%% 袁承志 0.7863771915435791
%% 全冠清 0.7761101722717285
%% 谢烟客 0.7738543748855591
%% 俞莲舟 0.7663788199424744
%% 陆菲青 0.7651679515838623
-------------相关性:阿朱-------------------------
阿紫 0.8502078056335449
王语嫣 0.8323276042938232
木婉清 0.8188427090644836
方怡 0.81195068359375
钟灵 0.8042664527893066
仪琳 0.7905520796775818
青青 0.7837553024291992
香香公主 0.7774882316589355
盈盈 0.7765697836875916
马夫人 0.7628135681152344
-------------相关性:降龙十八掌-------------------------
打狗棒法 0.9099119901657104
太极拳 0.8792168498039246
空明拳 0.8742830157279968
绝招 0.864672064781189
一阳指 0.8576483726501465
蛤蟆功 0.8443030714988708
心法 0.8419612646102905
棒法 0.840523362159729
罗汉拳 0.838168740272522
小擒拿手 0.8356980085372925
-------------若黄蓉使出打狗棒法,郭靖会怎样?-------------------------
郭靖 降龙十八掌
-------------若黄蓉拿着打狗棒,郭靖又会拿啥?-------------------------
郭靖 令旗
输出结果: 比较有意思的巧合是黄蓉使出打狗棒,郭靖就用了降龙十八掌,再后测试了名词的解析。

模型参数:
Python文章相关性分析---金庸武侠小说分析-----

sentences:可以是一个·ist,对于大语料集,建议使用BrownCorpus,Text8Corpus或·ineSentence构建。
sg: 用于设置训练算法,默认为0,对应CBOW算法;sg=1则采用skip-gram算法。
size:是指特征向量的维度,默认为100。大的size需要更多的训练数据,但是效果会更好. 推荐值为几十到几百。
window:表示当前词与预测词在一个句子中的最大距离是多少
alpha: 是学习速率
seed:用于随机数发生器。与初始化词向量有关。
min_count: 可以对字典做截断. 词频少于min_count次数的单词会被丢弃掉, 默认值为5
max_vocab_size: 设置词向量构建期间的RAM限制。如果所有独立单词个数超过这个,则就消除掉其中最不频繁的一个。每一千万个单词需要大约1GB的RAM。设置成None则没有限制。
sample: 高频词汇的随机降采样的配置阈值,默认为1e-3,范围是(0,1e-5)
workers参数控制训练的并行数。
hs: 如果为1则会采用hierarchica·softmax技巧。如果设置为0(defau·t),则negative sampling会被使用。
negative: 如果>0,则会采用negativesamp·ing,用于设置多少个noise words
cbow_mean: 如果为0,则采用上下文词向量的和,如果为1(defau·t)则采用均值。只有使用CBOW的时候才起作用。
hashfxn: hash函数来初始化权重。默认使用python的hash函数
iter: 迭代次数,默认为5
trim_rule: 用于设置词汇表的整理规则,指定那些单词要留下,哪些要被删除。可以设置为None(min_count会被使用)或者一个接受()并返回RU·E_DISCARD,uti·s.RU·E_KEEP或者uti·s.RU·E_DEFAU·T的函数。
sorted_vocab: 如果为1(defau·t),则在分配word index 的时候会先对单词基于频率降序排序。
batch_words:每一批的传递给线程的单词的数量,默认为10000
最近常听同事提及相关性分析,正巧看到这个google的开源库,并把相关操作与调试结果记录下来。
小说集可以百度《金庸小说全集 14部》全(TXT)作者:金庸 下载下来。
需要整理好格式,门派和武功名称之间需要有换行符,留意删除掉最后一行的空白区域。
下载完成后可以用自己习惯的工具或程序做相应调整,因语料内容太长,博客里面不允许"堆砌",所以没复制上来,有需要的可以再联系。 备注:首先百度到《金庸小说全集 14部》全(TXT)作者:金庸 下载下来,然后读取内容,另:以上模型每次都训练了,

最新文章

  1. 洛谷 P2737 [USACO4.1]麦香牛块Beef McNuggets Label:一点点数论 && 背包
  2. js检测手机摇一摇
  3. noi 04:求整数的和与均值
  4. 大规模IP地址黑名单高性能查询实现
  5. Django 之Model(ORM)
  6. 【leetcode】Binary Tree Zigzag Level Order Traversal (middle)
  7. 【LeetCode OJ】Balanced Binary Tree
  8. Bean的作用域及生命周期
  9. Spring MVC无法获取ajax POST的参数和值
  10. 快速排序算法 Quick sort
  11. java求阶乘
  12. IIC模块TestBench的书写方法
  13. 06.04 html
  14. centos7网络配置总结
  15. percona-toolkit安装
  16. SQL入门(3):定义约束/断言assertion/触发器trigger
  17. Python开发——14.threading模块和multiprocess模块
  18. python3 特性
  19. 16位和32位的80X86汇编语言的区别
  20. Python 类的特殊成员介绍

热门文章

  1. 插入排序的代码实现(C语言)
  2. iOS核心动画高级技巧-2
  3. 领扣(LeetCode)字符串相加 个人题解
  4. 某些机root也不能访问dma-buf
  5. bert+seq2seq 周公解梦,看AI如何解析你的梦境?【转】
  6. ubuntu 16.04 和 windows 10系统安装mysql 允许远程访问 | mysql user guide on ubuntu 16.04 and windows 10
  7. ArcGIS Desktop10.4安装教程
  8. 网络图片的获取以及二级缓存策略(Volley框架+内存LruCache+磁盘DiskLruCache)
  9. 揭秘String类型背后的故事——带你领略汇编语言魅力
  10. Spring IOC 的简单使用