如何有效地检查相邻元素的特征

How to efficiently check neighbor elements for characteristic

我这里有一个文本,例如 Lorem ipsum 可以说我正在寻找带有柴油发动机的汽车。 Realtext 约 11000 字。我正在使用 Python3 并查看了 nltk,但没有找到正确的想法。

示例文本:

事实是痛苦本身很重要,它由悲伤的精英解决,但他们当时非常羡慕 diam nonumy,以至于它对一些有劳动和痛苦的人来说很棒,但 diam 性感。但事实上,我会指责他们,只要两次痛苦,我就会收回他们。 Stet clita kasd gubergren,没有海takimata是神圣的。痛苦本身我的旧车有一个很好的柴油发动机很多,它会解决sadipscing elitr,但是diam nonumy eirmod eimodo当时它是伟大的工作和痛苦,但是迪亚姆·沃尔普图亚。但事实上,我会指责他们,只要两次痛苦,我就会收回他们。 Stet clita kasd gubergren,没有海takimata是神圣的。

问题:

我该如何有效地做到这一点? 你能告诉我一些文本挖掘算法以供进一步研究吗,例如,如果我想搜索多个关键字。

Update1 开始

我想找出文本中两个词之间的距离(换句话说)。 在我的示例中,距离是 4(car 和 diesel 之间的 3 个词)

更新 1 结束

到目前为止,我的想法是遍历单词列表并检查单词是否是汽车,然后我检查当前单词之前和之后的 5 个单词是否与柴油相同。在我的真实代码中,我做了一些模糊匹配,所以你可以忽略像 "car."

这样的特殊情况
near = 5
textLines = text.splitlines()
words = []
for line in textLines:
    wordlist = line.split(' ')
    for word in wordlist:    
            words.append(word)

for idx, val in enumerate(words):
    if word is 'car': 
        print (idx, val)
        print ("near words")
        for x in range(1,near+1):
            print(words[idx-x])
            # check for diesel
        print("after")
        for x in range(1,near+1):
            print(words[idx+x])
            # check for diesel    
from collections import defaultdict
from nltk import word_tokenize
import math

text = """Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor my old car has a nice diesel engine sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."""

word_index = defaultdict(list)

for i,word in enumerate(word_tokenize(text)):
    word_index[word].append(i)

# First occurence of 'car'
car = word_index['car'][0]
# Indices of 'diesel'
diesel = word_index['diesel']

nearest_diesel = min(diesel, key=lambda x:abs(x-car))

distance = math.fabs(car - nearest_diesel)

print distance