人工智能,如何利用腾讯语料库计算两个词的相似性?
发布于 作者:苏南大叔 来源:程序如此灵动~
暂时回归python
的世界,目前最火热的人工智能话题。如何利用腾讯语料库计算两个词的余弦相似度呢?gensim
库如何安装使用?这些都是本文讨探的内容范围。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。本文测试环境:win10
,python@3110
,gensim@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
加载语料库
语料库的加载,根据语料库的格式,一共有两种方式。
from gensim.models import KeyedVectors
情况一,.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)
或者使用.bin
文件(快):
输出:
0.8637179 0.3038814
看来,两个地名的相似度要更高一些。
语料库的重要性
当然,这里也不是任何两个词都能计算其相似度。这取决于语料库的丰富程度。比如,试图对“苏南大叔”和"苏南二叔"进行对比的话,就无法完成对比。错误提示信息如下:
KeyError: "Key '苏南大叔' not present"
相关文章
- https://newsn.net/say/python-related-version.html
- https://ai.tencent.com/ailab/nlp/zh/download.html
- https://newsn.net/say/python-import.html
结束语
现在已经开始进入人工智能的时代,多了解一下人工智能的思路,总是有些用途的。更多文章,请参考:


