2016-04-20 2 views
1

Когда при обработке текста с использованием R после обработки текстовых данных нам нужно создать матрицу документов для дальнейшего изучения. Но в отличие от китайского, английский также имеет некоторые определенные этапы, такие как «семантическое расстояние», «машинное обучение», если вы отделяете их на слово, оно имеет совершенно разные значения, я хочу знать, как сопоставлять заранее определенные словари, чьи значения состоят из разделенных пробелом пространств, таких как «семантическое расстояние», «машинное обучение». если в документе «мы можем использовать метод машинного обучения для вычисления семантического расстояния слов», при применении этого документа в словаре [«семантическое расстояние», «машинное обучение»] он вернет матрицу 1x2: [семантическое расстояние, 1 машинное обучение, 1]R матрица терминов документа конструкции, как совместить словари, значения которых состоят из разделенных пробелом фраз.

ответ

2

Это возможно сделать с помощью кванты, хотя для этого требуется построение словаря для каждой фразы, а затем предварительная обработка текста для преобразования фраз в токены. Чтобы стать «маркером», фразы должны быть соединены чем-то другим, кроме пробелов - здесь, «_».

Вот несколько примеров текстов, в том числе фраза в OP. Я добавил два дополнительных текста для иллюстрации - ниже, первая строка матрицы признаков документа создает запрошенный ответ.

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"   "."  

Наконец, можно построить матрицу документа функции, сохраняя все фразы, используя «Глобы» поиск по шаблону по умолчанию для любой функции, которая включает в себя символ подчеркивания:

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 

(ответы обновленный для> = v0.9.9)

+1

Это работает, спасибо –

+0

Но если в словаре есть ключ с шаблоном регулярного выражения, то «phrasetotoken» не работает –

+0

Это, к сожалению. Но он будет работать, когда я добавлю поддержку значений словаря многословного словаря. –