Цель: Я хочу рассчитать настроения для узкоспециализированных обзоров, используя специально обученный словарь настроений.
Шаги: 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. Тем не менее, я хотел бы знать, есть ли способ напрямую решить проблему.
Я активно учусь, любые советы, которые могут помочь с подобными проблемами, очень ценятся! (даже если это не полностью решит эту конкретную проблему)
Спасибо за ваше время!