`

利用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 ,启动成功之后命令行提示:

开始初始化模型
模型初始化完成
可通过输入命令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毫秒
----------------------------------------------------------

 

 

 

 

 

 

1
0
分享到:
评论

相关推荐

    中文地址分词

    例如,Bi-LSTM-CRF模型能利用前向和后向的语境信息来预测每个字符的标签,进而实现更精准的分词。 在文件名为"Deeplearning"的压缩包中,可能包含了使用深度学习方法进行中文地址分词的相关代码、模型权重或者数据...

    word2vec_wiki.model.rar

    2. 构建词上下文窗口:word2vec的核心是通过观察词的上下文关系来学习词向量。例如,设定一个固定大小的窗口,窗口内的词作为当前词的上下文词。 3. 训练模型:对于CBOW模型,目标是预测当前词,输入是上下文词的...

    汉语最全同义词列表,汉语同义词词典,Python源码.zip

    标题中的“汉语最全同义词列表”和“汉语同义词词典”指的是一个包含大量汉语同义词数据的资源,这样的资源在自然...总的来说,理解和有效利用汉语同义词列表及相关的Python源码,对于提升中文NLP项目的性能至关重要。

    词向量.zip

    自训练词向量,例如使用CBOW或Skip-gram模型(这些是Word2Vec的两种变体),可以通过Keras的自定义层或者使用内置的`Sequential`模型来实现。首先,我们需要定义模型架构,然后用语料库训练模型,最后得到的模型权重...

    自然语言处理系列:中文维基语料词向量训练.pdf

    GloVe算法则是基于全局矩阵分解技术,通过考虑整个语料库中词与词之间的共现信息来训练词向量。 4. 词向量评估与应用:模型训练完成后,会使用一些评估方法来确定词向量的质量,如使用词相似度或类比任务作为评估...

    NLP:自然语言处理台大简体中文情感词典.zip

    此外,政策制定者、市场营销人员和研究人员也会利用情感分析来洞察公众情绪,辅助决策。 在台大简体中文情感词典中,每个词汇的情感标记反映了词汇在特定语境下的情感倾向。词典可能还会包含一些复杂的表达,如成语...

    深度学习NLP基础之词向量简介.docx

    - **Word2Vec**: Word2Vec利用词在不同上下文中出现的频率来推断词的语义。它有两个主要模型: - **CBOW(Continuous Bag-of-Words)**: 通过上下文词预测中心词。这种方法假设一个词的意义可以从其周围的词中推断...

    利用自然语言处理技术 构建中国市场金融舆情因子1

    研究人员设计了一种算法,首先自动抓取有影响力的财经网站的新闻和评论,然后利用NLP技术进行预处理,包括分词(如使用结巴分词工具)和词向量嵌入(word2vec)。接着,通过分析这些预处理后的数据,计算每天的舆情...

    用python实现基于情感词典的情感分析

    1. **语境考虑**:使用词性标注(Part-of-Speech tagging)来理解单词在句子中的角色,例如,否定词前的形容词应该反转其情感极性。 2. **否定检测**:识别否定词,如“不”、“无”、“没”,并相应地调整后续词的...

    根据情感词进行分析《文本情感分析代码》

    同时,可以考虑上下文信息,使用词向量(如Word2Vec、GloVe)或预训练模型(如BERT、RoBERTa)来捕获词的语境含义,提高评分的准确性。 此外,**情感极性判断** 可能包括对情感强度的量化以及对情感方向(积极、...

    基于词典方法和机基于器学习方法的中文情感倾向分析(Web).zip

    预处理包括去除停用词、标点符号,进行词干提取和词形还原,以及将文本转换为特征向量,如词袋模型、TF-IDF或词嵌入(如Word2Vec、BERT)。 #### 2. 特征工程 特征选择对模型性能至关重要。在情感分析中,可能的...

    亲测可以用-AS312314.zip

    在IT领域,尤其是在自然语言处理(NLP)...通过深入学习以上知识点,并结合提供的源代码,我们可以进一步了解如何在Python中实现同义词词林的利用,以及如何有效地计算词语的相似度,这对于提升NLP项目的性能至关重要。

    Python-问题句子相似度计算即给定客服里用户描述的两句话用算法来判断是否表示了相同的语义

    4. **深度学习模型**:如BERT、RoBERTa等预训练语言模型,能更深入地理解语境,通过微调这些模型,可以实现更精确的句子相似度计算。 5. **评估与优化**:使用如准确率、召回率、F1分数等指标评估模型性能,并通过...

    基于深度学习的中文幽默计算.pdf

    作者孙绪瑞在研究中采用了word2vec进行分词词向量的训练,这有助于快速将文本对应到分类标签上,从而加速模型的训练过程。在实验设计方面,作者们也详细描述了实验所用的数据集,为读者提供了关于如何进行中文幽默...

    赖昱行-1120192236-课程报告1

    首先,歧义问题源于中文的多义性,模型通过利用n-gram的构词能力,动态调整权重来消除特定语境下的歧义。其次,针对未登录词,模型采用非监督学习构建词表,有效地识别和处理未见过的词汇,尤其是专业术语和新词。 ...

    Kaggle文本语义相似度计算Top5解决方案分享.docx

    - **特征工程**:预处理步骤,如分词、去除停用词、词干提取、词形还原等。 - **语义向量化**:使用词嵌入(Word Embeddings)将单词转换为连续向量,如Word2Vec、FastText。 - **深度学习模型**:使用RNN、LSTM、...

    基于pytorch进行文本多分类,主要模型为双向LSTM,预测准确率83%.zip

    1. **数据预处理**:这是关键的一步,包括分词、去除停用词、词干提取等,将原始文本转化为可以输入到模型的数字表示,如词嵌入(word embeddings)。 2. **构建词嵌入**:可以使用预训练的词向量,如GloVe或Word2...

    windows_x64_py3.6版本的pyemd模块

    在NLP领域,WMD利用EMD来计算两个文档之间的距离,即使它们的词汇不完全相同,也能捕捉到它们的语义相似性。PyEMD提供了高效的实现,使得在Python环境中可以便捷地使用这一算法。 然而,用户在尝试通过pip安装PyEMD...

    英文维基百科语料库txt(1)

    【标题】"英文维基百科语料库txt(1)" 涉及的主要知识点是自然语言处理(NLP)中的文本预处理技术,以及如何利用维基百科语料库进行相关研究。维基百科是一个庞大的知识库,包含了丰富的语言信息,是NLP领域常用的...

Global site tag (gtag.js) - Google Analytics