2016-04-12 29 views
0

Sentiment Analysis alanında bir kod yazmaya çalışıyorum. Kelimelerin, örneğin "iyi, 2" ve "kötü, -3" olarak derecelendirildiği bir sözlüğüm (.txt) var. Şimdi Python'un belirli bir cümlede pozitif ve negatifleri bir arada saymasını istiyorum. Benim kod parçacığı şöyle görünür: [5, -6]:for-loop işlevinde işlev ekleme

text ='' 

result = [] 
for sentence in sent_tokenize(text): 
    pos = 0 
    neg = 0 
    for word in word_tokenize(sentence): 
     score = Dictionary.get(word, 0) 
     if score > 0: 
      pos += score 
      if score < 0: 
       neg += score 
       result.append([pos, neg]) 

for s in result: print(s) 

print(result) 

Yani sonuç şöyle görünecektir isterim. Ancak boş bir sonuç elde ediyorum: []. Neyi yanlış yaptığım hakkında bir fikrin var mı?

+0

'sent_tokenize()' ve 'word_tokenize()' öğesini nerede tanımlıyorsunuz? – zondo

+0

Kodun başında, onu tanımladım: cümle = word_tokenize (''. Lower()) ve cümleler = sent_tokenize (''.. Alt()) – Tommy5

+0

Bu, işlevleri çağırmak değil, onları tanımlamak. – zondo

cevap

2

score aynı anda daha az ve sıfırdan büyük olamaz:

result = [] 
for sentence in sent_tokenize(text): 
    pos = 0 
    neg = 0 
    for word in word_tokenize(sentence): 
     score = Dictionary.get(word, 0) 
     if score > 0: 
      pos += score 
     if score < 0: 
      neg += score 
    result.append([pos, neg]) 

Not result.append([pos, neg]) ait girinti:

if score > 0: 
    pos += score 
    if score < 0: 
     neg += score 
     result.append([pos, neg]) 
için kodunuzu değiştirin

. Bu, her bir cümle için size yeni bir çifti pos, neg vermelidir.

+0

Tavsiyeniz için teşekkür ederiz ! Maalesef hala boş bir Çıktı alıyorum ... Başka bir şey değiştirmek zorunda mıyım? – Tommy5

+0

Sadece "sentez" ve "word" değerlerinin ne olduğunu görmek için bazı hata ayıklama baskıları ekleyin. Döngüleri gerçekten yaptığınızdan emin olun. ;) –

+0

Çalıştınız mı? –

İlgili konular