Рассчитать настроение текстового обзора, используя специальную обученную словари, содержащую n-грамм - PullRequest
0 голосов
/ 20 марта 2020

Цель: Я хочу рассчитать настроения для узкоспециализированных обзоров, используя специально обученный словарь настроений.

Шаги: 1. Обучить словарь настроений (Готово) 2. Используйте словарь для расчета настроения отзыва (Stuck)

Справочная информация: У меня есть df с 10M + строками, который содержит все отзывы, по одному на строка. Средний обзор составляет около 8 предложений, некоторые могут быть короткими, как одно или два предложения. В нем также есть двоичный столбец «рекомендовать», который я использовал для обучения словаря. Прежде чем предсказать прохождение или неудачу, я хочу увидеть число, чтобы понять место обзора в распределении результатов. (это верхний 10 процентиль? это нижний 50 процентиль? et c.)

Проблема: в словаре много биграмм и несколько триграмм. Как мне получить код для вычисления биграммы как биграммы вместо двух униграмм? Кроме того, после того, как биграмма рассчитана, я не хочу пересчитывать две униграммы, используемые биграммой. Мои знания алгоритма и Python могут справиться только с «исключающей униграммой» ситуацией.

# Create dictionary from tfidf's feature name and logistic regression's coefficient value
feature_to_coef = {
    word: coef for word, coef in zip(
        tfidf_vectorizer.get_feature_names(), lr.coef_[0] # <- Here, get_feature_names will get me bi- and tri-grams.
    )
}

# Attempt to calculate sentiment
sent=[]
for text in df.CleanText:
    value=0
    for word in text.split(): # <- I am going to assume there is a better way to split the text to achieve what I want
        try:
            value += feature_to_coef[word]
        except:
            value += 0
    sent.append(value)
df['Sentiment'] = sent

Мои мысли: Поскольку я использую регрессию logisti c для соответствия модели, один go способ решить эту проблему - использовать lr.predict_proba. Тем не менее, я хотел бы знать, есть ли способ напрямую решить проблему.

Я активно учусь, любые советы, которые могут помочь с подобными проблемами, очень ценятся! (даже если это не полностью решит эту конкретную проблему)

Спасибо за ваше время!

...