Для классного проекта у меня есть набор твитов, разделенных на три типа речи: ненависть, обычная речь и оскорбление. Моя цель состоит в том, чтобы в конечном итоге обучить классификатор прогнозировать правильный тип твита из данных.
У меня есть таблица данных в чистом формате (по одному слову в строке), содержащая оценку TF-IDF каждого слова. Я подверг цензуре оскорбительные выражения со звездочками:
> tfidf_words
# A tibble: 34,717 x 7
speech tweet_id word n tf idf tf_idf
<fct> <int> <chr> <int> <dbl> <dbl> <dbl>
1 hate 24282747 reason 1 0.25 5.69 1.42
2 hate 24282747 usd 1 0.25 8.73 2.18
3 hate 24282747 bunch 1 0.25 5.60 1.40
4 hate 24282747 ****** 1 0.25 5.21 1.30
5 hate 24284443 sand 1 0.5 4.76 2.38
6 hate 24284443 ****** 1 0.5 2.49 1.24
7 hate 24324552 madden 1 0.111 8.73 0.970
8 hate 24324552 call 1 0.111 4.11 0.456
9 hate 24324552 ****** 1 0.111 2.05 0.228
10 hate 24324552 set 1 0.111 5.90 0.655
# ... with 34,707 more rows
Чтобы ограничить размер пространства моих тренировочных функций, я хочу получить первые «n» уникальных слов каждого типа речи на основе их оценок TF-IDF.
My vocabulary
- это вектор всех уникальных слов, выбранных для моего пространства признаков, определяемый как vocabulary <- unique(feature_space$word)
В моей программе я использую SENTIMENT_SIZE
, чтобы определить, сколько слов каждого типа речи я хочу в своей модели.
Я пробовал оба варианта:
feature_space <- tfidf_words %>%
arrange(desc(tf_idf)) %>%
group_by(speech) %>%
slice(1:SENTIMENT_SIZE) %>%
ungroup() %>%
arrange(tweet_id)
и это:
feature_space <- tfidf_words %>%
group_by(speech) %>%
top_n(n = SENTIMENT_SIZE, wt = tf_idf) %>%
ungroup()
Они оба "своего рода" работают, но они оба не обрабатывают дубликаты так, как мне хотелось бы. Если, например, я установлю SENTIMENT_SIZE
равным 100, я бы хотел видеть 100 уникальных слов из каждого типа речи, выбранных в общей сложности для 300 слов.
Вместо этого у нас есть этот результат для метода 1:
> length(vocabulary)
[1] 248
И этот результат для метода 2:
> length(vocabulary)
[1] 293
Как я могу:
- Убедитесь, что в каждой речевой группе не выбраны повторяющиеся слова, и ...
- Убедитесь, что слова, выбранные в каждой группе, отличаются от слов в других группах?