我正在尝试构造一个名为“and\u query”的函数,该函数将一个由一个或多个单词组成的字符串作为输入,以便该函数返回文档摘要中单词的匹配文档列表。你知道吗
首先,我把所有的单词放在一个倒排索引中,id是文档的id,抽象是纯文本。你知道吗
inverted_index = defaultdict(set)
for (id, abstract) in Abstracts.items():
for term in preprocess(tokenize(abstract)):
inverted_index[term].add(id)
然后,我编写了一个查询函数,其中finals是所有匹配文档的列表。你知道吗
因为它应该只返回函数参数的每个字在文档中都匹配的文档,所以我使用了set操作“intersecton”。你知道吗
def and_query(tokens):
documents=set()
finals = []
terms = preprocess(tokenize(tokens))
for term in terms:
for i in inverted_index[term]:
documents.add(i)
for term in terms:
temporary_set= set()
for i in inverted_index[term]:
temporary_set.add(i)
finals.extend(documents.intersection(temporary_set))
return finals
def finals_print(finals):
for final in finals:
display_summary(final)
finals_print(and_query("netherlands vaccine trial"))
但是,函数似乎仍在返回文档摘要中只有一个单词的文档。你知道吗
有人知道我在集合操作上做错了什么吗??你知道吗
(我认为错误应该出现在代码的这一部分):
for term in terms:
temporary_set= set()
for i in inverted_index[term]:
temporary_set.add(i)
finals.extend(documents.intersection(temporary_set))
return finals
提前谢谢
简而言之,我想做的就是:
for word in words:
id_set_for_one_word= set()
for i in get_id_of that_word[word]:
id_set_for_one_word.add(i)
pseudo:
id_set_for_one_word intersection (id_set_of_other_words)
finals.extend( set of all intersections for all words)
然后我需要所有这些单词的id集的交集,返回一个集合,其中id是单词中每个单词的id。你知道吗
为了详细说明我的代码注释,这里是我以前为解决这类问题所做的工作的大致草稿。你知道吗
具有
min
个数documents
的term
始终保持result
。如果
term
在inverted_index
中不存在,则根本不提供匹配。你知道吗为简单起见,预定义数据:
用Python:3.4.2测试
最终我自己找到了解决办法。 更换
与
好像在这里工作。你知道吗
不过,谢谢你们的努力。你知道吗
相关问题 更多 >
编程相关推荐