При интеллектуальном анализе текста с использованием R после повторной обработки текстовых данных нам необходимо создать матрицу терминов документа для дальнейшего изучения. Но, как и в китайском, в английском также есть некоторые определенные фазы, такие как «семантическая дистанция», «машинное обучение», если вы разделите их на слова, они будут иметь совершенно разные значения, я хочу знать, как сопоставить заранее определенные словари, чьи значения состоят из терминов, разделенных пробелами, например, содержат «семантическое расстояние», «машинное обучение». если документ «мы могли бы использовать метод машинного обучения для вычисления семантического расстояния слов», при применении этого документа к словарю [«семантическое расстояние», «машинное обучение»] он вернет матрицу 1x2: [семантическое расстояние, 1 ;машинное обучение,1]
R построить матрицу терминов документа, как сопоставить словари, значения которых состоят из фраз, разделенных пробелами
Ответы (1)
Это можно сделать с помощью Quanteda, хотя для этого требуется создание словаря для каждой фразы, а затем предварительная обработка текста для преобразования фраз в токены. Чтобы стать «токеном», фразы должны быть соединены чем-то другим, кроме пробела — здесь символом «_
».
Вот несколько примеров текстов, включая фразу в ОП. Я добавил два дополнительных текста для иллюстрации — ниже первая строка матрицы характеристик документа дает запрошенный ответ.
txt <- c("We could use machine learning method to calculate the words semantic distance.",
"Machine learning is the best sort of learning.",
"The distance between semantic distance and machine learning is machine driven.")
Текущая подпись для фразы в токен требует, чтобы аргумент phrases
был словарем или объектом словосочетаний. Здесь мы сделаем это словарем:
mydict <- dictionary(list(machine_learning = "machine learning",
semantic_distance = "semantic distance"))
Затем мы предварительно обрабатываем текст, чтобы преобразовать словарные фразы в их ключи:
toks <- tokens(txt) %>%
tokens_compound(mydict)
toks
# tokens from 3 documents.
# text1 :
# [1] "We" "could" "use" "machine_learning"
# [5] "method" "to" "calculate" "the"
# [9] "words" "semantic_distance" "."
#
# text2 :
# [1] "Machine_learning" "is" "the" "best"
# [5] "sort" "of" "learning" "."
#
# text3 :
# [1] "The" "distance" "between" "semantic_distance"
# [5] "and" "machine_learning" "is" "machine"
# [9] "driven" "."
Наконец, мы можем построить матрицу характеристик документа, сохраняя соответствие всех фраз, использующих шаблон "glob" по умолчанию, для любой функции, включающей символ подчеркивания:
mydfm <- dfm(toks, select = "*_*")
mydfm
## Document-feature matrix of: 3 documents, 2 features.
## 3 x 2 sparse Matrix of class "dfm"
## features
## docs machine_learning semantic_distance
## text1 1 1
## text2 1 0
## text3 1 1
(Ответ обновлен для версии >= 0.9.9)
mydict
, которые представляют собой фразы из двух слов. Вот почему мы преобразовали фразы из двух слов в одно слово, состоящее из слов-элементов, соединенных _
, а затем вызвали dfm(txtPhrases, keptFeatures = "*_*")
, чтобы выбрать только эти слова для DFM.
- person Ken Benoit; 25.04.2016