Análisis de palabras y puntuación de un archivo python.

Estoy haciendo un análisis palabra por palabra de una oración como
"Oye, ¿esta es una excelente película?"

Tengo muchas oraciones como la de arriba. Tengo un archivo de conjunto de datos enorme como se muestra a continuación, donde tengo que hacer una búsqueda rápida si esa palabra existe. Si lo hace, entonces haga un análisis y guárdelo en un diccionario, como obtener la puntuación del archivo de la palabra, la puntuación de la última palabra de la oración, la primera palabra de la oración y así sucesivamente.

oración [i] => ¡Hola! Esta es una excelente pelicula ??? oración [0] = ¡Hey, oración [1] = allí !! oración [2] = Esto y así sucesivamente.

Aquí está el código:

def unigrams_nrc(file):
   for line in file:
       (term,score,numPos,numNeg) = re.split("\t", line.strip())
       if re.match(sentence[i],term.lower()):
          #presence or absence of unigrams of a target term
          wordanalysis["unigram"] = found
       else:
          found = False
       if found:
          wordanalysis["trail_unigram"] = found if re.match(sentence[(len(sentence)-1)],term.lower()) else not(found)
          wordanalysis["lead_unigram"] = found  if re.match(sentence[0],term.lower()) else not(found)
          wordanalysis["nonzero_sscore"] = float(score) if (float(score) != 0) else 0             
          wordanalysis["sscore>0"] = (float(score) > 0)
          wordanalysis["sscore"] = (float(score) != 0)

       if re.match(tweet[len(sentence)-1],term.lower()):
          wordanalysis["sscore !=0 last token"] = (float(score) != 0)

Aquí está el archivo (más de 4000 palabras en este archivo):

#fabulous   7.526   2301    2
#excellent  7.247   2612    3
#superb 7.199   1660    2
#perfection 7.099   3004    4
#terrific   6.922   629 1
#magnificent    6.672   490 1
#sensational    6.529   849 2
#heavenly   6.484   2841    7
#ideal  6.461   3172    8
#partytime  6.111   559 2
#excellence 5.875   1325    6
@thisisangel    5.858   217 1
#wonderful  5.727   3428    18
elegant 5.665   537 3
#perfect    5.572   3749    23
#fine   5.423   2389    17
excellence  5.416   279 2
#realestate 5.214   114 1
bicycles    5.205   113 1

Quería saber si hay una mejor manera de hacer lo anterior? Definiendo mejor manera: Más rápido, menos código y elegante. Soy nuevo en Python, así que sé que este no es el mejor código. Tengo alrededor de 4 archivos a través de los cuales tengo que revisar el puntaje, por lo que quiero implementar esta función de la mejor manera posible.

Respuestas a la pregunta(2)

Su respuesta a la pregunta