【发布时间】:2011-07-23 18:38:11
【问题描述】:
目标是能够尽快将文档中的单词与一组文档中的单词进行比较(创建术语-文档矩阵)。如果可能的话,这是否可以通过使用 Lucene 来完成(并且会很快)?
我的想法(如果由我完成的话)是在每个文档中创建一个术语树,然后将这些树组合在一起以形成集合。要创建树,我会使用嵌套字典,每个字典键都是一个字符。术语中的每个位置将是层次结构中的不同级别
职位
1
2
3
4
5
6
例如,使用示例字符串“这是一个测试”,树看起来像
t
h
i
s
e
s
t
i
s
a
请注意,第一级中的“t”只有一次。第一个字典将包含键 {'t','i','a'}。会有三个包含键 {'h'}{'e'}{'s'} 的二级字典。
这应该会使查找速度极快。循环中的最大步数将是最长单词中的字符数。让我的大脑自我折叠的部分是我如何动态构建这样的字典,特别是访问正确的级别
到目前为止,我有一些效果
def addTerm(self, term):
current_level = 0;
for character in list(term):
character = character.lower()
if re.match("[a-z]",character):
self.tree[character] = {}
current_level += 1
【问题讨论】:
-
这是否会引入文档中不存在的单词的可能性?如果“a”在顶层并且它可以在第二层访问“s”,那么即使“as”不在测试字符串中,也可以拼写单词“as”。
-
二级字典不是只有两个吗?不是 3 个?
标签: python dictionary matrix nested