Bir cümledeki negatif bağlamları işaretlemem gerekiyor. aşağıdaki gibi algoritma gider:Python'da belirli bir normal ifadeyle eşleşen metin nasıl değiştirilir?
- bir olumsuz kimse (değil/asla/değil/yapamaz/vs)
- bir madde biten noktalama Algılama Algılama (;:.!?)
- ekle _NEG bu arasındaki tüm kelimeleri.
Şimdi, tüm bu oluşumları ortaya çıkarmak için bir normal ifade tanımlamış:
def replacenegation(text):
match=re.search(r"((\b(never|no|nothing|nowhere|noone|none|not|havent|hasnt|hadnt|cant|couldnt|shouldnt|wont|wouldnt|dont|doesnt|didnt|isnt|arent|aint)\b)|\b\w+n't\b)((?![.:;!?]).)*[.:;!?\b]", text)
if match:
s=match.group()
print s
news=""
wlist=re.split(r"[.:;!? ]" , s)
wlist=wlist[1:]
print wlist
for w in wlist:
if w:
news=news+" "+w+"_NEG"
print news
Ben algılamak ve eşleştirilmiş grup yerini alabilir. Ancak, bu işlemden sonra tüm cümleyi nasıl yeniden oluşturacağımı bilmiyorum. Ayrıca birden fazla eşleşme için match.groups() bana yanlış çıktı verir.
Örneğin benim giriş cümlesi ise:
I don't like you at all; I should not let you know my happiest secret.
Çıktı olmalıdır:
I don't like_NEG you_NEG at_NEG all_NEG ; I should not let_NEG you_NEG know_NEG my_NEG happiest_NEG secret_NEG .
Bunu nasıl yapacağım?
Bu mükemmel çalışır! Noktalamalara gelince, metin üzerinde basit bir belirteci de kullanabilirim, çünkü yine de onları ve ifadeleri birbirinden ayırmam gerekecek. Teşekkürler! – Avijit