人工智能杂谈|SimilarVocabulary--动手实现一个基于NLP的相近单词检索器
介绍 SimilarVocabulary是我在github上的一个开源项目,项目本身并不复杂,使用了NLP中的词向量来检索到关联程度较大的单词,项目套用了NLP中一个开源的库spacy.该库自带了一个训练好的模型,可以进行英文文本的预测。
项目地址:
https://github.com/wotchin/SimilarVocabulary代码细节 下面,我们以这个简单的demo演示一下spacy库的使用,以及介绍获取相近单词的代码。
加载模型
nlp = spacy.load('en_core_web_lg')
其中,en_core_web_log 是该库自带的一个训练好的模型,这个模型很大,需要自己下载,我在这里给出了初始化的脚本为:init.sh
获取输入文本 这行代码主要是用于获取输入文本内容,然后将输入的文本(主要是单词)进行预处理,生成token:
while True:
if line != "":
words += line.replace("\n"," ")
line = f.read()
else:
breaknlp = spacy.load('en_core_web_lg')
print("modal loaded.")
tokens = nlp(words)
设定阈值 套用这个库来实现相近单词检索的大致原理是:
通过已经训练好的模型,通过词向量对比给定的两个单词之间的“距离”,我们给定的这个阈值就是这个“距离”的上线,通过设定这个上限值,就可以获取我们想要的输出结果——语义相近的单词。
我们简单看一下设定阈值的过程:
threshold = 0.0
while threshold <= 0.0:
try:
threshold = float(input("input threshold value:"))
except:
threshold = 0.0length = 3
try:
length = int(input("input result length:"))
except:
length = 3
代码很简单:要求输入阈值,需要查询到的相近单词的个数。
实现对比查询 我在这里实现的逻辑是:给一个语料库数据集,数据集里收集了绝大多数的常用英文单词,在这个数据集中寻找与我们事先给定的单词意思相近的结果,然后选择n个比较优的结果返回。这部分的代码是:
while True:
queue = [] #[['dog',0.1],['cat',0.2]...]
i = input("input your word:")
if i != "":
txt = nlp(i)
for token in tokens:
score = token.similarity(txt)
if score >= threshold and family_check(txt.text.strip(),token.text.strip()) < 0:
if len(queue) >= length:
index = 0 # in order to contrast
value = https://www.it610.com/article/1.0
for i in range(0,len(queue)):
if queue[i][1] < value:
value = queue[i][1]
index = i
if value < score:
queue[index] = [token.text,score]else:
queue.append([token.text,score])print(queue)
用途 【人工智能杂谈|SimilarVocabulary--动手实现一个基于NLP的相近单词检索器】诸如这样寻找相似的单词的意义是怎样的呢? 譬如某些答题竞猜类APP,如之前非常火爆的在线直播答题类APP进行编题时,如果只有一个选项,需要补充额外三个干扰选项怎么办?可以使用这样的相近单词生成器,生成关联比较近的单词,例如输入单词dog,它可能会为我们返回:pig,cat,cook.当然了,它的更多用途不止于此,全凭脑洞。
推荐阅读
- 人工智能|干货!人体姿态估计与运动预测
- 人工智能|【机器学习】深度盘点(详细介绍 Python 中的 7 种交叉验证方法!)
- 人工智能真的可以取代人吗
- 2021-3-13趣事杂谈
- 德宇创星DUY-人工智能——!!|德宇创星DUY-人工智能——!! 你想像不到的地方
- 人工智能与智能系统3->|人工智能与智能系统3-> 机器人学3 | 移动机器人平台
- DataBinding入门进阶指南(一)
- 人工智能|hugginface-introduction 案例介绍
- 在线教育升级|在线教育升级 人工智能成为趋势
- 《今日简史》-30年后,孩子怎样拼过人工智能