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

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

Exampletext:

Lorem ipsum dolor sit amet,consetetur sadipscing elitr,sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,sed diam voluptua。 在vero eos et accusam et justo duo dolores et ea rebum。 Stet clita kasd gubergren,没有海takimata sanctus est洛雷姆ipsum dolor坐amet。 Lorem ipsum dolor 我的旧车有一个很好的柴油发动机坐在amet,consetetur sadipscing elitr,sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,sed diam voluptua。 在vero eos et accusam et justo duo dolores et ea rebum。 Stet clita kasd gubergren,没有海takimata sanctus est洛雷姆ipsum dolor坐amet。

题:

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

Update1开始

我想找到文本中两个单词之间的距离(其他单词)。 在我的例子中,距离是4(汽车和柴油之间有3个字)

Update1结束

到目前为止,我的想法是迭代单词列表并检查单词是否是汽车,然后检查当前单词之前和之后的5个单词是否与柴油相同。 在我的真实代码中,我做了一些模糊匹配,因此您可以忽略像“汽车”这样的特殊情况。

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
链接地址: http://www.djcxy.com/p/55103.html

上一篇: How to efficiently check neighbor elements for characteristic

下一篇: Text extraction from email in Python