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

Python 如何有效地检查相邻元素的特征,python,nltk,text-mining,Python,Nltk,Text Mining,我这里有一个文本,例如Lorem ipsum,让我们说我正在寻找一辆柴油发动机的汽车。Realtext大约有11000字。我正在使用Python3并查看nltk,但没有找到正确的想法 示例文本: 他说:“我的工作是在工作中完成的,我的工作是在工作中完成的,我的工作是在工作中完成的。”。在vero eos和accusam以及justo duo dolores和ea Reum。斯泰特·克莱塔·卡斯德·古伯格伦(Stet clita kasd gubergren),没有海洋保护区是属于同一领域的。Lo

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

示例文本:

他说:“我的工作是在工作中完成的,我的工作是在工作中完成的,我的工作是在工作中完成的。”。在vero eos和accusam以及justo duo dolores和ea Reum。斯泰特·克莱塔·卡斯德·古伯格伦(Stet clita kasd gubergren),没有海洋保护区是属于同一领域的。Lorem ipsum dolor我的旧车有一个很好的柴油发动机,安装在amet,Conseteteur sadipscing Eliter,sed diam nonumy eirmod Temporal invidunt ut Labor and dolore magna aliquyam erat,sed diam voluptua。在vero eos和accusam以及justo duo dolores和ea Reum。斯泰特·克莱塔·卡斯德·古伯格伦(Stet clita kasd gubergren),没有海洋保护区是属于同一领域的

问题:

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

更新1开始

我想找出文本中两个单词之间的距离。 在我的例子中,汽车和柴油机之间的距离是43个单词

更新1结束

到目前为止,我的想法是遍历单词列表,检查单词是否为car,然后检查当前单词前后的5个单词是否与diesel相同。在我的真实代码中,我做了一些模糊匹配,这样你就可以忽略像汽车这样的特殊情况

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    

使用反向索引。最简单的方法是通过全文搜索引擎。Sphinx,Lucene…好的,我会检查汽车和柴油的索引列表中是否有一些差值小于5的值?你说的“发现”是什么意思?你想要起始字符的索引吗?@MalikBrahimi抱歉,我不知道你的意思。我想找出文本中两个单词之间的距离。我认为倒排索引的想法解决了我的问题。在我的例子中,汽车和汽车之间的距离是4到3个单词diesel@AntonBobrov把你的答案贴出来,我会记下来的。
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