我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

暂时回归python的世界,目前最火热的人工智能话题。如何利用腾讯语料库计算两个词的余弦相似度呢?gensim库如何安装使用?这些都是本文讨探的内容范围。

苏南大叔:人工智能,如何利用腾讯语料库计算两个词的相似性? - 计算两个词语的相似性
人工智能,如何利用腾讯语料库计算两个词的相似性?(图5-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。本文测试环境:win10python@3110gensim@4.3.2

腾讯中文语料库

腾讯AI实验室出品的语料库,由于算力限制,苏南大叔就采用的是体积最小的“tencent-ailab-embedding-zh-d100-v0.2.0-s”语料库。下载地址:

当然,您也可以根据需求,选择其它的更大更全的语料库(或者英文语料库),下载地址:

下载解压得到.txt文件,备用。(友情提示:体积很庞大)

安装gensim

利用的是gensim里面的KeyedVectors来加载的tencent-ailab-embedding-zh-d100-v0.2.0-s语料库。没有安装gensim库的话,请执行下面的命令:

pip install gensim

苏南大叔:人工智能,如何利用腾讯语料库计算两个词的相似性? - pip-install-gensim
人工智能,如何利用腾讯语料库计算两个词的相似性?(图5-2)

加载语料库

语料库的加载,根据语料库的格式,一共有两种方式。

from gensim.models import KeyedVectors

苏南大叔:人工智能,如何利用腾讯语料库计算两个词的相似性? - 文件格式
人工智能,如何利用腾讯语料库计算两个词的相似性?(图5-3)

情况一,.txt文件【慢】

file = './tencent-ailab-embedding-zh-d100-v0.2.0-s.txt'
model = KeyedVectors.load_word2vec_format(file, binary=False)

重点就是binary=False

情况二,.bin文件【快】

file = './tencent-ailab-embedding-zh-d100-v0.2.0-s.bin'
model = KeyedVectors.load_word2vec_format(file, binary=True)

重点就是参数binary变成true了。

如何获得.bin文件【非必须】

这个.bin文件是怎么来的呢?是对.txt文件进行加工的结果。示例代码:

file = './tencent-ailab-embedding-zh-d100-v0.2.0-s.txt'
model = KeyedVectors.load_word2vec_format(file, binary=False)
model.save_word2vec_format('./tencent-ailab-embedding-zh-d100-v0.2.0-s.bin',binary=True)

参考文章:

可能遇到的问题

在不同的运行条件下,可能会出现文件没有找到的问题。那么,需要对路径进行修复,可能的方案是:

import os
os.chdir(os.path.dirname(__file__))

参考文章:

计算相似度

核心代码就下面的这几句话:

from gensim.models import KeyedVectors
## ...
model = KeyedVectors.load_word2vec_format(路径,格式)
model.similarity(词一,词二)
# ...

完整代码

使用.txt文件,进行分析(慢):

import os
os.chdir(os.path.dirname(__file__))

from gensim.models import KeyedVectors
file = './tencent-ailab-embedding-zh-d100-v0.2.0-s.txt'
model = KeyedVectors.load_word2vec_format(file, binary=False)
a = model.similarity("北京","首都")
b = model.similarity("北京","苹果")
print(a,b)

苏南大叔:人工智能,如何利用腾讯语料库计算两个词的相似性? - 代码一
人工智能,如何利用腾讯语料库计算两个词的相似性?(图5-4)

或者使用.bin文件(快):

这是付费可看内容,收费5元。

苏南大叔:人工智能,如何利用腾讯语料库计算两个词的相似性? - 代码二
人工智能,如何利用腾讯语料库计算两个词的相似性?(图5-5)

输出:

0.8637179 0.3038814

看来,两个地名的相似度要更高一些。

语料库的重要性

当然,这里也不是任何两个词都能计算其相似度。这取决于语料库的丰富程度。比如,试图对“苏南大叔”和"苏南二叔"进行对比的话,就无法完成对比。错误提示信息如下:

KeyError: "Key '苏南大叔' not present"

相关文章

结束语

现在已经开始进入人工智能的时代,多了解一下人工智能的思路,总是有些用途的。更多文章,请参考:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python    nlp