2016-10-16 4 views

Antwort

1

Ich würde empfehlen, die Stamm Entfernung in seine eigenen Funktion, Trennung und dann eine Liste Verständnis oder eine separate Funktion für die gesamte Liste. Hier ist eine Möglichkeit, es zu tun

def remove_stems(word, stems): 
    for stem in stems: 
     if word.endswith(stem): 
      return word[:-len(stem)] 
     else: 
      return word 

b_without_stems = [remove_stem(word, stems) for word in b] 
0

Sie müssen wissen, welche Ende gefunden hat, so müssen Sie sie einer nach dem anderen zu überprüfen, anstatt zu versuchen, sie alle auf einmal zu überprüfen. Sobald Sie ein Ende gefunden haben, können Sie es mit einem Stück abschneiden.

import re 
suffix = re.compile("(%s)$" % "|".join(y)) 

def stemming(): 
    for i, word in enumerate(b): 
     b[i] = suffix.sub("", word) 

Dann können Sie leicht tun, die ergeben mit einer Liste Verständnis:

b = [suffix.sub("", w) for w in b] 
1

vorausgesetzt, Sie wollen abzustreifen das erste Suffix

def stemming(): 
    for i, word in enumerate(b): 
     for suffix in y: 
      if word.endswith(suffix): 
       b[i] = word[:-len(suffix)] 
       break 

Ein besserer Ansatz einen regulären Ausdruck verwenden würde gefunden das wird es tun

def stemming(strings, endings): 
    for i, string in enumerate(strings): 
     for ending in endings: 
      if string.endswith(ending): 
       strings[i] = string[:-len(ending)] 
       continue 
Verwandte Themen