人工智能,如何利用腾讯语料库计算某个词的相似词?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
继续分析腾讯人工智能实验室的语料库,看看还能做什么事情?本文的需求情况就是:求一个词的相关一系列近似词。同样,本文的求近似词的功能.similar_by_word()
来自于gensim
,数据来源于腾讯人工智能实验室的语料库tencent-ailab-embedding-zh-d100-v0.2.0-s
。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的经验文章总结。测试环境:win10
,python@3110
,gensim@4.3.2
。
准备数据
还是准备最轻量的“tencent-ailab-embedding-zh-d100-v0.2.0-s.txt”语料库,然后转换的“.bin”文件。
从这里下载的:
这样转换的:
from gensim.models import KeyedVectors
model = KeyedVectors.load_word2vec_format('./tencent-ailab-embedding-zh-d100-v0.2.0-s.txt', binary=False)
model.save_word2vec_format('./tencent-ailab-embedding-zh-d100-v0.2.0-s.bin',binary=True)
参考文章:
函数原型
.similar_by_word(word, topn=20, restrict_vocab=None)
其中的参数restrict_vocab
,它是可选的整数,它限制了向量的范围,搜索最相似的值。
例如:restrict_vocab = 10000
。会只检查词汇顺序中的前10000个词汇向量。
计算相似词
完整代码如下:
import os
os.chdir(os.path.dirname(__file__))
from gensim.models import KeyedVectors
file = './tencent-ailab-embedding-zh-d100-v0.2.0-s.bin'
model = KeyedVectors.load_word2vec_format(file, binary=True)
n = model.similar_by_word("北京", topn=20, restrict_vocab=None)
print(n)
# print(type(n)) # list
for kv in n:
# print(type(kv)) # tuple
print(kv[0])
返回值是个元素类型为tuple
的list
。
输出:
[('天津', 0.9328117370605469), ('沈阳', 0.9086554050445557), ('石家庄', 0.8912245035171509), ('上海', 0.8876019716262817), ('长春', 0.8828070759773254), ('啊,北京', 0.8798615336418152), ('在北京', 0.877882182598114), ('保定', 0.8774853348731995), ('哈尔滨', 0.8773915767669678), ('西安', 0.8716177344322205), ('秦皇岛', 0.8656072020530701), ('北京有', 0.8653988838195801), ('唐山', 0.8637179136276245), ('大连', 0.8566615581512451), ('济南', 0.8543044328689575), ('北京市', 0.8523149490356445), ('廊坊', 0.8505526185035706),
('郑州', 0.8482655882835388), ('太原', 0.848239004611969), ('鞍山', 0.8391510248184204)]
天津
沈阳
石家庄
上海
长春
啊,北京
在北京
保定
哈尔滨
西安
秦皇岛
北京有
唐山
大连
济南
北京市
廊坊
郑州
太原
鞍山
相关文章
结束语
更多苏南大叔的人工智能方面的经验文章,请点击:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。