文档章节

利用word分词通过计算词的语境来获得相关词

杨尚川
 杨尚川
发布于 2015/05/21 18:22
字数 2901
阅读 1379
收藏 31

我们如何通过计算词的语境来获得相关词呢?


语境的定义是:在一段文本中,任意一个词的语境由它的前N个词和后N个词组成。


相关词的定义是:如果两个词的语境越相似,那么这两个词就越相似,也就越相关。


算法由两个步骤组成:

1、从大规模语料库中计算每一个词的语境,并使用词向量来表示语境。实现代码

2、把求两个词的相似度的问题转换为求这两个词的语境相似度的问题。通过计算语境的相似度,就可得到词的相似度,越相似的词就越相关。实现代码 关于相似度计算,word分词还提供了很多种算法,参考这里


使用方法如下:

1、使用word分词内置语料库:运行word分词项目根目录下的脚本 demo-word-vector-corpus.bat 或 demo-word-vector-corpus.sh

2、使用自己的文本内容:运行word分词项目根目录下的脚本 demo-word-vector-file.bat 或 demo-word-vector-file.sh


由于语料库很大,所以启动的时间会很长,请耐心等待,下面以例子来说明:

比如我们想分析 兰州 这个词的相关词有哪些,我们运行脚本 demo-word-vector-corpus.sh ,启动成功之后命令行提示:

开始初始化模型
模型初始化完成
可通过输入命令sa=cos来指定相似度算法,可用的算法有:
   1、sa=cos,余弦相似度
   2、sa=edi,编辑距离
   3、sa=euc,欧几里得距离
   4、sa=sim,简单共有词
   5、sa=jac,Jaccard相似性系数
   6、sa=man,曼哈顿距离
   7、sa=shh,SimHash + 汉明距离
可通过输入命令limit=15来指定显示结果条数   
可通过输入命令exit退出程序
输入要查询的词或命令:

我们输入 兰州 后回车,结果显示:

兰州 的相关词(EditDistanceTextSimilarity):
----------------------------------------------------------
	1、兰州 1.0
	2、北京 0.21
	3、福州 0.2
	4、太原 0.19
	5、成都 0.17
	6、西安 0.17
	7、哈尔滨 0.17
	8、南宁 0.17
	9、贵阳 0.16
	10、庆阳 0.15
	11、沈阳 0.14
	12、合肥 0.14
	13、大同 0.14
	14、拉萨 0.13
	15、西宁 0.13
----------------------------------------------------------

这里显示的结果就是 兰州 这个词的相关词,词后面跟的是相关度分值,兰州 和 兰州 是同一个词,相关度百分之百,自然是1分。

从这个结果我们来分析,这些词凭什么相关呢?线索在哪里?

首先这些词的词性都是名词;

其次这些词都是地名而且是大城市名;

从这里我们也可以看到一个有意思的现象,同一词性比如地名的用法往往保持一致。

相关词是从语境推导得到的,语境中词后面跟的数字是权重,权重是1/N的累加值,下面我们看看这些词的语境:

兰州 : [军区 1.0, 甘肃 0.78205127, 新区 0.7692308, 大学 0.42307693, 甘肃兰州 0.41025642, 货车 0.3846154, 西安 0.32051283, 本报 0.2948718, 新华社 0.2820513, 兰州新区 0.26923078, 召开 0.23076923, 发往 0.21794872, 中国 0.20512821, 兰州 0.20512821, 火车站 0.20512821, 铁路 0.17948718, 参加 0.15384616, 西宁 0.15384616, 方向 0.15384616, 成都 0.14102565, 警察 0.14102565, 建设 0.12820514, 市委 0.12820514, 来到 0.12820514, 一家 0.12820514, 中心 0.115384616, 炼油厂 0.102564104, 进入 0.102564104, 来自 0.102564104, 举行 0.102564104]    
北京 : [新华社 1.0, 本报 0.7119143, 举行 0.19384204, 上海 0.17831326, 时间 0.16385542, 铁路局 0.1394913, 西站 0.13226238, 青年报 0.12717536, 晨报 0.11700134, 市委 0.1145917, 地区 0.11218206, 召开 0.10200803, 城市 0.08299866, 目前 0.07951807, 来到 0.06961178, 军区 0.06827309, 国际 0.066398926, 中心 0.063453816, 北京时间 0.06184739, 人民 0.059973225, 工作 0.05863454, 地铁 0.057563588, 北京铁路局 0.056492638, 医院 0.055421688, 飞往 0.05381526, 首都 0.053547524, 中国 0.053547524, 其中 0.05274431, 今天 0.052208837, 卫视 0.05167336]
福州 : [火车站 1.0, 新区 0.46666667, 福州火车站 0.45555556, 晚报 0.2962963, 记者 0.2777778, 打工 0.27407408, 来到 0.24814814, 市民 0.23333333, 本报 0.22222222, 大学 0.21851853, 市区 0.2074074, 市委 0.19259259, 举行 0.19259259, 鼓楼区 0.18518518, 网友 0.18148148, 到达 0.17037037, 开往 0.16296296, 目前 0.14074074, 分行 0.14074074, 一家 0.12962963, 全市 0.12962963, 东街口 0.12222222, 福州晚报 0.12222222, 新华社 0.11851852, 铁路 0.11851852, 召开 0.11481482, 前往 0.11481482, 发展 0.11481482, 推进 0.11111111, 福州 0.11111111]  
太原 : [山西 1.0, 山西太原 0.6136364, 本报 0.39772728, 新华社 0.3409091, 火车站 0.26136363, 济南 0.25, 铁路 0.23863636, 北京 0.22727273, 推出 0.1590909, 国际 0.1590909, 返回 0.14772727, 刚玉 0.13636364, 来自 0.13636364, 发布 0.13636364, 打工 0.125, 中心 0.125, 市委 0.11363637, 银行 0.11363637, 铁路局 0.10227273, 西安 0.09090909, 集团 0.09090909, 公安 0.09090909, 开往 0.09090909, 比如 0.07954545, 金融 0.07954545, 火车票 0.07954545, 大同 0.06818182, 山西省 0.06818182, 军分区 0.06818182, 离开 0.06818182]
成都 : [商报 1.0, 成都商报 0.4117647, 军区 0.1875, 铁路局 0.17830883, 北京 0.17463236, 本报 0.17095588, 重庆 0.15441176, 告诉 0.15441176, 交警 0.14338236, 方向 0.1360294, 记者 0.13419117, 平原 0.121323526, 四川 0.1194853, 长沙 0.11764706, 理工大学 0.0992647, 来自 0.09375, 新华社 0.09191176, 开往 0.090073526, 成都铁路局 0.08455882, 铁路 0.080882356, 召开 0.07904412, 市民 0.075367644, 市委 0.073529415, 公司 0.07169118, 广州 0.07169118, 西安 0.0680147, 郫县 0.060661763, 打工 0.060661763, 市区 0.05882353, 晚报 0.05882353]
西安 : [火车站 1.0, 事变 0.75, 交通 0.7058824, 建设 0.5882353, 地铁 0.5882353, >咸阳 0.5588235, 来到 0.5294118, 市民 0.50735295, 大学 0.5, 铁路 0.5, 代表团 0.5, 铁路局 0.49264705, 公司 0.4852941, 武汉 0.4632353, 曲江 0.44117647, 供电 0.42647058, 新华社 0.4117647, 西安火车站 0.4117647, 北京 0.3602941, 交大 0.3602941, 本报 0.34558824, 西安事变 0.3382353, 城市 0.31617647, 城区 0.31617647, 落户 0.30882353, 市委 0.29411766, 国际 0.2867647, 城东 0.2867647, 成都 0.2720588, 举行 0.25] 
哈尔滨 : [理工大学 1.0, 火车站 0.41584158, 哈尔滨理工大学 0.36138615, 工业 0.25742576, 方向 0.23762377, 新华社 0.20792079, 开往 0.18811882, 哈尔滨火车站 0.18316832, 位于 0.17821783, 大学 0.17326732, 铁路局 0.15841584, 来自 0.15346535, 最低 0.14356436, 北京 0.12871288, 本报 0.12376238, 黑龙江省 0.12376238, 发布 0.11386139, 中国 0.10891089, 飞往 0.0990099, 黑龙>江 0.08415841, 沈阳 0.07920792, 工程 0.07920792, 附近 0.074257426, 市委 0.06930693, 飞机 0.06930693, 上海 0.06930693, 考生 0.06930693, 进入 0.06930693, 停止 0.06930693, 经济 0.06435644]
南宁 : [广西 1.0, 铁路局 0.8, 广西南宁 0.62222224, 本报 0.54444444, 新华社 0.36666667, 南宁铁路局 0.31111112, 市委 0.26666668, 柳州 0.18888889, 桂林 0.17777778, 铁路 0.15555556, 兴>宁区 0.14444445, 来到 0.11111111, 开往 0.11111111, 前往 0.11111111, 公安 0.11111111, 工作 0.11111111, 运往 0.11111111, 城市 0.08888889, 美丽 0.08888889, 召开 0.08888889, 从事 0.08888889, 官塘 0.08888889, 楼市 0.08888889, 分局 0.07777778, 南宁市委 0.07777778, 动车 0.07777778, 发生 0.07777778, 举行 0.07777778, 西乡 0.06666667, 市长 0.06666667]
贵阳 : [本报 1.0, 重庆 0.73333335, 新华社 0.46666667, 方向 0.43333334, 前往 0.4, 哥俩 0.4, 城区 0.4, 老家 0.33333334, 西安 0.26666668, 成都 0.26666668, 街头 0.26666668, 晚报 0.26666668, 无关 0.26666668, 杭州 0.23333333, 涉及 0.2, 以及 0.2, 市内 0.2, 网友 0.2, 郑州 0.16666667, 南宁 0.16666667, 长沙 0.16666667, 武汉 0.16666667, 摆摊 0.16666667, 市委 0.13333334, 昆明 0.13333334, 安顺 0.13333334, 来到 0.13333334, 争霸 0.13333334, 四强 0.13333334, 铁路 0.13333334]
庆阳 : [甘肃 1.0, 甘肃庆阳 0.8, 甘肃省 0.4, 地区 0.4, 老区 0.3, 森林 0.2, 平凉 0.2, 镇远县 0.1, 革命 0.1, 韩凤廷 0.1, 交通处 0.1, 兰州森林大队 0.1, 大队 0.1, 兰州 0.1, 西峰 0.1, 发>送 0.1, 一辆 0.1, 牌照 0.1, 来自 0.1]
沈阳 : [军区 1.0, 晚报 0.5123967, 方向 0.3181818, 本报 0.27272728, 沈阳晚报 0.23553719, 新华社 0.20661157, 沈阳军区 0.18595041, 军区队 0.15289256, 海狮队 0.14876033, 自动化所 0.14049587, 此次 0.14049587, 经济区 0.1322314, 中国 0.12809917, >大连 0.12809917, 大爷 0.12809917, 市委 0.12396694, 一家 0.11570248, 高速 0.11570248, 国际 0.11157025, 火车票 0.11157025, 法库 0.10743801, 大学 0.10330579, 长春 0.10330579, 直达 0.09917355, 深圳 0.09090909, 上海 0.08677686, 记者 0.08677686, 海狮 0.08264463, 大妈 0.08264463, 两位 0.08264463]  
合肥 : [火车站 1.0, 市民 0.8181818, 市区 0.53333336, 楼市 0.4848485, 合肥火车站 0.4121212, 铁路 0.38787878, 安徽 0.36969697, 到达 0.36363637, 市场 0.34545454, 上周 0.3030303, 芜湖 0.2969697, 召开 0.28484848, 记者 0.27272728, 成为 0.27272728, 来到 0.26666668, 安徽合肥 0.24242425, 城市 0.24242425, 经济圈 0.24242425, 公交 0.24242425, 目前 0.23636363, 本报 0.21818182, 今年 0.21818182, 起飞 0.21818182, 汽车 0.21212122, 物质 0.2060606, 合肥楼市 0.2060606, 空港 0.2060606, 工业 0.19393939, 标题 0.18181819, 野生 0.16969697]
大同 : [大学 1.0, 铁路 0.52380955, 山西 0.5, 证券 0.33333334, 大同大学 0.33333334, 山西省 0.23809524, 此次 0.23809524, 山西大同 0.1904762, 世界 0.1904762, 世界大同 0.1904762, 街道 0.16666667, 太原 0.14285715, 市委 0.14285715, 上海 0.14285715, 派出所 0.14285715, 公安处 0.14285715, 日方 0.14285715, 转发 0.14285715, 运城 0.11904762, 军分区 0.0952381, 矿务局 0.0952381, 小学 0.0952381, 参加 0.0952381, 项目 0.0952381, 中学 0.0952381, 水厂 0.0952381, 车辆段 0.0952381, 开往 0.0952381, 大同证券 0.0952381, 战役 0.071428575]
拉萨 : [火车站 1.0, 新华社 0.91935486, 西藏 0.7580645, 市区 0.61290324, 本报 0.58064514, 召开 0.5645161, 海关 0.5483871, 城市 0.48387095, 拉萨火车站 0.4032258, 市委 0.38709676, 成都 0.37096775, 贡嘎 0.3548387, 开幕 0.32258064, 发布 0.30645162, 西藏拉萨 0.2580645, 会议 0.2580645, 机场 0.22580644, 闭幕 0.22580644, 隆重 0.22580644, 林芝 0.20967741, 举行 0.19354838, 开通 0.19354838, 营业部 0.19354838, 市民 0.17741935, 市场 0.17741935, 经济 0.17741935, 中心 0.17741935, 空气 0.17741935, 成为 0.17741935, 人民 0.16129032]
西宁 : [新华社 1.0, 上海 0.8235294, 兰州 0.3529412, 辗转 0.3529412, 本报 0.29411766, 青海 0.29411766, 考察 0.23529412, 当街 0.23529412, 特钢 0.1764706, 方向 0.1764706, 分行 0.1764706, 索贿 0.1764706, 北京 0.14705883, 但是 0.14705883, 拉萨 0.11764706, 我们 0.11764706, 标题 0.11764706, 交警 0.11764706, 代表团 0.11764706, 处理 0.0882353, 银川 0.0882353, 车票 0.0882353, 筹建 0.0882353, 中转 0.0882353, 参加 0.0882353, 一月 0.05882353, 试验局 0.05882353, 二月 0.05882353, 地区 0.05882353, 严肃 0.05882353]


最后我们看一下分别使用7种相似度算法算出来的 兰州 的相关词:

----------------------------------------------------------
兰州 的相关词(CosineTextSimilarity):
	1、兰州 1.0
	2、沈阳 0.5
	3、北京军区 0.47
	4、后勤部 0.46
	5、沈阳军区 0.46
	6、总医院 0.46
	7、新疆军区 0.46
	8、司令员 0.42
	9、甘肃兰州 0.42
	10、兰州新区 0.42
	11、某师 0.39
	12、郑蒲港 0.38
	13、西咸 0.38
	14、天水 0.37
	15、郑东 0.37
耗时:25秒,572毫秒
----------------------------------------------------------
兰州 的相关词(EditDistanceTextSimilarity):
	1、兰州 1.0
	2、北京 0.21
	3、福州 0.2
	4、太原 0.19
	5、成都 0.17
	6、南宁 0.17
	7、西安 0.17
	8、哈尔滨 0.17
	9、贵阳 0.16
	10、庆阳 0.15
	11、合肥 0.14
	12、大同 0.14
	13、沈阳 0.14
	14、珀斯 0.13
	15、拉萨 0.13
耗时:44秒,253毫秒
----------------------------------------------------------
兰州 的相关词(EuclideanDistanceTextSimilarity):
	1、兰州 1.0
	2、后勤部 0.37
	3、北京军区 0.37
	4、新疆军区 0.37
	5、沈阳 0.37
	6、沈阳军区 0.37
	7、总医院 0.37
	8、上海浦东新区 0.36
	9、郑蒲港 0.36
	10、浦东新区 0.36
	11、甘肃兰州 0.36
	12、西咸 0.36
	13、西咸新区 0.36
	14、正定新区 0.36
	15、司令员 0.36
耗时:24秒,710毫秒
----------------------------------------------------------
兰州 的相关词(SimpleTextSimilarity):
	1、兰州 1.0
	2、福州 0.36
	3、西安 0.33
	4、李红旗 0.33
	5、中国金融信息中心 0.33
	6、南特 0.32
	7、卡塔赫纳 0.32
	8、哈尔滨 0.3
	9、武汉 0.3
	10、戴克瑞 0.3
	11、楚雄州 0.29
	12、朱梦魁 0.29
	13、岳菲菲 0.29
	14、长沙 0.28
	15、吕国庆 0.28
耗时:21秒,918毫秒
----------------------------------------------------------
兰州 的相关词(JaccardTextSimilarity):
	1、兰州 1.0
	2、福州 0.22
	3、西安 0.2
	4、哈尔滨 0.18
	5、北京 0.18
	6、武汉 0.18
	7、成都 0.18
	8、长沙 0.15
	9、太原 0.15
	10、贵阳 0.15
	11、沈阳 0.15
	12、广州 0.15
	13、拉萨 0.15
	14、南昌 0.15
	15、长春 0.13
耗时:19秒,717毫秒
----------------------------------------------------------
兰州 的相关词(ManhattanDistanceTextSimilarity):
	1、兰州 1.0
	2、上海浦东新区 0.11
	3、陕西西咸新区 0.11
	4、甘肃兰州 0.11
	5、北京军区 0.11
	6、新疆军区 0.11
	7、西咸 0.11
	8、正定新区 0.11
	9、天府新区 0.11
	10、沈阳军区 0.11
	11、国家级新区 0.11
	12、兰州新区 0.11
	13、侠客 0.1
	14、威胁论 0.1
	15、一两个月 0.1
耗时:23秒,857毫秒
----------------------------------------------------------
兰州 的相关词(SimHashPlusHammingDistanceTextSimilarity):
	1、兰州 1.0
	2、鱼水 0.96
	3、冯导 0.95
	4、新闻稿 0.95
	5、科学 0.95
	6、物业公司 0.95
	7、现役军人 0.95
	8、何人 0.95
	9、张轸 0.94
	10、公告 0.94
	11、信息发布 0.94
	12、倡议 0.94
	13、药液 0.94
	14、考古发掘 0.94
	15、公开发布 0.94
耗时:5分钟,57秒,339毫秒
----------------------------------------------------------



© 著作权归作者所有

杨尚川

杨尚川

粉丝 1100
博文 220
码字总数 1624053
作品 12
东城
架构师
私信 提问
加载中

评论(1)

金贞花
金贞花
大哥,用你的 数据分析 分析分析 买哪几个股票可以赚钱
ACL 2018 | 利用Lattice LSTM的最优中文命名实体识别方法

  选自arXiv   作者:Yue Zhang、Jie Yang   机器之心编译   参与:路、王淑婷      近日,来自新加坡科技设计大学的研究者在 arXiv 上发布了一篇论文,介绍了一种新型中文命名实...

机器之心
2018/06/30
0
0
superword开源项目中的定义相似规则

两个词之间的关系有同义、反义、近义(有多近?)、相关(有多相关?)等等。我们如何来判断两个词之间的关系呢?利用计算机能自动找出这种关系吗?当然可以,不仅能找出来,而且还能量化出有...

杨尚川
2015/12/07
1K
1
Word2vector句子相似度计算

word2vector 最近有任务要对句子和文档的相似读进行评估计算,学习了词向量的相关知识,并做了简单的测试。在测试过程中发现网上完整且简单的词向量分析句子相似度的文章比较少,所以打算整理...

zqh_zy
2017/07/05
0
0
python结巴中文分词

全栈工程师开发手册 (作者:栾鹏) python教程全解 结巴中文分词 安装: 特点: 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析; 全模式,把句子中所有的可以成词的词...

luanpeng825485697
2017/12/09
0
0
自然语言处理基础技术之分词、向量化、词性标注

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:段石石 前言 前段时间,因为项目需求, 开始接触了NLP,有感自己不是科班出身,很多东西理解不深,于是花时间再读了一些NLP...

腾讯云社区
2017/11/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ContentProvider和数据库的区别

大家好,今天我们来讲解ContentProvider和数据库的区别是他们之间的联系. 四大组件之一 1.ContentProvider是如何实现数据共享的? 1.在Android中,为了把自己程序的数据(一般是数据库)提供给其他...

天王盖地虎626
42分钟前
1
0
前端搜索

思路:使用indexOf或正则表达式

单线程生物
50分钟前
1
0
Navicat Premium 12破解激活

本文转载自:https://www.cnblogs.com/joyny/p/9536006.html 下载Navicat Premium 12并安装; 链接:https://pan.baidu.com/s/1mN-urlh--SX1vbq7hi81Ww 密码:menk 重要提示:该注册机来源于...

Ygam
51分钟前
2
0
ThreadGroup 线程组

在看tomcat源码时,TaskThreadFactory这个线程工厂类中用到ThreadGroup这个类,之前没有用到过,所以就特地查了一下 ThreadGroup这个属于java元老级的类,在java1.0版本中就出现了,里面还有...

二两豆腐
52分钟前
2
0
在 CentOS 或 RHEL 系统上检查可用的安全更新的方法

当你更新系统时,根据你所在公司的安全策略,有时候可能只需要打上与安全相关的补丁。大多数情况下,这应该是出于程序兼容性方面的考量。那该怎样实践呢?有没有办法让 yum 只安装安全补丁呢...

xiangyunyan
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部