我有一组关键字,大约有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。

同样,通过给出单词的位置数量,可以很容易地获得单词在文本中显示的次数。

提示:添加其他位置信息,例如哪章/节/页等。

10-05 23:07
查看更多