2013-03-10 61 views
10

標題說明了一切;我有一個SQL數據庫用線上對話文本在接縫處爆裂。我已經使用Python完成了這個項目的大部分工作,所以我想用Python的NLTK庫來完成這個工作(除非有一個強的原因)。LARGE在線對話文本集的情感分析

的數據由主題用戶名,並組織。每條線索或多或少都着重討論我感興趣分析的一類「產品」。最終,當這些完成時,我希望每個用戶對他們在某個時候討論過的任何產品有一個估計的意見(喜歡/不喜歡某種交易)。

所以,我想知道:

1)我如何去確定每一個線程是什麼產品?我正在閱讀關於關鍵字提取...是正確的方法?

2)如何根據他們的帖子確定特定的用戶情緒?從我有限的理解中,我必須首先「訓練」NLTK來識別某些意見指標,然後我才簡單地確定這些詞語出現在文本中的上下文嗎?你可能已經猜到了,我沒有使用過NLP的經驗。從我讀到目前爲止,我認爲我可以處理它。如果有人能夠指引我朝着正確的方向發展,那麼即使只是現在的基本和粗略的工作模式也會很好。谷歌對我不是很有幫助。

P.S.我有權分析此數據(如果它很重要)

+0

你有沒有標籤的數據? – placeybordeaux 2013-03-10 19:48:28

+0

不,就是這樣。我一直在儘自己所能做到這一點......標記數據聽起來像是一個非常耗時/麻煩的麻煩任務。是否絕對需要衡量情緒?如果是這樣,我會考慮也許把它放在Mechanical Turk或類似的東西上...... – araisbec 2013-03-10 20:01:29

+0

我知道的所有學習算法都要求您有一個訓練數據集,您可以使用它來構建模型。然後你可以在未標記的數據上釋放它。 – BenDundee 2013-03-10 22:12:51

回答

5

培訓的分類需要訓練集標記數據和特徵提取獲得功能可設置每個文本。在獲得訓練好的分類器後,可以將其應用於以前未見過的文本(未標記),並根據所使用的機器學習算法獲取分類。 NLTK gives a good explanation and some samples to play around with

如果您有興趣使用自己的訓練數據集構建正面/負面情緒的分類器,我會避免簡單的關鍵字計數,如they aren't accurate for a number of reasons(例如,否定正面詞語:「不快樂」)。另一種方法是,如果您仍然可以使用大型訓練集而無需手動標記任何東西,則可以使用遠程監控。基本上,該方法使用表情符號或其他特定文本元素作爲嘈雜標籤。您仍然必須選擇哪些功能是相關的,但許多研究僅使用unigramsbigrams(分別爲單個單詞或單詞對)已獲得良好結果。

所有這些都可以通過Python和NLTK輕鬆完成。你也可以選擇使用像NLTK-trainer這樣的工具,它是NLTK的包裝,並且需要更少的代碼。

我認爲this study由Go等。是最容易理解的之一。您還可以閱讀distant supervisiondistant supervision sentiment analysissentiment analysis的其他研究。

有在NLTK一些內置的分類與培訓和分類方法(Naive BayesMaxEnt等),但如果你有興趣使用支持向量機(SVM),那麼你應該看看其他地方。技術上NLTK爲您提供了一個SVM class,但它只是PySVMLight的一個包裝,它本身是用C編寫的SVMLight的包裝。儘管如此,我仍然有許多問題,並且建議使用LIBSVM

對於確定主題,許多人使用簡單的關鍵字,但也有一些更復雜的方法可用。

+0

有一個問題,你會得到最好的答案,關於頻率計數的例子。 「不開心」。難道我不能編寫一個算法來獨立分析每個句子,計算關鍵詞,然後通過考慮上下文進行分析,然後從那裏進行分析?例如,說句子包括「對我的產品名稱不滿意」。難道我不能寫一些會注意到「快樂」被否定的「不」,並且關於「產品」?我知道NLTK可以將句子分解成動詞和名詞,這樣不行嗎?那麼是否有可能從這個角度來攻擊這個問題呢? – araisbec 2013-03-20 13:17:48

+0

@araibec是的,但在試圖做到這一點時存在很多隱藏的複雜性。你可以使用否定詞和情感詞詞典,但是,如果考慮到在句子中出現否定詞意味着情感詞是相反的,會發生什麼情況,「我對我的iPhone很滿意,但我的朋友是不。」這說明目前大多數研究都選擇使用機器學習等關鍵詞方法。它的設置也不難。 – Jared 2013-03-20 17:48:33

+0

有道理。另外,機器學習可以實現自我優化。感謝你的回答! – araisbec 2013-03-20 20:04:39

3

您可以使用類似的數據集來訓練任何分類器,並在將數據應用於數據時查看結果。例如,NLTK包含電影評論語料庫,其中包含1000個正面評論和1000個負面評論。 Here is an example on how to train a Naive Bayes Classifier with it。其他一些評論數據集,如亞馬遜產品評論數據,可以從here獲得。

另一種可能性是獲取正面和負面詞彙的列表,例如this one並計算它們在您的數據集中的頻率。如果你想要一個完整的列表,請使用SentiWordNet