【发布时间】:2017-06-09 05:45:21
【问题描述】:
我正在尝试遍历包含文本的文件并计算当前行与用户提出的查询之间的余弦相似度。我已经对查询和行进行了标记,并将它们的单词并集保存到一个集合中。
例子:
line_tokenized = ['Karl', 'Donald', 'Ifwerson']
query_tokenized = ['Donald', 'Trump']
word_set = ['Karl', 'Donald', 'Ifwerson', 'Trump']
现在我必须为每行和查询创建一个字典,其中包含词频对。我想到了这样的事情:
line_dict = {'Karl': 1, 'Donald': 1, 'Ifwerson': 1, 'Trump': 0}
query_dict = {'Karl': 0, 'Donald': 1, 'Ifwerson': 0, 'Trump': 1}
但是由于键值对是无序的,因此无法正确计算余弦相似度。我遇到了OrderedDict(),但我不明白如何实现一些东西,因为它的元素存储为元组:
所以我的问题是:
- 如何设置键值对并在之后访问它们?
- 如何增加某个键的值?
- 或者还有其他更简单的方法吗?
【问题讨论】:
-
“键值对无序”是什么意思?您希望如何订购它们?
-
我希望它们按照我添加到字典中的顺序排列。
-
我不明白你的意思,我在你的代码中没有看到你指的是哪个顺序,我有一个很好的答案给你,你给我解释一下顺序
-
@LucaIonescu:字典是一个哈希表,因此没有内在的顺序。您确实可以使用数据结构来强制执行顺序,但是要计算 cos sim,这不是必需的。
标签: python python-3.x nlp nltk cosine-similarity