簡體   English   中英

使用 Python 和 TextBlob 為情感分析設置 n-gram

[英]Setting n-grams for sentiment analysis with Python and TextBlob

我想用PythonTextBlob庫對一些句子進行情感分析。 我知道如何使用它,但是有沒有辦法將n-grams設置為它? 基本上,我不想逐字分析,但我想分析2個詞,3個詞,因為短語可以承載更多的含義和情感。

例如,這就是我所做的(它有效):

from textblob import TextBlob

my_string = "This product is very good, you should try it"

my_string = TextBlob(my_string)

sentiment = my_string.sentiment.polarity
subjectivity = my_string.sentiment.subjectivity

print(sentiment)
print(subjectivity)

但是我該如何申請,例如 n-grams = 2、n-grams = 3 等? 是否可以使用TextBlobVaderSentiment lib 來做到這VaderSentiment

這是一個無需使用任何庫即可找到 n-gram 的解決方案。

from textblob import TextBlob

def find_ngrams(n, input_sequence):
    # Split sentence into tokens.
    tokens = input_sequence.split()
    ngrams = []
    for i in range(len(tokens) - n + 1):
        # Take n consecutive tokens in array.
        ngram = tokens[i:i+n]
        # Concatenate array items into string.
        ngram = ' '.join(ngram)
        ngrams.append(ngram)

    return ngrams

if __name__ == '__main__':
    my_string = "This product is very good, you should try it"

    ngrams = find_ngrams(3, my_string)
    analysis = {}
    for ngram in ngrams:
        blob = TextBlob(ngram)
        print('Ngram: {}'.format(ngram))
        print('Polarity: {}'.format(blob.sentiment.polarity))
        print('Subjectivity: {}'.format(blob.sentiment.subjectivity))

要更改 ngram 長度,請更改函數find_ngrams()n值。

textblob 中沒有用於定義 n-gram 的參數,而不是用作情感分析特征的單詞/unigram。

Textblob 使用極性詞典來計算文本的整體情緒。 這個詞典包含unigrams,這意味着它只能給你一個詞的情感,而不能給你一個n>1的n-gram。

我想你可以通過將二元或三元輸入到情感分類器中來解決這個問題,就像你輸入一個句子然后創建一個包含累積情感值的 n-元字典一樣。 但我不確定這是個好主意。 我假設您正在尋找二元組來解決諸如否定( “不錯” )之類的問題,並且詞典方法將無法使用not將情緒值翻轉為bad

Textblob 還包含使用 naiveBayes 分類器而不是詞典方法的選項。 這是在 nltk 提供的電影評論語料庫上訓練的,但就我通過查看源代碼可以看出,訓練的默認特征是單詞/unigrams。 您可以在其中實現自己的特征提取器來提取 n-gram 而不是單詞,然后相應地重新訓練它並用於您的數據。

無論如何,我建議您使用 unigrams 和 n>1-grams 的組合作為特征,因為完全刪除 unigrams 可能會對您的表現產生負面影響。 Bigrams 分布更稀疏,因此在訓練時您會遇到數據稀疏問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM