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

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


语境的定义是:在一段文本中,任意一个词的语境由它的前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 ,启动成功之后命令行提示:

开始初始化模型
模型初始化完成
输入要查询的词或(exit)命令离开:

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

兰州
兰州:
----------------------------------------------------------
	兰州 1.0
	沈阳 0.0972878
	福州 0.093048185
	西安 0.091508456
	武汉 0.0792793
	济南 0.075799406
	南京 0.06881402
	拉萨 0.06858019
	广州 0.059480708
	南昌 0.05545377
	北京 0.054844435
	郑州 0.054340072
	贵阳 0.050922975
	天津 0.04257067
	长沙 0.03807447
----------------------------------------------------------

这里显示的结果就是 兰州 这个词的相关词,词后面跟的是相关度分值,兰州 和 兰州 是同一个词,相关度百分之百,自然是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.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.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.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.97572815, 湖北 0.61650485, 湖北武汉 0.44660193, 中心 0.4368932, 武汉晚报 0.43203884, 长江 0.41747573, 绿地 0.407767, 铁路局 0.407767, >铁路 0.39320388, 本报 0.36893204, 地区 0.3592233, 火车站 0.35436893, 开发区 0.3398058, 西安 0.30582523, 市民 0.30097088, 理工大学 0.2815534, 华旗 0.23300971, 新华社 0.22330096, 来自 0.2184466, 目前 0.2184466, 剧院 0.21359223, 高校 0.20873787, 公司 0.19417475, 年度 0.19417475, 市委 0.18932039, 分行 0.18932039, 警方 0.18932039, 北京 0.18446602, 武汉铁路局 0.18446602]   
济南 : [全运村 1.0, 绿城 0.88461536, 山东 0.84615386, 军区 0.8173077, 交警 0.6442308, 山东济南 0.5576923, 本报 0.5, 军区队 0.43269232, 新华社 0.3846154, 开往 0.3653846, 项目 0.25, 亮相 0.25, 第一团 0.23076923, 城区 0.23076923, 来自 0.22115384, 太原 0.21153846, 北京 0.1826923, 青岛 0.1826923, 学习 0.17307693, 沃尔玛 0.17307693, 举行 0.16346154, 石家庄 0.15384616, 前往 0.15384616, 市委 0.14423077, >战役 0.13461539, 市民 0.13461539, 来到 0.125, 上海 0.125, 铁路局 0.115384616, 旗下 0.115384616]   
南京 : [大学 1.0, 大屠杀 0.9218107, 市政协 0.6995885, 军区 0.5596708, 政协 0.4691358, 上海 0.4526749, 市长 0.4526749, 当选 0.43209878, 南京大屠杀 0.35390946, 市委 0.33744857, 南京市政协 0.31687242, 新华社 0.30452675, 特务 0.2962963, 来到 0.28395063, 日军 0.28395063, 江宁 0.26337448, 市民 0.2345679, 新街口 0.23045267, >本报 0.22633745, 国际 0.22222222, 南京大学 0.20164609, 缪瑞林 0.20164609, 位于 0.19753087, 曾任 0.19753087, 南京政协 0.18518518, 占领 0.17283951, 关于 0.17283951, 今年 0.16872428, 厦门 0.16460906, 长江 0.14814815]   
拉萨 : [火车站 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.7619048, 深圳 0.62637365, 军区 0.46886447, 北京 0.3956044, 铁路 0.36630037, 火车站 0.35531136, 日报 0.24908425, 广州恒大 0.23076923, 新华社 0.21978022, 一家 0.2014652, 本报 0.1978022, 海口 0.18681319, 第一 0.17948718, 开往 0.17582418, 警方 0.17216118, 前往 0.16849817, 金域 0.16117217, 松日队 0.15384616, 住在 0.14652015, 成都 0.14285715, 举行 0.13553114, 海关 0.13553114, 武汉 0.12820514, 广州火车站 0.12820514, 出差 0.124542125, 太阳神队 0.124542125, 飞往 0.124542125, 番禺 0.124542125, 城市 0.12087912] 
南昌 : [本报 1.0, 江西 0.94, 铁路局 0.92, 江西南昌 0.76, 武汉 0.62, 市委 0.52, >北京 0.52, 南昌铁路局 0.52, 发展 0.5, 大学 0.36, 参加 0.36, 高新科技 0.32, 开往 0.32, 鹿心社 0.32, 新华社 0.28, 人员 0.26, 举行 0.24, 原本 0.24, 高校 0.24, 宁波 0.24, 上海 0.22, 合肥 0.2, 依旧 0.2, 火车站 0.2, 来自 0.2, 代表团 0.2, 全年 0.2, 居住 0.2, 创业 0.2, 符合 0.2]   
北京 : [新华社 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.7407407, 晚报 0.7407407, 大学 0.7037037, 电视台 0.69135803, 二环 0.6419753, 深圳 0.5925926, 地铁 0.54320985, 市民 0.4814815, 新华社 0.44444445, 本报 0.41975307, 郑州电视台 0.39506173, 河南郑州 0.39506173, 武汉 0.3580247, 郑州市委 0.34567901, 万能 0.32098764, 方向 0.28395063, 铁路局 0.27160493, 上海 0.27160493, 一卡通 0.27160493, 往返 0.25925925, 要求 0.25925925, 北京 0.24691358, 记者 0.24691358, 西安 0.2345679, 郑州晚报 0.2345679, 新闻 0.22222222, 一>家 0.22222222, 郑州 0.19753087, 广州 0.18518518]  
贵阳 : [本报 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.56804734, 河北 0.53846157, 上海 0.52662724, 市委 0.4852071, 卫视 0.43786982, 女排 0.34319526, 东方 0.34319526, 大学 0.3372781, 浙江 0.32544377, 新华社 0.3195266, 滨海 0.2781065, 中国 0.26035503, 不理 0.18343195, 中>共 0.17751479, 人民 0.17751479, 考察 0.17751479, 青年 0.17159763, 重庆 0.16568047, 儿童 0.16568047, 天津卫视 0.16568047, 福建 0.1597633, 新区 0.147929, 宁夏 0.147929, 日报 0.14201184, 工作 0.14201184, 来自 0.14201184, 南部 0.14201184, 安徽 0.14201184, 中华老字号 0.14201184] 
长沙 : [湖南 1.0, 湖南长沙 0.6567164, 本报 0.52238804, 成都 0.47761193, 方向 0.4477612, 北京 0.3283582, 来到 0.3283582, 海底 0.32089552, 新华社 0.30597016, 飞往 0.2835821, 晚报 0.26865673, 天心区 0.23134328, 重庆 0.21641791, 警方 0.20895523, 开往 0.20895523, 车票 0.20149253, 市委 0.19402985, 离开 0.19402985, 南方 0.19402985, 省会 0.17910448, 武汉 0.1716418, 世界 0.1716418, 上海 0.1716418, 火车站 0.1716418, 市民 0.15671642, 城市 0.14925373, 记者 0.14925373, 麓谷 0.14925373, 铁路 0.14179105, 交警 0.13432837]
时间: 2024-10-20 07:34:08

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

利用word分词来计算文本相似度

word分词提供了两种文本相似度计算方式: 方式一:余弦相似度,通过计算两个向量的夹角余弦值来评估他们的相似度 实现类:org.apdplat.word.analysis.CosineTextSimilarity 用法如下: String text1 = "我爱学习"; String text2 = "我爱读书"; String text3 = "他是黑客"; TextSimilarity textSimilarity = new CosineT

利用word分词提供的文本相似度算法来辅助记忆英语单词

本文实现代码:利用word分词提供的文本相似度算法来辅助记忆英语单词 本文使用的英语单词囊括了几乎所有的考纲词汇共18123词: /**  * 考纲词汇  * @return  */ public static Set<Word> getSyllabusVocabulary(){     return get("/word_primary_school.txt",             "/word_junior_school.txt",       

利用word分词来对文本进行词频统计

word分词中的 org.apdplat.word.WordFrequencyStatistics 类提供了词频统计的功能 命令行脚本的调用方法如下: 将需要统计词频的文本写入文件:text.txt chmod +x wfs.sh & wfs.sh -textFile=text.txt -statisticsResultFile=statistics-result.txt 程序运行结束后打开文件statistics-result.txt查看词频统计结果 在程序中的调用方法如下: //词频统计设置

基于word分词提供的文本相似度算法来实现通用的网页相似度检测

实现代码:基于word分词提供的文本相似度算法来实现通用的网页相似度检测 运行结果: 检查的博文数:128 1.检查博文:192本软件著作用词分析(五)用词最复杂99级,相似度分值:Simple=0.968589 Cosine=0.955598 EditDistance=0.916884 EuclideanDistance=0.00825 ManhattanDistance=0.001209 Jaccard=0.859838 JaroDistance=0.824469 JaroWinklerDi

(待解决)leecode 分词利用词典分词 word break

不戚戚于贫贱,不汲汲于富贵      ---五柳先生 Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words. For example, givens = "leetcode",dict = ["leet", "code&qu

利用Excel函数多角度计算个人所得税

新个税征收方法已与2011年9月1日起施行,但计算方法变更改后,有关这方面的计算方法在网络论坛上讨论较多,但在新旧交替时期正误混杂,新人难以分辨.在现实中根本就找不到这方面的经典计算方法,ExcelHome论坛超级版主.微软最有价值专家MVP黄成武归纳总结一下计算方法,最终目的是给大家拓展函数使用的技巧和思路,在陶醉于函数奇妙.经典的运用中,感叹Excel博大精深,同时又是加强练习Excel函数的绝佳机会. 一.个税计算最新税率表 级数 全月应纳税所得额 税率 扣除数 1       不超过15

利用模板导出文件(二)之jacob利用word模板导出word文件(Java2word)

先下载jacob.jar包. 解压后将jacob.dll放到windows/system32以下或\jre\bin以下. 将jacob.jar增加项目. 这样项目的环境基本上搭建完毕,接下来就是书写相关的代码: /** * 传入数据为HashMap对象,对象中的Key代表word模板中要替换的字段.Value代表用来替换的值. * word模板中全部要替换的字段(即HashMap中的Key)以特殊字符开头和结尾. * 如:$code$.$date$--.以免执行错误的替换. * 全部要替换为图片

给LUKE增加word分词器

word分词是一个Java实现的分布式中文分词组件 1.下载http://luke.googlecode.com/files/lukeall-4.0.0-ALPHA.jar(国内不能访问) 2.下载并解压Java中文分词组件word-1.0-bin.zip 3. 将解压后的 Java中文分词组件word-1.0-bin/word-1.0 文件夹里面的4个jar包解压 到当前文件夹,用压缩解压工具如winrar打开lukeall-4.0.0-ALPHA.jar,将当前文件夹 里面除了.jar..b

C# 利用WORD模板和标签(bookmark) 批量生成WORD

前言: 由于对C#操作WORD不熟悉,也就留下这么一篇水文,别吐糟...=_=||| 利用Microsoft.Office.Interop.Word (2003版也就11版)——因为部分客户端还是用Office2003,所以保险起见应该引入低一点的版本 我的需求很简单,从DataTable里面循环取数据批量生成Word文档,解决方案是利用Word模板.dot插入书签并保存为程序使用的模板, 用C#打开word模板修改书签的值并批量生成Word. 遇到的问题: 我的思路是打开模板,然后循环修改书签