Список словаря скачать
- Первый шаг для вас - вручную загрузить (просто скопировать и вставить) список лексики по этой ссылке и сохранить его в формате .csv:
http://www.saifmohammad.com/WebDocs/NRC-AffectIntensity-Lexicon.txt
Затем вам нужно разбить этот список на 4 отдельные части, каждая часть должна иметь один эффект. В результате получится 4 файла .csv:
anger_list = w.csv
fear_list = x.csv
joy_list = y.csv
sad_list = z.csv
Если вы не хотите делать это вручную, существует альтернативный список лексики, где данные можно напрямую загрузить в отдельные файлы: https://www.cs.uic.edu/~liub/FBS/sentiment-analysis..html#lexicon.
Загрузка текстовых данных
- Другая ссылка, которой вы поделились (http://webrobots.io/Kickstarter-datasets/), теперь кажется иметь файлы JSON и csv, и чтение их в R кажется довольно простым.
Очистка URL для извлечения текста
- Я не уверен в столбце / поле, которое вы хотите анализировать; поскольку набор данных, который я загрузил по состоянию на февраль 2019 года, не имеет поля "p".
Поскольку вы упомянули наличие URL-адресов, я также делюсь кратким кодом для возможного редактирования или очистки URL-адресов. Это поможет вам получить чистые текстовые данные из URL-адресов:
replacePunctuation <- function(x)
{
# Lowercase all words for convenience
x <- tolower(x)
# Remove words with multiple consecutive digits in them (3 in this case)
x <- gsub("[a-zA-Z]*([0-9]{3,})[a-zA-Z0-9]* ?", " ", x)
# Remove extra punctuation
x <- gsub("[.]+[ ]"," ",x) # full stop
x <- gsub("[:]+[ ]"," ",x) # Colon
x <- gsub("[?]"," ",x) # Question Marks
x <- gsub("[!]"," ",x) # Exclamation Marks
x <- gsub("[;]"," ",x) # Semi colon
x <- gsub("[,]"," ",x) # Comma
x <- gsub("[']"," ",x) # Apostrophe
x <- gsub("[-]"," ",x) # Hyphen
x <- gsub("[#]"," ",x)
# Remove all newline characters
x <- gsub("[\r\n]", " ", x)
# Regex pattern for removing stop words
stop_pattern <- paste0("\\b(", paste0(stopwords("en"), collapse="|"), ")\\b")
x <- gsub(stop_pattern, " ", x)
# Replace whitespace longer than 1 space with a single space
x <- gsub(" {2,}", " ", x)
x
}
Код для добавления оценок к настроениям или аффектам
Далее, я предполагаю, что вы прочитали свои данные как текст в R. Допустим, вы сохранили их как часть некоторого фрейма данных df $ p. Следующим шагом будет добавление дополнительных столбцов в этот фрейм данных:
df$p # contains text of interest
Теперь добавьте дополнительные столбцы в этот фрейм данных для каждого из четырех эффектов.
df$ANGER = 0
df$FEAR = 0
df$JOY = 0
df$SADNESS = 0
Затем вы просто просматриваете каждую строку df, разбивая текст p на слова на основе пробелов. Затем вы ищете вхождение определенных терминов из вашего списка «Лексикон» в выделенные слова. Затем вы присваиваете баллы каждому аффекту, как показано ниже:
for (i in 1:nrow(df))
{
# counter initialization
angry = 0
feared = 0
joyful = 0
sad = 0
# for df, let's say the text 'p' is at first column place
words <- strsplit(df[i,1], " ")[[1]]
for (j in 1:length(words))
{
if (words[j] %in% anger_list[,1])
angry = angry + 1
else {
if (words[j] %in% fear_list[,1])
feared = feared + 1
else {
if (words[j] %in% joy_list[,1])
joyful = joyful + 1
else
sad = sad + 1
} #else 2
} #else 1
} #for 2
df[i,2] <- angry
df[i,3] <- feared
df[i,4] <- joyful
df[i,5] <- sad
}#for 1
Обратите внимание, что в приведенной выше реализации я предполагаю, что слово может представлять только один эффект за раз. Это означает, что я предполагаю, что эти аффекты исключают друг друга. Однако я понимаю, что для некоторых терминов в вашем тексте «p» это может быть неверно, поэтому вам следует изменить свой код, чтобы включить в него несколько влияний на термин.
person
Sandy
schedule
18.02.2019