我有一个numpy数组matrixValue
,和3个包含以下内容的列表:
矩阵值:(type:ndarray)单词列表中单词的降序出现次数
[.. 62 62 ..]
[.. 23 21 ..]
[.. 14 13 ..]
值列表:(type:list)单词列表中某个单词出现的次数,按降序排列
[... 74, 71, 63, 62, 62, 50, 40, 23, 21, 14, 13, 11, 11...]
userGivenWord:(type:list)用户指定的单词
[... water, animal, flower...]
单词列表:(type:list)包含英语词典单词列表
[.. water, ocean, lake, green, blue, sea...]
给定一个用户定义的单词,我将从单词列表中检索一些“语义相似”的单词。我的问题是,对于valueList中的任何重复出现(例如62、11),只打印第一个英文单词“lake”,而不打印sea(假设blue和lake都出现62次)。你知道吗
输出
water = lake, lake # wrong output
water = lake, sea # correct output
下面是我非常确定的导致问题的代码部分:
for i in range(0, 3): # printing top 3 words
value = matrixValue[i] # returns the first two numbers, 62 & 62
iValue = valueList.index(value) # returns the indexes in valueList for the above value
tagword = str(tag_list[iValue]) # retrieves the word based on the iValue
res = userTags[x] + " = " + tagword
同样,湖和海都发生了62次。我相信错误发生在for循环的第二行。当我在调试器中查看时,我注意到“lake”一词被两次添加到结果列表中(而不是sea)。我不确定我在这里是否连贯,或者我是否清楚地写了这个问题。。。但如果需要澄清,请随时问我问题。你知道吗
如果您想得到出现次数相同的单词,那么计数器dict会简单得多:
然而,你计算相似度,如果它不是频率简单地存储在你的dict和访问关键字共同的话。索引除了比使用dict效率低得多之外,总是会返回第一次出现的内容。你知道吗
要将count存储为关键字并将单词分组为值,请执行以下操作:
相关问题 更多 >
编程相关推荐