Hallo!
Ich suche in einem Text, in jedem Satz ein Verb. Dies tue ich mittels eines regular Expression.
[Codebox=python file=Unbenannt.py]
liste=[]
for i in text:
v=re.findall(r'(([a-z]*/VBN)|([a-z]*/VB/I))
liste=(v[i)]
[/Codebox]
Soweit so gut! Jetzt gibt es aber Äußerungen in dem Text, die kein Verb beinhalten, wie bspw. "Oh Gott"
Ich möchte nun mittels einer if-Bedingung veranlassen, das in jedem Satz, in dem ken Verb existiert "NAN" in die liste eingetragen wird.
Mein Idee:
[Codebox=python file=Unbenannt.py]
if v not in i:
v="NAN"
[/Codebox]
Dies funktioniert allerdings nicht. Mir werden dann unter print(liste) nur die ersten drei "Einträge" ausgegeben, die dann
N
A
N
sind, da die ersten drei "i" keine Verben beinhalten...
Gibt es vielleicht eine festgelegte Regel, wie man re.findall bedingt??
Danke schon mal!LG
Gegenstück zu re.findall() , bzw. eine Möglichkeit dies zu bedingen
@Noranora: Es wäre nett wenn Du mal *funktionierenden* Quelltext zeigen könntest und nicht irgendwas zusammengeratenes was syntaktisch falsch ist und semantisch teilweise komisch aussieht. Also vielleicht Quelltext den Du tatsächlich ausführst. Sachen die man nachvollziehen kann. Wenn Du `print(liste)` schreibst und da drei Buchstaben untereinander geschrieben werden, dann war `liste` ganz offensichtlich keine Liste.
Du scheinst mir auch immer sehr viel Domänenwissen und Wissen darüber was für Daten Du da hast und welche Module Du benutzt, vorauszusetzen. Versetz Dich mal in die Lage von jemanden der Deine Daten nicht kennt, Dein Fachgebiet nicht kennt, nicht weiss welche Module Du verwendest, und keine Ahnung hat was der gezeigte reguläre Ausdruck mit dem finden von Verben zu tun haben könnte. Das ist dann wahrscheinlich die Lage von den allermeisten die hier diesen Beitrag lesen. Lies ihn unter der Voraussetzung mal selber und überlege was so jemand da wohl von verstehen mag.
Du scheinst mir auch immer sehr viel Domänenwissen und Wissen darüber was für Daten Du da hast und welche Module Du benutzt, vorauszusetzen. Versetz Dich mal in die Lage von jemanden der Deine Daten nicht kennt, Dein Fachgebiet nicht kennt, nicht weiss welche Module Du verwendest, und keine Ahnung hat was der gezeigte reguläre Ausdruck mit dem finden von Verben zu tun haben könnte. Das ist dann wahrscheinlich die Lage von den allermeisten die hier diesen Beitrag lesen. Lies ihn unter der Voraussetzung mal selber und überlege was so jemand da wohl von verstehen mag.
Hey! Okay, ich habe das jetzt auch nochmal ein bisschen umgestellt.
ich möchte nun versuchen, falls ein verb in dem Satz ist, dieses einer Liste zuzuteilen, zusammen mit dem Adjektiv. Versucht habe ich das mit der if-Bedingung "if verbs in i" , i ist ein Satz, da ich den Text mit nltk geparst habe und der Text jetzt nicht mehr einem einzelnen String entspricht, sondern ich habe eine Liste, bei der jedes Element einen Satz darstellt.
Die regulären Ausdrücke wie schon oben kommentiert passen, ein Verb sieht bei mir wie das folgende Beispiel aus:
vorstellen/VB/I-VP/O
die if-Bedingung zu scheint jedoch keine Wirkung zu haben.
ich möchte nun versuchen, falls ein verb in dem Satz ist, dieses einer Liste zuzuteilen, zusammen mit dem Adjektiv. Versucht habe ich das mit der if-Bedingung "if verbs in i" , i ist ein Satz, da ich den Text mit nltk geparst habe und der Text jetzt nicht mehr einem einzelnen String entspricht, sondern ich habe eine Liste, bei der jedes Element einen Satz darstellt.
Code: Alles auswählen
for i in text:
zaehlvar=len(i)
zaehlvar2=int(0)
while zaehlvar2<zaehlvar:
verbs=re.findall(r'([a-z]*/VBN|[a-z]*/VB/I)', str(text)) #die regulären Ausdrücke passen! Da ich die nomen und verben mit nltk bearbeitet habe
adj=re.findall(r'(\s[a-z]*/NN/I-NP/I-PNP)',str(text)) #findet alle Adjektive ---> aber es gibt nicht in jedem Satz ein Adjektiv!!!
#zaehlvar2=zaehlvar2+1
if verbs in i:
list=(adj[zaehlvar2],verbs[zaehlvar2])
print (list)
durchzaehlen=durchzaehlen+1
vorstellen/VB/I-VP/O
die if-Bedingung zu scheint jedoch keine Wirkung zu haben.
@Noranora: in dem Du anfängst, die Dokumentation zu lesen.