2016-06-02 27 views
-1

das ist mein Programm von LSA, in dieser Funktion möchte ich meinen gesamten Text in Tokens umwandeln und ihn dann in Stamm konvertieren. Ich versuche, sie Programm ergeben zu integrieren und ich bekomme dann das: für Wort in titles.split (“„): Attribute: ‚list‘ Objekt hat kein Attribut ‚split‘Python 2: AttributeError: 'list' Objekt hat kein Attribut 'split'

diesen Code lsa:

# -*- coding: utf-8 -*- 

from numpy import zeros 
from scipy.linalg import svd 
from math import log 
from numpy import asarray, sum 
#from nltk.corpus import stopwords 
from sklearn.metrics.pairwise import cosine_similarity 
#from nltk.stem import PorterStemmer 
#from nltk.stem.isri import ISRIStemmer 
import nltk 
#from matplotlib import pyplot as plt 
from snowballstemmer import stemmer 


titles = [" ذهبت الاخت الى المدرسة","تقع المدرسة في الجبال", 
    "ذهب الام لزيارة ابنتها في المدرسة ","تحضر الام الكعكة" ] 

ar_stemmer = stemmer("arabic") 

stopwords = ['ثم','و','حتى','الى','على','في'] 

ignorechars = ''',:'!''' 



class LSA(object): 
def __init__(self, stopwords, ignorechars): 
    self.stopwords = stopwords 
    self.ignorechars = ignorechars 
    self.wdict = {} 
    self.dcount = 0  


def parse(self, doc): 

    for word in titles.split(" "): 
      stem = ar_stemmer.stemWord(word) 

    if stem in self.stopwords: 
     pass 
    elif stem in self.wdict: 
      self.wdict[stem].append(self.dcount) 
    else: 
      self.wdict[stem] = [self.dcount] 
      self.dcount += 1 

und das ist, was ich integrieren wollen:

from snowballstemmer import stemmer 
ar_stemmer = stemmer("arabic") 
sentence = u" ذهبت الاخت الى المدرسة, تقع المدرسة في الجبال" 

for word in sentence.split(" "): 
stem = ar_stemmer.stemWord(word) 
print stem 

Antwort

2

titles ist bereits eine Liste; tun Sie stattdessen:

for sentence in titles: 
    for word in sentence.split(" "): 
     ... 
+0

Ich kann es nicht tun, weil ich auf meinem Programm nicht Satz haben LSA Ich habe Titel – YayaYaya

2

Liste Objekte haben keine split Methode wie Strings tun. Wenn Sie möchten, jede Zeichenfolge teilen, die Sie in einer titles Liste haben, nisten könnten Sie eine Schleife und etwas zu tun, wie folgt aus:

def parse(self, doc): 

    for title in titles: 
     for word in title.split(): 
      stem = ar_stemmer.stemWord(word) 

      if stem in self.stopwords: 
       pass 
    ... 
+0

Ich bekomme das: für Titel in Titeln: UnboundLocalError: lokale Variable 'Titel' referenziert vor Zuordnung – YayaYaya

+0

@ YayaYaya ist, weil Ihre Variable 'Titel' im Hauptbereich deklariert ist, so gibt es eine andere Variable' Titel 'innerhalb der' LSA'-Klasse, die nicht definiert ist. Um dies zu lösen, kopieren Sie die Variable 'titles' und was Sie ihr zugewiesen haben innerhalb der 'LSA'-Klasse – Leva7