2014-09-28 29 views
2

我有這樣的代碼,它應該將單詞的正面語料與主題文本進行比較。它一直很好,直到我發現重複的文本不被考慮。Python情緒分析(當比較單詞時,文本中的重複單詞不計算在內)

文字:這是一個非常好的電影,它是那麼好

肯定列表:好,更好等。

只有在下列實施計「好」一旦腳本:

readFile = open('test.txt','r').read() 
    readFileList = readFile.split('\n') 

    counter = 0 


    for eachNeg in negWords: 
      if eachNeg in readFile: 
        counter -= 1 
        print eachNeg 
    print counter 


    for eachPos in posWords: 
      if eachPos in readFile: 
        counter +=1 
        print eachPos 
    print counter 

回答

0

如果在posWordsnegWords一個字包含在整個文件要檢查。 這就是爲什麼你只能得到1每個不同的單詞。

你想要做的是循環遍歷文件中的所有單詞,看它們是否包含在好/壞列表中。

要從文件中獲取單詞列表,您可以使用split()而不帶任何參數。

所以對於消極的話就應該是這樣的:

readFile = open('test.txt','r').read() 
readFileList = readFile.split() 

counter = 0 


for word in readFileList: 
     if word in negWords: 
       counter -= 1 
       print word 
print counter 
+0

這都給downvote的人可以建議我的答案的修正? – 2014-10-10 20:47:54

1

的代碼不正是你的描述。你告訴蟒蛇1添加到計數器,如果這個詞是在文本像:

a in [aaaabbbbccc] 
>> True 

您需要另一個for循環計算每一個字:

for eachPos in posWords: 
    for word in readFile: 
     if eachPos == word: 
      counter +=1 
      print eachPos 
print counter 

蔭不是100%肯定,如果你可以迭代readFile,但iam positiv你可以或至少可以找到一種方法,使其到列表作爲 Bartlomiej Lewandow提到使用readfile.split()。這是一個非常幼稚的做法。

我認爲還有另一個aproch,你先計算單詞,然後看看它們是否在你的列表中。對於收藏和計數器來說,這對你的項目來說是驚人的!

https://stackoverflow.com/a/5829377/3863636

1

你可以用嵌套for loop做到這一點,但是這並不是一個很好的解決方案,以一個簡單的問題:

for posWord in posWords: 
    for test in readFile: 
     if i == test: 
      counter +=1 
      print i 
print(counter) 

這不是對分析情感的有效途徑,而你只是檢查一個沒有上下文正面的文字是否存在於文本或沒有告訴你很多。你接近這個任務的方式忽略了常見的語義,這些語義使他們進入每天的語言,如雙重否定,迴文等等。此外,它看起來並不像你正在濾除文字或詞幹中的停用詞。見Stemming Algorithms

情緒分析應該是統計的產物。基於結構的方法並不像語義實現那樣有用 - 然而,這可能是辯論(可能)。此外,一種監督式學習方法[binary or multiclass]將文本分類爲預定義類別,例如正面或負面。一種典型的情感分析方法是實現樸素貝葉斯框架,儘管已經提出了更有效/強大的方法(支持向量機,隱馬爾可夫模型等)。見顯着的資源2.

最後說明

雖然我並不真的情感分析工作,除非我試圖讓我的生活更容易或讚美的東西我已經在做,我做研究自然語言處理中的幾個主題。我堅信學術領域遠遠超過了商業領域的努力,事實上,公司產生的一些結果/結論/價格是歇斯底里的 - 我仍然會遇到體面的實施。我建議如果您想了解關於此領域的更多信息,請閱讀IEEE & ACM中發佈的學術期刊。

值得注意的資源:

  1. 的Python NLTK - Natural Language Tool Kit
  2. Twitter Sentiment Analysis using Python & NLTK
  3. Sentiment Analysis & Opinion Mining
相關問題