我有一组关键字,大约有10个。我想在一个很长的文档中进行搜索,并检查是否可以在其中找到一组关键字,但不仅可以找到它们在文本中的存在或存在,还可以找到全部/某些关键字。它们中的一个或它们的子集位于例如3个句子或30个单词或任何其他邻近度的距离截止点处。一个人该怎么做?我刚刚想到编写一些可以找到其中一个关键字的python代码,然后检查其他任何关键字是否在3行文字左右。但这将需要大量的计算能力,并且效率低下。
最佳答案
解决此问题的建议是创建一个(Hash)Map,输入每个单词作为键,然后将单词的位置作为值添加到列表(即Map中的值)中。
对于文本,快速的棕色狐狸跳过了懒狗,这将导致一个模型,如下所示(以json格式)。
备注:这里所有单词都添加到索引中,就好像它们是小写字母一样。
{
"document": [
{
"key": "the",
"value": [
{
"location": 1
},
{
"location": 7
}
]
},
{
"key": "quick",
"value": [
{
"location": 2
}
]
},
{
"key": "brown",
"value": [
{
"location": 3
}
]
},
{
"key": "fox",
"value": [
{
"location": 4
}
]
},
{
"key": "jumps",
"value": [
{
"location": 5
}
]
},
{
"key": "over",
"value": [
{
"location": 6
}
]
},
{
"key": "lazy",
"value": [
{
"location": 8
}
]
},
{
"key": "dog",
"value": [
{
"location": 9
}
]
}
]
}
一旦建立了索引,就很容易看出不同单词之间的距离。如单词“ the”所示,它位于位置1和7。
同样,通过给出单词的位置数量,可以很容易地获得单词在文本中显示的次数。
提示:添加其他位置信息,例如哪章/节/页等。