首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到单词列表之间的语义相似性?

如何找到单词列表之间的语义相似性?
EN

Stack Overflow用户
提问于 2020-06-08 09:36:12
回答 1查看 909关注 0票数 1

输入:

代码语言:javascript
复制
listToStr = 'degeneration agents alpha alternative amd analysis angiogenesis anti anti vegf appears associated based best bevacizumab blindness blood'

我正在使用的代码:

代码语言:javascript
复制
simi = []
tokens = nlp(listToStr) 
length = len(tokens)

for i in range(length):
    #print(i)
    sim = tokens[i].similarity(tokens[i+1])
    simi.append(sim)
print(simi)

错误:

代码语言:javascript
复制
[E040] Attempt to access token at 17, max length 17.

如何删除此错误?

我用的是spacy。下面是指向它的链接:https://www.geeksforgeeks.org/python-word-similarity-using-spacy/#:~:text=Python%20%7C%20Word%20Similarity%20using%20spaCy,simple%20method%20for%20this%20task.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-08 09:54:57

for循环中,由于tokens[i + 1]操作的结果,创建了一个超出令牌列表范围的索引。相反,你可以做这样的事情:

代码语言:javascript
复制
import spacy

nlp = spacy.load("en_core_web_sm")

listToStr = 'degeneration agents alpha alternative amd analysis angiogenesis anti anti vegf appears associated based best bevacizumab blindness blood'

simi = []
tokens = nlp(listToStr) 

for idx, tok in enumerate(tokens):
    sim = []
    for nextok in tokens[idx:]:
        sim.append(tok.similarity(nextok))
    simi.append(sim)

这测试了每个单词和句子中下一个单词的相似性,所以结果是一个列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62259100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档