2017-09-03 25 views
0

我有一個詞彙詞典在這種形狀如何將一個詞典應用於句子列表?

6 ابن جزمه 1 
7 ابو جهل -1 
8 اتق الله -1 
9 اتقو الله 1 

我想創建一個包含基於詞典添加每個單詞的得分每個句子的得分一個新的列表,如果沒有的話存在追加零 當我實現我的代碼,我得到len(lex_score) = 3679後,我加入elif的條件下,我得到len(lex_score) = 95079

的LEN(lex_score)應該等於6064

lex_score = [] 
def lexic(text): 
    for tweet in sentences: 
     score = 0 
     for word in tweet.split(): 
      if word in lexicon: 
       score = score+lexicon[word] 
      elif word not in lexicon: 
       score = 0 
       lex_score.append(score) 

我想在包含每個句子分數的數據框中創建一個新列。我究竟做錯了什麼? 有沒有更好的方法來做到這一點?

+0

你可以用python格式顯示你的'lexicon'字典嗎?另外,請展示更多代碼。例如。給出一個「句子」的例子。 – Bill

+0

請注意,如果沒有其他可能的結果,您可以用else替換'elif'條件。 – Bill

回答

1

IIUC,您可以對每條推文中的有效詞典條目分數求和,然後在sentences的每次迭代中將該分數附加到lex_score

注:我假設text == sentences - 否則有一個缺失的行,其中text分解爲sentences。無論哪種方式,這種基本的方法仍應該工作:

def lexic(text): 
    lex_score = [] 
    for tweet in text: # assuming sentences == text 
     score = sum([lexicon[word] for word in tweet.split() if word in lexicon]) 
     lex_score.append(score) 
    return lex_score 
+0

非常感謝它的工作。任何想法如果我有另一個帶有否定詞的列表,我該如何處理該詞典? –

+0

不客氣!我不確定我是否理解你的否定詞語問題,如果可以的話,樂意提供幫助。如果與原來的問題不同,請考慮另外提出一個問題。如果此答案解決了您的原始問題,請通過單擊答案左側的複選標記將其標記爲已接受。 –

+0

我有一個否定詞的列表,我擔心他們會影響詞彙的詞,所以我想把它在我的考慮。我怎麼能這樣做? –

相關問題