【发布时间】:2021-03-14 18:30:03
【问题描述】:
您好,我需要从多个文件中标记和处理的唯一单词列表中创建一个帖子字典。所以帖子字典的最终格式是: {wordid: [0, 1, ...], wordid2:[0, 1, ...]},
我真的很挣扎,我现在唯一的代码是:
for i in range(len(docids)):
for word in vocab:
if word not in postings.keys():
postings[word] = []
else:
postings[word].append(i)
这只是输出带有术语的字典,而 docid 只是根据我要求它索引的文件数量以奇怪的模式相互重复。
示例输入和预期输出:
Doc1 = "你好,我的名字是 john",Doc2 = "你好,我的第二个名字是 smith"。
这将创建一个词汇表:['hello', 'my', 'name', 'is', 'john, 'hi', 'second', 'smith']。
每个单词都有一个 wordid 就是这个词的索引
还有一个docid:[0, 1]
(这只是对文档进行计数,并用于创建发布列表以表示:单词w出现在文档doc em>)
这个例子的最终输出是:
postings = {0: [0], 1: [0,1], 2: [0,1], 3: [0,1], 4: [0], 5: [1], 6: [1], 7: [1]}
所以这个 dict 显示了每个 wordid(每个单词在 vocab 中的索引)以及它出现在哪个文档中
整个程序也应该从终端运行,并将目录和文件数量作为参数提供给它。
【问题讨论】:
-
我完全不明白你的问题......你有什么意见?
docids和vocab包含什么? -
这是一个倒排索引(信息检索)问题,其中docid和vocab列表是常用的,docid是一个列表,包含正在读取的文档的所有url和索引。 Vocab 包含了每个文档中的所有单词,重复的单词被去掉了。
-
如果您可以提供一个带有给定输入(
docids、vocab、postings、...)的小示例以及这种情况下的预期输出字典,那将会很有帮助。 -
谢谢,刚刚添加,希望问题现在更容易理解
标签: python dictionary indexing information-retrieval inverted-index